html text-indent,css之text-indent

text-indent(一个在ie6下有着奇怪表现的属性)

text-indent作为大家都很熟悉的一个css属性,应该都不太会对这个属性去做过多的研究。我本来也是觉得这属性也就这样了,直到今天遇到的一个以前未注意过的bug...

先看下w3school对text-indent的介绍:

定义

text-indent 属性规定文本块中首行文本的缩进。

注释:允许使用负值。如果使用负值,那么首行会被缩进到左边。

注意:在 CSS 2.1 之前,text-indent 总是继承计算值,而不是声明值。

说明

用于定义块级元素中第一个内容行的缩进。这最常用于建立一个“标签页”效果。允许指定负值,这会产生一种“悬挂缩进”的效果。默认值:not specified

继承性:yes

版本:CSS1

JavaScript 语法:object.style.textIndent="50px"

可能的值值描述

length定义固定的缩进。默认值:0。

%定义基于父元素宽度的百分比的缩进。

inherit规定应该从父元素继承 text-indent 属性的值。

上方介绍中的重点我已经用红色字体标出了——块级元素。也就是这个属性只对块级元素生效,(当然因为可替代元素中的input类型和display-block相似,所以内容块也为块级元素,故同样可以设置text-indent)。今天遇到的bug也是出自于这里。

在IE8+(包括IE8),FF,chrome等现代高级浏览器中显示的效果良好,可以达到预期的样子。

asdasdasdasd

效果为:

c93073ed387f7b657d7de9fbcb9f1b01.png可以很明显的看出,input内的文字“前进”了20px。

但是同样的代码放在IE6下却是这个情况:

d6fe8bda9503e55390d3820da264262a.png

大家可以看到input本身相对于父元素而言也“前进”了20px。

但是后来经过实验几次后发现,并不是说只要是inline元素就肯定会因为text-indent而一起“前进”,其实还要取决于它在父元素中的位置。

asdasdasdasdasdasd

如果在input前再加一个inline元素的话,此时就会发现在现代浏览器与IE6中的表现基本相同:(如果加一个inline-block元素的话表现也是一样的)

现代浏览器:69764b8ba3bfe3f209106015c46a930b.png     ie6:ead645724cef228cb496e70f1cd9cd68.png

此时如果在input前面再加一个block元素的话:

代码:

asdasd12134asdasdasdasd

现代浏览器:65936311f245c7e8b9d8847806c4fddd.png  ie6:1ebf89344723f38714bc16e31f10cf24.png

效果还是会回到bug的状态....真是头疼啊,初步结论是:如果inline元素前面没有元素或者有block元素的话,在IE6下会出现bug。

再说下其他情况下会引发的bug:

如果input设置float的情况下:

asdasdasdasd

现代浏览器:b8b914968dd14ee1b3f7196a37137609.png(表现依旧良好)

ie6:efbf49f06b471c259151d763d48d95cf.png但是在ie6下,float后的input将自身的text-indent传递给了父元素,导致input后的文字也“前进”了20px。

还有两种情况就引用下网上别人的例子了:

例子 3:

负值的 text-indent 会是怎样呢?

Indent

正文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值