CSS的继承是指被包在内部的标签将拥有外部标签的样式性质。继承特性最典型的应用通常发挥在整个网页的样式预设,即整体布局声明。而需要要指定为其它样式的部份设定在个别元素里即可达到效果。这项特性可以给网页设计者提供更理想的发挥空间。但同时继承也有很多规则,应用的时候容易让人迷惑。
  CSS允许我们为文档设置更为丰富且便于修改的外观。我们现在主要想和朋友们一起对CSS的继承性进行一点深入的探讨。

  CSS的一个主要特征就是继承,它是依赖于祖先—后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。下面举例说明:
Example Source Code
  样式定义:body{color:blue;}
  应用举例代码:<p>CSS<strong>继承性</strong>之深入剖析</p>

  看下面的这个例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
<!-- body{color:blue;}-->
</style>
</head>
<body>
<p>CSS<strong>继承性</strong>之深入剖析</p>
</body>
</html>

 运行上面的代码,我们看到的结果是:“CSS继承性之深入剖析”这段话是蓝色。“继承性”由于应用了strong元素,所以是粗体。这很符合作者的意图,也是为什么CSS继承了一部分的原因。

  在实际工作中,我们编写代码,往往在CSS文档的最前部,首先定义:

Example Source Code

*{margin: 0; padding: 0; border: 0;}

  这些代码的真正用意在于,在缺省定义的情况下,所有无素的margin、padding、border的值都为零。当需要应用不同的样式的时候,再单独的对某元素进行定义即可。也就是整个网页的样式预设、整体布局声明。而需要指定为其它样式的部份设定在个别元素里即可达到效果。

在CSS中,继承是一种非常自然的行为,我们甚至不需要考虑是否能够这样去做,但是继承也有其局限性。

  首先,有些属性是不能继承的。这没有任何原因,只是因为它就是这么设置的,标准就是如此。举个例子来说:border属性,大家都明白border属性的作用是设置元素的边框的,它就没有继承性。如果继承了边框属性,那么文档看起来就会很奇怪。例如我们定义容器div的边框为1px,而在此容器内的ul li在正常情况下我们都不希望它有边框,如果border有继承性,我们就要再去掉它们的边框。这样显然是不合理的。

  多数边框类的属性,如:Border(边框)、Padding(补白)、Margin(边界)、背景等等,都是没有继承性的。

  在某些时候继承也会带来一些错误,比如说下面这条CSS定义:

  Body{color:blue}

  这是定义了Body中的文本颜色为蓝色。如果Body中含有表格,在有些浏览器中这句定义会使除表格之外的文本变成蓝色,而表格内部的文本颜色并不是蓝色。从技术上来说,这是不正确的,但是它确实存在。所以我们经常需要借助于某些技巧,比如将CSS定义成这样:

  Body,table,th,td{color:blue}

  这样表格内的文字也会变成蓝色了。

在CSS中,继承是一种非常自然的行为,我们甚至不需要考虑是否能够这样去做,但是继承也有其局限性。

  首先,有些属性是不能继承的。这没有任何原因,只是因为它就是这么设置的,标准就是如此。举个例子来说:border属性,大家都明白border属性的作用是设置元素的边框的,它就没有继承性。如果继承了边框属性,那么文档看起来就会很奇怪。例如我们定义容器div的边框为1px,而在此容器内的ul li在正常情况下我们都不希望它有边框,如果border有继承性,我们就要再去掉它们的边框。这样显然是不合理的。

  多数边框类的属性,如:Border(边框)、Padding(补白)、Margin(边界)、背景等等,都是没有继承性的。

  在某些时候继承也会带来一些错误,比如说下面这条CSS定义:

  Body{color:blue}

  这是定义了Body中的文本颜色为蓝色。如果Body中含有表格,在有些浏览器中这句定义会使除表格之外的文本变成蓝色,而表格内部的文本颜色并不是蓝色。从技术上来说,这是不正确的,但是它确实存在。所以我们经常需要借助于某些技巧,比如将CSS定义成这样:

  Body,table,th,td{color:blue}

  这样表格内的文字也会变成蓝色了。

CSS继承—深入剖析的更多相关文章

  1. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  2. 从倒影说起,谈谈 CSS 继承 inherit(转)

    从倒影说起,谈谈 CSS 继承 inherit 给定一张有如下背景图的 div: 制作如下的倒影效果: 方法很多,但是我们当然要寻找最快最便捷的方法,至少得是无论图片怎么变化,div 大小怎么变化,我 ...

  3. CSS继承总结

    CSS的一个重要特征就是继承,它是依赖于祖先-后代的关系的.继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代. CSS可以继承的属性有: 1.文字相关:font-famil ...

  4. css继承样式怎么控制?用选择器

    css样式继承性是指下级的样式属性会继承上级的属性,通俗点讲是儿子来继承父亲的属性,比如li会继承ul的属性.css继承原理是我们设置上级(父级)的CSS样式,上级(父级)及以下的子级(下级)都具有此 ...

  5. CSS继承元素属性

    CSS继承的元素属性 所有元素可继承: visibility和cursor 内联元素和块级元素可继承: letter-spacing.word-spacing.white-space.line-hei ...

  6. 谈谈一些有趣的CSS题目-- 从倒影说起,谈谈 CSS 继承 inherit

      开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你 ...

  7. CSS继承的特殊性

    p{color:red;} .first{color:green;} <p class="first">三年级时,我还是一个<span>胆小如鼠</s ...

  8. CSS 继承深度解析

    FROM ME: 之前在研究前端性能优化的时候,就有学习关于CSS中“善用CSS中的继承”. 原文:CSS Inheritance, The Cascade And Global Scope: You ...

  9. CSS继承、层叠和特殊性

    1.继承 (1)样式应用于某个特定的HTML标签元素,而且应用于其后代. (2)但某些标签不适用,如border: (3)例子:p{color:red;}设置了颜色 <p class=" ...

随机推荐

  1. js 关于字符串转数字及数字保留位数的控制

    1.parseInt()和parseFloat()两个转换函数,将字符串转换成相应的数字. 1.parseInt() parseInt进行转换时,将字符串转成相应的整数.浮点数以后的数字都不要了. p ...

  2. 监听浏览器返回,pushState,popstate 事件,window.history对象

    在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...

  3. 【转载】在C#中主线程和子线程如何实现互相传递数据

    引用:https://blog.csdn.net/shuaihj/article/details/41316731 一.不带参数创建Thread using System; using System. ...

  4. phpredis命令

    <?php //redis //检查一个扩展是否已经加载.大小写不敏感. if (!function_exists('redis')) { echo '不支持 redis'; return ; ...

  5. mysql帐号不允许从远程登陆

    默认情况下,mysql帐号不允许从远程登陆,只能在localhost登录.本文提供了二种方法设置mysql可以通过远程主机进行连接. 一.改表法 在localhost登入mysql后,更改 “mysq ...

  6. DedeCMS V5.7sp2最新版本parse_str函数SQL注入漏洞

    织梦dedecms,在整个互联网中许多企业网站,个人网站,优化网站都在使用dede作为整个网站的开发架构,dedecms采用php+mysql数据库的架构来承载整个网站的运行与用户的访问,首页以及栏目 ...

  7. uva 540 - Team Queue(插队队列)

    首发:https://mp.csdn.net/mdeditor/80294426 例题5-6 团体队列(Team Queue,UVa540) 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队 ...

  8. java基础day05---界面

    java基础day05---界面 1.GUI:图形用户界面(Graphics User Interface) 开发工具包AWT抽象窗口把工具箱===>swing 解决了awt存在的lcd问题== ...

  9. Python自动化运维——文件与目录差异对比

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:filecmp 安装:Python版本大于等于2.3默认自带 功能:实现文件.目录.遍历子目录的差异 常用方 ...

  10. TensorLayer 中文文档

    TensorLayer 中文文档 好消息 我们获得了 ACM Multimedia (MM) 年度最佳开源软件奖. TensorLayer 是为研究人员和工程师设计的一款基于Google Tensor ...