有一段时间没有更新博客了。趁着国庆长假给博客弄了个文章目录插件。经过一番折腾,最终选择了wp-content-index这个插件,小伙伴们可以直接在WP后台的插件安装页面搜索到。这是一个非常棒的插件,只需要经过简单的设置就可以满足绝大多数的用户的需要。因为日后打算重做主题,所以暂时没有做合并CSS文件等更多的优化。顺便提一下,水煮鱼的Toc插件也是相当不错滴。
问题描述:排版错位
我在在安装完插件以后简单修改了一下样式,使她看起来更适合我当前的主题,然后就写了一篇包含各种标题的文章测试了下。一测试问题就来了:如果文章以<H1~6>(HTML标记)开头,则文章的正文就会掉到“文章目录”索引框的下方。见图:
图2:
但是以其他内容开头则可以很好的展示“文章目录”选框的float:right;属性。于是我开始各种查找是哪个属性引起的问题,从DIV的属性找到H的属性,再找到CSS的格式化代码。由于对CSS不是很熟,找了两三个小时也没找到问题的所在。我相信肯定是CSS的问题,但就是找不到哪个该死的属性。于是决定约朋友出去玩一趟放松一下回来再整。文章挂起…
出去玩了一通,边玩边理清了一下思路。回来以后…
解决方法:找出原因
我用Dreamweaver新建了一个HTML文档,在文档中创建一个300*300的DIV块并设置背景色#DDD,float:right,在这个DIV的后面放了一个<h1>…</h1>的一级标题标题。然后打开出问题的网页用浏览器的F12调试工具把<H1>标签的CSS样式一条一条往Dreamweaver里面的文档中加,再开“实时预览”功能查看页面的变化。最终发现是
h1,h2,h3,h4,h5,h6{
clear:both
}
这段代码引起的。这是主题的CSS文件中定义的。的确,clear:both可以清除float属性对自身的影响,到这时才恍然大悟。注释掉CSS文件中的这段代码,问题成功解决。上图:
引申的问题:如何重定义clear属性
虽然问题解决了,但我仍然有一个疑问:假设我们想让绝大多数h1~h6都清除浮动属性,就会在CSS开头给h1到h6设置clear:both,现在我们遇到某个具体的H标题,不想让他保留Clear属性,该怎么做呢?或者简单点说已经定义了该属性的元素如何通过设置清除clear:both属性。还望高手指教。
Ps:刚刚在Dreamweaver中看到clear共有5个属性:
left:在左侧不允许浮动元素。
right:在右侧不允许浮动元素。
both:在左右两侧均不允许浮动元素。
none:默认值,允许浮动元素出现在两侧。
inherit:规定应该从父元素继承 clear 属性的值。
另外,该属性还支持 !important (权重最高的)。
从上面看来貌似我们可以通过:
h1,h2,h3,h4,h5,h6{clear:none !important;}
来重新定义clear属性,不过我没试过,只是猜测而已。望知道的同学给个答案。