在IE6及更低版本中,如果在 li 元素中包含 display: block 的元素时,li 元素之间的空格将会转换为一个空行,夹在每个 li 的中间。

假设使用上一节的HTML结构来制作垂直导航,为了增大链接的点击区域,常常将 a 元素的 display 属性设置为 block,让它成为块级元素。为了方便查看效果,为链接设置背景颜色:

  1. li a {
  2.     display: block;
  3.     background: #fa7a20;
  4. }

在现代浏览器中的运行结果如图 10‑8 所示:

图10-8 现代浏览器中运行结果

在IE6以更低版本中的运行结果如图 10‑9 所示:

图10-9 IE6及更低版本中运行结果

导致这个问题的根本原因,是 li 元素后面的空格或换行符被转换为空行。如果在HTML代码中,将所有的 li 在一行内连续书写,中间没有空格,这个问题就不会出现。

然而,当存在很多 li 子元素时,在一行内书写会给阅读代码带来困难。事实上,除了在一行内显示外,这个问题还有很多解决方法。

方法一:为 li 元素设置 display: inline,让它在行内显示。由于内部的 a 元素是块级元素,这种方法不会产生任何负面影响。因此,这应该是最简单的解决方法。

  1. li a {
  2.     display: inline;
  3. }

方法二:为 a 元素显式定义一个宽度或高度,使它触发IE的hasLayout。

  1. li a {
  2.     …
  3.     width: 200px;      
  4. }

如果使用高度来触发IE的hasLayout,可以同时定义 line-height 属性,并设置为height 属性相同的值,还可以让链接垂直居中,一举两得。

方法三:为每个 li 元素设置一个下边框。

  1. ul li {
  2.     border-bottom: 1px solid #fff;
  3. }

在解决问题的同时,这个边框还起到分隔 li 元素的作用,此方法可谓一举两得。但是,如果你偏偏不允许分隔 li 元素,这又带来新的问题,就是当边框颜色和背景颜色不一致时,将会影响显示效果。所以,最好将边框的颜色,设置成背景颜色。

当然,也可以为 li 元素设置一个与边框等宽的负值下外边距,这样,就不必为边框颜色而纠结了。

  1. ul li {
  2.     margin-bottom: -1px;
  3.     border-bottom: 1px solid #fff;
  4. }

方法四:让 a 元素进行浮动,同时清除浮动。

  1. li a {
  2.     …
  3.     float: left;
  4.     clear: left;
  5. }

由于浮动会导致 a 元素的宽度收缩,又会增加额外的 clear 属性,并不推荐使用这种方法。但总归它是一种解决方法,应该会有合适的应用场景。

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

修复IE下列表 li 底部空行Bug相关推荐

  1. 修复IE下列表 li 的阶梯Bug

    在IE6及更低版本中,如果 li 元素中包含一些元素内容(如,链接元素),并且让其内容进行浮动,但 li 本身不浮动时,li 就会呈阶梯状. 假设在一个无序列表中,包含多个 li 元素,并在每个 li ...

  2. 修复IE下相对定位子元素溢出Bug

    在页面上,常常使用 overflow 属性,来控制一个元素内容溢出时的处理方式.然而,在IE6和IE7中,当父元素设置了 overflow: auto 或 overflow: hidden,当子元素使 ...

  3. 10个修复ie6下bug技巧[转]

    ie6的末日即将来临,对我们前端开发人员来说,无疑是一个慰藉人心的喜讯.但这个末日也并非朝日可至,所以我们还是争取最后的胜利,用各种hack和方法来规避ie6下双边距,背景透明,重复文字等等一堆bug ...

  4. 十个修复IE6下bug技巧

    IE6的末日即将来临,但这个末日也并非朝日可至,所以我们还是争取最后的胜利,用各种hack和方法来规避IE6下双边距,背景透明,重复文字等等一堆bug. 10个修复IE6下bug技巧 IE6的末日即将 ...

  5. E6终极备忘:修复IE6下_25+_Bugs

    E6终极备忘:修复IE6下_25+_Bugs 引言:"珍惜生命,远离IE 6!"       对IE6最好的策略就是不去兼容它. 好吧,我知道你的难处,你不得不去兼容IE6这个狗血 ...

  6. DirectX修复windows下.exe文件启动失败。

    转载自http://blog.csdn.net/vbcom/article/details/7245186 DirectX修复工具最新版:DirectX Repair V3.5 增强版  NEW! 版 ...

  7. SharePoint 2013 InfoPath 无法保存下列表单

    在使用InfoPath发布表单,发布到SharePoint服务器报错,如下介绍: 环境:Windows 2012 DateCenter + Sql 2012 + SharePoint 2013 + O ...

  8. MFC下列表控件的使用

    MFC下列表控件的使用 2012-11-09 16:46:57|  分类: 程序VC相关 |  标签: |字号大中小 订阅 1.应该加入头文件 #include <Atlbase.h> 2 ...

  9. 修复WIN10下Prolific USB-to-Serial Comm Port驱动无法使用

    修复WIN10下Prolific USB-to-Serial Comm Port驱动无法使用 主要是为了使用esp8266

最新文章

  1. jmeter获取时间_time 函数
  2. python下载图片被覆盖了_scrapy 将抓取内容中的图片下载到本地并替换内容中的原始图片...
  3. 校验用户画像的准确性
  4. php apache 多进程,php多进程 防止出现僵尸进程 如何 使 apache 成为 僵尸进程
  5. 佳能80d有人脸识别吗_2020单反/微单相机推荐,单反和微单(无反)选购攻略,佳能、尼康、索尼、富士、松下相机...
  6. android webview 设置下载文件,如何使用Android webview下载文本文件
  7. 平板android怎么玩电脑游戏,Android平板模拟家用主机游戏教程_小米 平板_平板电脑新闻-中关村在线...
  8. 安装heg时找不到java,记录安装HEG的坑
  9. xbox360链接pc_如何在Windows PC上使用Xbox 360控制器
  10. 龙芯平台常用OS 及下载链接
  11. 美标线材AWG能通过电流到底多大?
  12. 全景图矫正 matlab,全景图的后期水平矫正的三种方法
  13. ui-app使用pdfh5显示pdf文件 获取pdf总页数和当前阅读页数
  14. 学习记录 动态规划实时更新
  15. WireShark基本使用(1)第一章WireShark简介+练习题
  16. 基于java毕业设计审核系统
  17. 如何判断网站是否真的被k站了
  18. android中管理后台服务的控件,基于android的手机日程管理系统需求调研报告(12页)-原创力文档...
  19. GNSS/INS组合导航(七):卡尔曼滤波
  20. 秋之媚语:落叶与花魂共舞

热门文章

  1. mysql实现行转列功能
  2. The current branch is not configured for pull N...
  3. Hello,Views(六)下拉框Spinner(附源码)
  4. IIFP之牛刀小试(初识篇)
  5. docker swarm 实战
  6. Centos8 搭建linux集群
  7. 剑指Offer面试题:30.第一个只出现一次的字符
  8. 003-redis-命令-key操作,字符串操作
  9. 在libevent中使用线程池
  10. sql server 常用语句