打印

[讨论] text-indent在火狐下失效的研究

text-indent是css中用于控制段落文本缩进的属性。单位有em,px,pt等常用单位以及百分比。
常用于控制div,td,th,li,p,dd,dt等元素对象中的文本的缩进。很多情况下用text-indent是狠方便的。
当缩进量为px时,IE6,IE7,及Firefox解释的缩进距离是一样的,当设置为em的时候会因为字体字号的定义不同有细小的差异。
如下图所示的新闻列表在网页制作过程中很常见。

html代码如下:
复制内容到剪贴板
代码:
<ul>
<li><span>2008-6-25</span><a href="News.aspx?sysClassID=509bc81"">机构资金进优...</a></li>
<li><span>2008-6-25</span><a href="News.aspx?sysClassID=509bc81"">机构资金进驻优...</a></li>
</ul>
然后在CSS中设置li和span的属性:
复制内容到剪贴板
代码:
li{line-height:25px;height:25px;text-indent:15px;background:url(../images/icon_2.gif) left center no-repeat;}
span{float:right;padding-right:10px;}
这时候IE6和IE7都会在文字左边缩进15px,而在Firefox下面这15px像素缩进就不见了
这是因为ie是根据文本排列的方向解释缩进的。而Firefox按照标准根据文本流的方向解释缩进,是将15px的缩进解释到了span元素的前面,而span元素拥有的float属性恰好能够消除父元素的text-indent的值,所以这15px就不见了。
解决这个兼容问题的本人目前知道的方法是将text-indent改为padding-left,这因为父元素padding属性是不会随子元素的float属性而消除。

[ 本帖最后由 lijun198296 于 2008-6-30 15:37 编辑 ]
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!
加个 a{display:block;}就行了。或者去点span的浮动。
引用:
原帖由 lianggexin 于 2008-6-30 16:28 发表
加个 a{display:block;}就行了。或者去点span的浮动。
这样子的话就做不出图示的效果了吧。
a{display:block}好像与缩进没什么关系吧~


 提示:您可以先修改部分代码再运行
在 a 里定义 text-indent:15px; 因为 a 默认是内联元素,所以要先给其定义 display:block; 转为块级元素。

[ 本帖最后由 hesenran 于 2008-6-30 18:20 编辑 ]
追求-学习-提高!!!!

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
text-indent的作用是段落缩进!

为了更好兼容其它浏览器,建议设置:a {display:block;margin-left:*px;}

http://www.google.cn/search?hl=z ... &meta=&aq=f
终于等到了……

TOP

这个属性不太好用,各个浏览器显示都不一样

TOP

对于非段落下的缩进,不建议采用text-indent:;来进行处理;建议采用内补白(padding-left)进行处理!
天外有天,人外有人

TOP

引用:
原帖由 lijun198296 于 2008-6-30 15:35 发表 [url=http://bbs.blueidea.com/redirect.php?goto=findpost&pid=4083947&ptid=2867737]... 这是因为ie是根据文本排列的方向解释缩进的。而Firefox按照标准根据文本流的方向解释缩进,是将15px的缩进解释到了span元素的前面,而span元素拥有的float属性恰好能够消除父元素的text-indent的值,所以这15px就不见了。
解决这个兼容问题的本人目前知道的方法是将text-indent改为padding-left,这因为父元素padding属性是不会随子元素的float属性而消除。
感谢这段解释,我刚遇到这个问题
cike.org

TOP