CSS中的属性继承问题
2014-06-27 18:05
381 查看
转自:http://blog.163.com/yhwwen@126/blog/static/170468853201326421822/
不可继承的:display、margin、border、padding、background、height、min-height、max- height、width、min-width、max-width、overflow、position、left、right、top、
bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、 page-bread-before和unicode-bidi。
不及继承:也就是指子节点不能继承父节点的属性,譬如:
html
<div style="border:1px solid #ff0000;">这是父节点
<p> 这是子节点
</p>
</div>
效果如下:
如果子节点能继承父节点的border属性,那么也会有一个红色边框。
所有元素可继承:visibility和cursor。
内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction。
块状元素可继承:text-indent和text-align。
列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。
表格元素可继承:border-collapse。
相反,可继承就是父节点设置了这个属性后,子节点就可以继承他的属性,
这里要明白什么是块状元素,内联元素。
块状元素,是其属性display的默认值为block的标签,也就是div,p,h1等等,但不代表这些标签一定是块状元素,当程序员把他的display属性改变,就不是块状元素,例如:
html
<div<
4000
span class="pln"> style="border:1px solid #ff0000; width:400px; padding:10px;">这是块状元素</div>
<div style="border:1px solid #ff0000; width:400px; padding:10px;">这也是块状元素</div>
效果如下:
但如果,把其中一个div的display设置成inline,就变成:
ps:内联元素,width,和height属性都不起效的。
再看看例子:
html
效果如下:
我们把其中一个display设置成block时就会有:
很明显的是,一个标签没有说是一定是块状元素,当他的display属性被设置了,就会改变他。
有一点要注意的是当原本是内联元素的被设置float,也会变成呢个块元素的,把上面的“我是内联元素,设置为float:left,效果如:
你是否看出有点不同,和两个都是块元素,有区别。这里不讨论。
明白了什么是块状元素,就会对什么便签能继承什么属性,什么便签不能,就会有一个认识,这里最后一个例子,是一些容易被人忽略的属性继承:
html:
效果:
text-indent:文本缩进,这是一个比较少用的属性,它是一段文本的第一行缩进多少个像素,或字符。很明显它是一个文本编辑的属性,但有些人会把它当成间距属性使用,这样子做其实是很怪诞的:
第一,你不可保证,那段文字,永远都只有一行。
第二,定义为text-indent的子节点是块状元素,会继承这个属性的,但而其他人接受你写的css后,多数的时候都不会预计到子节点继承text-indent属性,而去修改。
为了避免这种不可预计的继承,你可以用padding,来代替text-indent,而不是,你发现这个属性,觉得很新奇,一时童心未泯地用。
不可继承的:display、margin、border、padding、background、height、min-height、max- height、width、min-width、max-width、overflow、position、left、right、top、
bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、 page-bread-before和unicode-bidi。
不及继承:也就是指子节点不能继承父节点的属性,譬如:
html
<div style="border:1px solid #ff0000;">这是父节点
<p> 这是子节点
</p>
</div>
效果如下:
如果子节点能继承父节点的border属性,那么也会有一个红色边框。
所有元素可继承:visibility和cursor。
内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction。
块状元素可继承:text-indent和text-align。
列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。
表格元素可继承:border-collapse。
相反,可继承就是父节点设置了这个属性后,子节点就可以继承他的属性,
这里要明白什么是块状元素,内联元素。
块状元素,是其属性display的默认值为block的标签,也就是div,p,h1等等,但不代表这些标签一定是块状元素,当程序员把他的display属性改变,就不是块状元素,例如:
html
<div<
4000
span class="pln"> style="border:1px solid #ff0000; width:400px; padding:10px;">这是块状元素</div>
<div style="border:1px solid #ff0000; width:400px; padding:10px;">这也是块状元素</div>
效果如下:
但如果,把其中一个div的display设置成inline,就变成:
ps:内联元素,width,和height属性都不起效的。
再看看例子:
html
<span style="border:1px solid #ff0000; width:400px; padding:10px;">我是内联元素</span> <span style="border:1px solid #ff0000; width:400px; padding:10px;">我也是内联元素</span>
效果如下:
我们把其中一个display设置成block时就会有:
很明显的是,一个标签没有说是一定是块状元素,当他的display属性被设置了,就会改变他。
有一点要注意的是当原本是内联元素的被设置float,也会变成呢个块元素的,把上面的“我是内联元素,设置为float:left,效果如:
你是否看出有点不同,和两个都是块元素,有区别。这里不讨论。
明白了什么是块状元素,就会对什么便签能继承什么属性,什么便签不能,就会有一个认识,这里最后一个例子,是一些容易被人忽略的属性继承:
html:
<div style="text-indent:2em; border:1px solid #ff0000; width:400px;"> 这是一级块状元素 <div style="border:1px solid #060"> 这是二级块状元素,这是突出效果的,没别的意思,巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 <p style=" border:1px solid #0000ff"> 这是三级块状元素 <span style="background-color:#333; color:#ffffff;"> 这是内联元素 </span> </p> </div> </div>
效果:
text-indent:文本缩进,这是一个比较少用的属性,它是一段文本的第一行缩进多少个像素,或字符。很明显它是一个文本编辑的属性,但有些人会把它当成间距属性使用,这样子做其实是很怪诞的:
第一,你不可保证,那段文字,永远都只有一行。
第二,定义为text-indent的子节点是块状元素,会继承这个属性的,但而其他人接受你写的css后,多数的时候都不会预计到子节点继承text-indent属性,而去修改。
为了避免这种不可预计的继承,你可以用padding,来代替text-indent,而不是,你发现这个属性,觉得很新奇,一时童心未泯地用。
相关文章推荐
- css 透明度属性继承问题
- css属性继承问题
- div+css - Firefox和IE浏览器兼容问题 - 用CSS实现cellSpacing属性效果
- div+css - 其他HTML问题 - disabled属性
- 实现 IE6 下支持 position-fixed 的 CSS 属性并解决“振动”的问题
- CSS中的z-index属性设置问题 本文来源于[沒有觀點]
- IE下CSS属性float:right下移换行或不显示的问题原因及解决
- 蛙蛙请教:关于ajax,xmlhttp跨域请求和HTC组件的CSS继承问题
- html + css 在设置了 z-index 属性后没效果的问题解决办法
- css margin的相关属性,问题及应用
- line-height 属性的继承问题
- 解决CSS透明度被继承问题
- C#的继承问题和属性的使用
- css里继承和优先级的问题
- CSS教程:理解继承属性及应用
- 关于CSS透明度的继承问题
- 窗体继承时对象属性的修改问题
- CSS教程:line-height属性的继承
- CSS 表单元素不继承body的字体属性
- css 中可继承的属性