<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>成刚网志 &amp;amp;&amp;amp; CBolg Application</title>
<link>http://chenggang.net</link>
<description><![CDATA[记录我的网事历程，架起沟通的桥梁！欢迎留言！
]]></description>
<lastBuildDate>Sun, 20 May 2012 22:43:39 +0800</lastBuildDate>
<copyright>Copyright &amp;copy; 2012 by CBolg Application.</copyright>
<language>zh-cn</language>
<pubDate>Mon, 21 May 2012 12:50:24 +0800</pubDate>
<item>
<title>CSS技巧</title>
<summary><![CDATA[1.div的垂直居中问题vertical-align:middle;将行距增加到和整个DIV一样高line-height:200px;然后插入文字，就垂直居中了。缺点是要控制内容不要换行；2.margin加倍的问题设置为float的div在ie下设置的margin会加倍。这是]]></summary>
<description><![CDATA[<p>
	1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字，就垂直居中了。缺点是要控制内容不要换行；</p>
<p>
	2. margin加倍的问题 设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上 display:inline; 例如： &lt;#div id=&rdquo;imfloat&rdquo;&gt; 相应的css为 #IamFloat{ float:left; margin:5px; /*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/} ；</p>
<p>
	3.浮动ie产生的双倍距离 #box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略} 这里细说一下block与inline两个元素：block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制 (块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); #box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的效果 diplay:table;</p>
<p>
	4 IE与宽度和高度的问题 IE 不认得min-这个定义，但实际上它把正常的width和height当作有min的情况来使。这样问题就大了，如果只用宽度和高度，正常的浏览器里这两个值就不会变，如果只用min-width和min-height的话，IE下面根本等于没有设置宽度和高度。 比如要设置背景图片，这个宽度是比较重要的。要解决这个问题，可以这样： #box{ width: 80px; height: 35px;}html&gt;body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}</p>
<p>
	5. 页面的最小宽度 min -width是个非常方便的CSS命令，它可以指定元素最小也不能小于某个宽度，这样就能保证排版一直正确。但IE不认得这个，而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用，可以把一个&lt;div&gt; 放到 &lt;body&gt; 标签下，然后为div指定一个类, 然后CSS这样设计： #container{ min-width: 600px; width:e-xpression(document.body.clientWidth &lt; 600? &quot;600px&quot;: &quot;auto&quot; );} 第一个min-width是正常的；但第2行的width使用了Javascript，这只有IE才认得，这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。</p>
<p>
	6.DIV浮动IE文本产生3象素的bug 左边对象浮动，右边采用外补丁的左边距来定位，右边对象内的文本会离左边有3px的间距. #box{ float:left; width:800px;} #left{ float:left; width:50%;} #right{ width:50%;} *html #left{ margin-right:-3px; //这句是关键} &lt;div id=&quot;box&quot;&gt; &lt;div id=&quot;left&quot;&gt;&lt;/div&gt; &lt;div id=&quot;right&quot;&gt;&lt;/div&gt; &lt;/div&gt;</p>
<p>
	7.IE捉迷藏的问题 当div应用复杂的时候每个栏中又有一些链接，DIV等这个时候容易发生捉迷藏的问题。 有些内容显示不出来，当鼠标选择这个区域是发现内容确实在页面。 解决办法：对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽量简单。</p>
<p>
	8.float的div闭合;清除浮动;自适应高度;</p>
<p>
	① 例如：&lt;#div id=&rdquo;floatA&rdquo; &gt;&lt;#div id=&rdquo;floatB&rdquo; &gt;&lt;#div id=&rdquo; NOTfloatC&rdquo; &gt;这里的NOTfloatC并不希望继续平移，而是希望往下排。(其中floatA、floatB的属性已经设置为 float:left;) 这段代码在IE中毫无问题，问题出在FF。原因是NOTfloatC并非float标签，必须将float标签闭合。在 &lt;#div class=&rdquo;floatB&rdquo;&gt; &lt;#div class=&rdquo;NOTfloatC&rdquo;&gt;之间加上 &lt; #div class=&rdquo;clear&rdquo;&gt;这个div一定要注意位置，而且必须与两个具有float属性的div同级，之间不能存在嵌套关系，否则会产生异常。并且将clear这种样式定义为为如下即可： .clear{ clear:both;}</p>
<p>
	②作为外部 wrapper 的 div 不要定死高度,为了让高度能自动适应，要在wrapper里面加上overflow:hidden; 当包含float的 box的时候，高度自动适应在IE下无效，这时候应该触发IE的layout私有属性(万恶的IE啊！)用zoom:1;可以做到，这样就达到了兼容。 例如某一个wrapper如下定义： .colwrapper{ overflow:hidden; zoom:1; margin:5px auto;}</p>
<p>
	③对于排版,我们用得最多的css描述可能就是float:left.有的时候我们需要在n 栏的float div后面做一个统一的背景,譬如: &lt;div id=&rdquo;page&rdquo;&gt; &lt;div id=&rdquo;left&rdquo;&gt;&lt;/div&gt; &lt;div id=&rdquo;center&rdquo;&gt;&lt;/div&gt; &lt;div id=&rdquo;right&rdquo;&gt;&lt;/div&gt; &lt;/div&gt; 比如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而 page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成float,所以我们应该这样解决 &lt;div id=&rdquo;page&rdquo;&gt; &lt;div id=&rdquo;bg&rdquo; style=&rdquo;float:left;width:100%&rdquo;&gt; &lt;div id=&rdquo;left&rdquo;&gt;&lt;/div&gt; &lt;div id=&rdquo;center&rdquo;&gt;&lt;/div&gt; &lt;div id=&rdquo;right&rdquo;&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; 再嵌入一个float left而宽度是100%的DIV解决之。</p>
]]></description>
<link>http://chenggang.net/posts/81</link>
<pubDate>Sat, 17 Jan 2009 15:14:48 +0800</pubDate>
<author>小豆</author>
<category>DIV+CSS</category>
<guid isPermaLink="true">http://chenggang.nethttp://chenggang.net/posts/81</guid>
</item>
</channel></rss>
