1. 问题分析
在IE7中,ul和ol列表无法正常显示,原因是IE7会给display: list-item;
样式设置一个默认的list-style-image
,导致列表样式混乱。
2. 解决方案
2.1 清除默认样式
我们可以在CSS中清除掉默认的样式,重新设定列表样式。例如:
ul, ol {
list-style: none;
margin: 0;
padding: 0;
}
ul li, ol li {
margin: 0;
padding: 0;
list-style-position: inside;
}
ul li:before {
content: "?";
margin-right: 5px;
color: #000;
}
ol li:before {
content: counter(section) ".";
margin-right: 5px;
color: #000;
}
这里我们使用list-style: none;
来清除默认样式,再自定义样式。
注意,在设置list-style-position: inside;
后,在ul li:before
和ol li:before
中分别添加了列表项所需的符号和序号,以及一些空间调整。这样就可以很好地解决IE7中列表样式的问题了。
2.2 使用IE7 Hack
还有一种方法是对IE7使用Hack,像这样:
ul, ol {
*list-style: none;
}
ul li {
*list-style: disc;
}
ol li {
*list-style: decimal;
}
这种方式可以通过添加*
来达到Hack的效果。但是,Hack有许多弊端,比如不规范,不易维护,不被所有浏览器兼容等等。所以,我们不推荐使用Hack来解决这个问题。
3. 总结
在IE7中,ul和ol列表无法正常显示,我们可以通过清除默认样式或使用IE7 Hack来解决这个问题。但是,为了保证代码的规范性和易维护性,我们不推荐使用Hack方法。