点击这里给我发消息 易联主机

[转]Firefox与IE下UL预设标记的异同

11:06 AM 2007-07-12 | 逍遥老鬼 | 日志分类:DIV+CSS

本文转载:毅博客   作者:小毅

列表UL或是OL中都有一个预设标记,这个标记可能是实点圆点,也可能是数字。在实际的应用中,我们需要去掉这个预设标记,但我们不清楚这个预设标记是存在于什么位置。因为IE与FF似乎在处理UL的预设标记时都有着不同的方式:我们来写一个UL的HTML代码结构:

XML/HTML代码
  1. <ul>    
  2.  <li>建设部通报八起房地产交易违法、违规典型案例 </li>    
  3.  <li>周小川表态引发美元震荡|人民币应成世界货币?</li>    
  4.  <li>首都机场一香港乘客制造炸弹威胁导致航班延误</li>    
  5.  <li>美国房市“麻烦”未了|底特律房子比车子便宜</li>    
  6.  <li>网络报告:美国是黑客大本营 中国是最大受害国</li>    
  7. </ul>   

这个UL在不同的浏览器中的显示基本上是差不多的。那么我们设定,一下CSS试着看一下IE与FF什么地方不一样:

CSS代码
  1. ul {background:#dddpadding:0; }   

 现在只把padding的值设为0,这时我们看一下IE中除了多个背景之外并没有什么变化,但是FF中的预设标记不见了!这里要注意的是IE中的预设标记是在背景外的。我们再来换个方式来设置: 

CSS代码
  1. ul {background:#dddmargin:0; }   

这里我们再看,情况相反,IE的预设标记不见了,而FF中的预设标记还在,这里要注意的是这时FF中的预设标记是在背景里的。当然我们这里有点不理解了,到底这是为什么呢?这个预设标记究竟是在什么地方的呢?下面我们通过一个实例来看一下UL的预设标记是在什么地方的!

XML/HTML代码
  1. <ul>    
  2.  <li>建设部通报八起房地产交易违法、违规典型案例 </li>    
  3.  <li>周小川表态引发美元震荡|人民币应成世界货币?</li>    
  4.  <li>首都机场一香港乘客制造炸弹威胁导致航班延误</li>    
  5.  <li>美国房市“麻烦”未了|底特律房子比车子便宜</li>    
  6.  <li>网络报告:美国是黑客大本营 中国是最大受害国</li>    
  7. </ul>   

 

CSS代码
  1. ul {background:#dddpadding:100pxmargin:100pxborder:100px solid #eee; }    
  2. li {background:#aaa;}   

这时我们看到,margin区域是最外围的白色部分,往里有点灰色的是border,再往里是更深一点的灰色,这个区域是padding,最深的区域是内容区。而预设标记正处在padding的区域,那么是不是说把padding区去掉这个预设标记就会消失呢?我们把CSS做一下修改:

CSS代码
  1. ul {background:#dddpadding:0; margin:100pxborder:100px solid #eee; }    
  2. li {background:#aaa;}   

我们把padding设为0后发现预设标记依然还在,不过这时他处在了border的上面,那么我们可以根据上面推测出预设标记并不存在于margin,padding或是border中,margin,padding与border只不过为预设标记提供了一个存在并显示的空间。而这个预设标记是浮于margin,padding与border之上的。

那么这时我们大致上可能已经理解了,其实IE与FF对于UL的默认值的设定是不一样的,IE给了UL一个margin值,但是却没有给padding值,所以IE中UL的预设标记点是在背景外的。而FF相反给了一个padding值却没有给margin值,所以在FF中UL的预设标记点是在背景内的。但是依据上面的实例我们清楚,这个预设标记点不属于paading也不属于margin。他只属于内容部分,他一直是在内容的外边缘,当然我们还可以通过CSS来设置其在内容的内边缘。基本方式请查阅《CSS2中文手册》

通过上面的例子我们清楚了,想要让这个预设标记消失光用margin:0;与padding:0;因为如果出现了border的宽度达到一定的数值时这个预设标记还是会出现的。所以正确的写法是:margin:0; padding:0; list-style:none;

虽然预设标记很不错,但是却没办法精确控制,所以在实际应用中并不推荐使用,还是用背景图来代替!


此帖在经典论坛发布后,有朋友提出了这样的问题:“把li的float属性设置为left之后,前面的预设标记在IE中就会消失,而在FF中则正常存在,这时候IE把预设标记藏到哪里去了呢?”下面就这个问题做一下解释:

这个标记点去哪了?这是IE对这个预设标记层次的设定,在IE看来,这个预设标记与内容不在同一个等级上,当UL被设为float:left;时他被隐在了margin与border的下面,也许你不相信,但是这是事实。看下面的两个例子:

IE中消失的预设标记:

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.     <meta http-equiv="Content-Language" content="zh-CN" />  
  6.     <title></title>  
  7.     <style type="text/css">  
  8.     /*<![CDATA[*/ul {background:#ddd; margin:0 0 0 30px; border:30px solid #aaa; float:left;}/*]]>*/   
  9.     </style>  
  10. </head>  
  11. <body>  
  12.     <ul>  
  13.         <li>建设部通报八起房地产交易违法、违规典型案例 </li>  
  14.         <li>周小川表态引发美元震荡|人民币应成世界货币?</li>  
  15.         <li>首都机场一香港乘客制造炸弹威胁导致航班延误</li>  
  16.         <li>美国房市“麻烦”未了|底特律房子比车子便宜</li>  
  17.         <li>网络报告:美国是黑客大本营 中国是最大受害国</li>  
  18.     </ul>  
  19.     <ul>  
  20.         <li>建设部通报八起房地产交易违法、违规典型案例 </li>  
  21.         <li>周小川表态引发美元震荡|人民币应成世界货币?</li>  
  22.         <li>首都机场一香港乘客制造炸弹威胁导致航班延误</li>  
  23.         <li>美国房市“麻烦”未了|底特律房子比车子便宜</li>  
  24.         <li>网络报告:美国是黑客大本营 中国是最大受害国</li>  
  25.     </ul>  
  26. </body>  
  27. </html>   

 被padding拉出来的预设标记 

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5.     <meta http-equiv="Content-Language" content="zh-CN" />  
  6.     <title></title>  
  7.     <style type="text/css">  
  8.         /*<![CDATA[*/ul {background:#ddd; margin:0 0 0 30px; padding:0 0 0 30px; border:30px solid #aaa; float:left;}/*]]>*/   
  9.     </style>  
  10. </head>  
  11. <body>  
  12.     <ul>  
  13.         <li>建设部通报八起房地产交易违法、违规典型案例 </li>  
  14.         <li>周小川表态引发美元震荡|人民币应成世界货币?</li>  
  15.         <li>首都机场一香港乘客制造炸弹威胁导致航班延误</li>  
  16.         <li>美国房市“麻烦”未了|底特律房子比车子便宜</li>  
  17.         <li>网络报告:美国是黑客大本营 中国是最大受害国</li>  
  18.     </ul>  
  19.     <ul>  
  20.         <li>建设部通报八起房地产交易违法、违规典型案例 </li>  
  21.         <li>周小川表态引发美元震荡|人民币应成世界货币?</li>  
  22.         <li>首都机场一香港乘客制造炸弹威胁导致航班延误</li>  
  23.         <li>美国房市“麻烦”未了|底特律房子比车子便宜</li>  
  24.         <li>网络报告:美国是黑客大本营 中国是最大受害国</li>  
  25.     </ul>  
  26. </body>  
  27. </html>      

由此我们可以推断IE是这样来解释的:在UL有了float:left;的属性后,预设标记的层次应该在margin与border之下,在padding之上。而在FF中,预设标记是与内容一起高于margin,border,padding的。

至于LI在设定float:left;之后为什么IE也看不到预设标记我想可能与所在的显示层次有关。但是我现在还没有一定的证据来证明这种现象的真实原因!

Google
 
« 上一篇 下一篇 »
只显示10条记录 相关文章
  1. 【转】图片垂直居中的使用技巧 [浏览:914, 评论:3]
  2. 关于有序列表ol排序的一些问题 [浏览:580, 评论:0]
  3. :before:after这两个伪类到底该怎么用呢? [浏览:947, 评论:4]
  4. 兼容IE,Firefox的图片自动缩放CSS代码 [浏览:2173, 评论:6]
  5. CSS hack:区分IE6,IE7,firefox [浏览:1541, 评论:2]
  6. 网页标准制作中的两个关于UTF-8编码的问题 [浏览:3042, 评论:9]
  7. 疯子疯子绝对是Html疯子 [浏览:1451, 评论:0]
  8. 一段代码,js替换css的 [浏览:2396, 评论:2]
  9. 把JS与CSS写在同一个文件里 [浏览:1903, 评论:0]
  10. 在蓝色看到的一段hack的解释 [浏览:1910, 评论:0]
Trackbacks
点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
1条记录访客评论
很实用的技巧,记录下来备用。
Post by 逍遥老鬼 on 2007, 07, 12, 11:23 AM 引用此文发表评论 #1

发表评论

评论内容(*):