头痛的css(div)布局
我所用的主题fstos在制作和测试阶段都用的ie6,因为是参照wordpress自带的几个主题写的,当时没有考虑css的兼容性问题,犯了“大跃进”错误(用firefox浏览简直是惨不忍睹),但由于工作很忙也没有时间修理它。这两天抽了些时间好好对他来了个大清理,出顺便将我遇到的主要问题总结一下,希望对大家有所帮助。
问题现象:ie中显示正常,firefox中却支离破碎。可大致总结为:有的本来居中的没有居中;本来在最下面的跑到上面来了;本来在一侧的结果到了别处;有的在100px处,可看起来像在105px(举例而已)处;同在一个父层中的两个子层,一个内容多些从高度上来说自然拉伸,但另一个子层却不跟着拉伸;一串英文过长超出了原设定的边界。接下来一个一个说:
1、本来居中的没有居中
在ie中显示是居中的(只需要设置body的text-align:center;不知道为什么感觉这样设置很奇怪。),在firefox中显示是靠左的即没有居中,重新检查了下发现需要设置margin来使相应对象居中:margin:0 auto; 设置的值的含义我就不说了。
2、本来在最下面的跑到上面来了
我采用的是footer单独一个行的布局,也就是说,在footer的左右是没有其他层的。在ie中显示为最下面(css同样也没有特别设置),在firefox中显示跑的上面来了,这个问题是因为没有设置clear,需要设置为clear:both; 即不允许该层两边有浮动对象。
3、本来在一侧的结果到了别处
在ie中sidebar显示在正常的页面中部的右侧(我的布局分为上中下三部分,上下分别为header和footer,中部为帖子列表和sidebar,sidebar在中部的右侧),在firefox中sidebar跑到了中部的下面,footer的上面。
起初我认为可能是sidebar设置为float:right;的缘故排除后,我将sidebar的float设置去掉,转而通过设置margin来使sidebar显示在中部的右侧,但它还是顽固的待在下面,最后通过反复的检查发现之前我在sidebar的一个ul样式中有一个clear:both;的设置,将它去掉后sidebar在firefox中回到上面了,但在ie中还是在下面(检查发现是因为刚才调试的时候将margin的值设置的太大了,firefox显示为继续的右移,而在ie中就转到下一排了,修改margin值后没有这个问题了)。
但是这样却发现ie中和firefox中有几个象素的差别,在ie设置为合适的位置,可在firefox中就靠左了些。这个问题我没有分析清楚,暂时认为是浏览器间的处理不同吧。最后我还原sidebar的float设置为right,这时两
相关文档:
模块:module.css
基本共用:base.css
布局、版面:layout.css
主题:themes.css
专栏:columns.css
文字:font.css
表单:forms.css
补丁:mend.css
打印:print.css
头:header
内容:content/container
尾:footer
导航:nav
侧栏:sidebar
栏目:column
页面外围控制整体布局宽度: ......
1.div的垂直居中问题
vertical-align:middle;
将行距增加到和整个DIV一样高 line-height:200px;
然后插入文字,就垂直居中了。缺点是要控制内容不要换行。
2. margin加倍的问题
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。
解决方案 ......
5种方法立刻写出更好的CSS代码
引自:http://bbs.seuuo.com/thread-2625-1-3.html
当然,每个人都可以编写CSS代码,甚至你现在已经让它为你的项目工作了。但是CSS还可以更好吗?开始用这5个Tips改进你的CSS吧!
1.重置
首先,很认真的告诉你,总是要重置某些分类。无论你是使用 Eric Meyer Reset、YUI Reset或者你自己编 ......
<style type="text/css">
<!--
input{ background:expression((this.readOnly &&this.readOnly==true)?"#CCCCCC":"")}
-->
</style>
<body>
<input type="text" name="" />
<input type="text" name="" readonly="readonly" />
expression:处理方式:
  ......