扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
比如a有如下的样式:123456.a{ height:20px; width:20px; color:red; margin:10px 20px;}
成都创新互联公司是专业的新乡网站建设公司,新乡接单;提供成都网站制作、做网站、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新乡网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
而b唯独和a的样式里颜色不同本应该写:123456.b{ height:20px; width:20px; color:blue; margin:10px 20px;}
这时候你就可改写:1234567891011.a,.b{ height:20px; width:20px; margin:10px 20px;}.a{ color:red;}.b{ color:blue;}
CSS是Cascading Style Sheet 的缩写。译作层叠样式表单。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。
你可以用以下三种方式将样式表加入您的网页。而最接近目标的样式定义优先权越高。高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。
每个属性都有一个指定的值:Inherit。它的意思是:将父对象的值等同为计算机值得到。这个值通常仅仅是备用的。显式的声明它可用来强调。
在div里给它加上一个类,给新加的类写样式。
在CSS中,继承是一种非常自然的行为,我们甚至不需要考虑是否能够这样去做,但是继承也有其局限性。
首先,有些属性是不能继承的。这没有任何原因,只是因为它就是这么设置的。举个例子来说:border属性,大家都知道,border属性是用来设置元素的边框的,它就没有继承性。如下图所示,如果继承了边框属性,那么文档看起来就会很奇怪,除非采取另外的措施关掉边框的继承属性。
多数边框类属性,比如象Padding(补白),Margin(边界),背景和边框的属性都是不能继承的。
扩展资料
CSS中的样式覆盖原则:
规则一:由于继承而发生样式冲突时,最近祖先获胜(最近原则)。
strong分别从body和p中继承了color属性,但是由于p在继承树上离strong更近,因此strong中的文字最终继承p的蓝色。
规则二:继承的样式和直接指定的样式冲突时,直接指定的样式获胜(最直接原则)。
strong {color:red;}
那么根据规则二,strong中的文字最终显示为红色。
规则三:直接指定的样式发生冲突时,样式权值高者获胜。
样式的权值取决于样式的选择器,权值定义如下表。
css选择器 权值
标签选择器 1
类选择器 10
ID选择器 100
内联样式 1000
伪元素(:first-child等) 1
伪类(:link等) 10
可以看到,内联样式的权值ID选择器类选择器标签选择器,除此以外,后代选择器的权值为每项权值之和,比如”#nav .current a”的权值为100 + 10 + 1 = 111。
所有元素可继承:
内联样式:
块状样式:
列表样式:
表格样式:
三大特性:层叠性、继承性、优先级
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突问题。
在这里会显示的颜色为pink,字体大小为20px。
子标签会继承父标签的某些样式
在这里p标签会显示红字,20px。
行高的继承
当同一个元素指定多个选择器,就会有优先级的产生
p为白色因为继承权重为0,无论父类是什么权重都不继承。
所以如果要给a设置样式就要单独设置一个a的样式。
这里显示的为蓝色,因为权重大。
最终大猪蹄子的颜色为红色,大肘子和猪尾巴为蓝色。
所谓css的继承是指被包在内部的标签将拥有外部标签的样式性质。继承特性最典型的应用通常发挥在整个网页的样式预设,需要指定为其它样式的部份设定在个别元素里即可。这项特性可以给网页设计者提供更理想的发挥空间。。css是层叠样式表(cascading style sheets)的简称。
一、继承
css的一个主要特征就是继承,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个body定义了的颜色值也会应用到段落的文本中。下面举例说明:
样式定义:
body{color:red;}
应用举例代码:
pcss的strong层叠和继承/strong深入探讨/p
这段代码的应用结果是:“css的层叠和继承深入探讨”这段话是红颜色的,“层叠和继承”由于应用了strong元素,所以是粗体。这很符合制作者的意图,也是为什么继承是css的一部分的原因。
二、css继承的局限性
在css中,继承是一种非常自然的行为,我们甚至不需要考虑是否能够这样去做,但是继承也有其局限性。
首先,有些属性是不能继承的。这没有任何原因,只是因为它就是这么设置的。举个例子来说:border属性,大家都知道,border属性是用来设置元素的边框的,它就没有继承性。多数边框类属性,比如象padding(补白),margin(边界),背景和边框的属性都是不能继承的。
三、继承中容易引起的错误
有时候继承也会带来些错误,比如说下面这条css定义:
body{color:blue}
在有些浏览器中这句定义会使除表格之外的文本变成蓝色。从技术上来说,这是不正确的,但是它确实存在。所以我们经常需要借助于某些技巧,比如将css定义成这样:
body,table,th,td{color:blue}
这样表格内的文字也会变成蓝色。
四、多种样式混合应用
既然有了继承性,那么在样式表中的应用上可能会有些读者搞不清,多个样式表同时应用到一个对象上会发生什么情形呢?先举个简单的例子:
样式定义:
.apple{color:red;}h1{color:yellow;}
应用举例代码:
h1 class="apple"这儿的苹果好红啊/h1
应用举例效果:因为选择符h1和.apple都匹配上面的h1元素,那么到底浏览器会应用哪一个呢?通过在浏览器中观察,我们发现这段文字应用了.apple这个样式,所以它显示的是红色。这是因为两条规则的特殊性不一样,css规则必须这样进行处理。
样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
统计选择符中的id属性个数。
统计选择符中的class属性个数。
统计选择符中的html标记名格式。
最后,按正确的顺序写出三个数字,不要加空格或逗号,得到一个三位数。( 注意,你需要将数字转换成一个以三个数字结尾的更大的数)。相应于选择符的最终数字列表可以很容易确定较高数字特性凌驾于较低数字的。
以下是一个按特性分类的选择符的列表:
h1 {color:blue;}特性值为:1
p em {color:purple;}特性值为:2
.apple {red;} 特性值为:10
p.bright {color:yellow;} 特性值为:11
p.bright em.dark {color:brown;} 特性值为:22
#id316 {color:yellow} 特性值为:100
从上表可以看出#id316具有更高的特殊性,因而它有更高的权重。当有多个规则都能应用于同一个元素时,权重越高的样式将被优先采用。
五、css继承的优先级问题
上面我们讨论了css的继承性和特殊性,在特殊性的框架下,被继承的特性值为0,这就意味着任何显示声明的规则将会覆盖其继承样式。因此,不管一条规则具有多高的权重,如果没有其他规则能应用于这个继承元素,那么它也只是个被继承的规则而已,举例说明。
样式定义:
body { background:black;}
li { color:gray;}
ul.white { color:white}
应用举例代码:
ul
li举例列表一/li
li举例列表二/li
li举例列表三/li
li举例列表四/li
/ul
有些读者可能认为除包含.white类的列表项显示为白色外,其余所有的列表项都应该是灰色的。然而情况并非如此。因为带选择符li的显式声明的权值比从ul.white规则那里继承过来的权值要大,所以每个列表项都是灰色的。
下面再来看一个例子,若给定如下所示的标记,则em强调文字将会是灰色的,而非黑色,因为em规则的权值要大于从h1元素继承来的权值:
样式定义:
h1#id316 { color:black;} 特性值为:101
em { color:gray;} 特性值为:1
应用举例代码:
h1 id="id316"深入探讨emcss的继承性/em/h1
这是因为第二条em规则的特性值(1)要比被继承的特性值(0)要大,事实上规定h1#id316的原始特性值(101)对其继承值没有影响,仍旧为0。
小技巧:
如果想让h1始终为黑色,而em文字在其他情况下红色,那么下面的样式表设置就是一个很好的方法:
h1,h1 em { color:black;} 特性值为:1,2
em { color:red;} 特性值为:1
给定这个规则后,除在h1元素内的任何em文字就都是红色,而h1内的em文字仍旧为黑色,由于其选择符分组,在第一条规则中就有两条有效的规则(一条是对h1的,另一条是对h1 em的)也就有两个特性值--每条规则一个。
六、人为定义css继承优先级
在制作网页的过程中,我们可能想要设置某个规则比其他的规则更重要,css中允许这样设置,它们被称为重要规则(important rule)。这是根据其声明的方式和它们的自然属性来命名的。通过在一条规则的分号前插入!important这样一个短语来标记一条重要规则,比如说:
p.apple { color:#red !important; background:white;}
颜色值#red被标记为!important,而背景色white未被标记,如果需要二条规则都是重要的话,那么每条规则都需要标上!important。
正确地放置!important的位置是很重要的,否则整条规则将为无效。!important总是放在规则声明的最后,在分号之前。
标记为!important的规则具有最高的权值,也就是说他没有具体的特性值,但是比其他的权值都要大。需要注意的是,虽然制作者定义的样式比用户定义的样式具有更高权值时,但!important规则恰恰相反:重要的用户定义规则要比制作者定义的样式具有更高权值,即使是标记为!important的重要规则也是如此。
看了这么多文字介绍后,我们来举个例子看一下:
样式定义:
h1 { color:gray !important;}
应用举例代码:
h1 style="color:black;"看这儿!/h1
应用举例效果:!important规则会覆盖内联style属性的内容,所以结果文字是灰色的而不是黑色的。
还有最后一种需要考虑的情况:继承值总是具有特性值0的特点,即使是从带有!important的规则继承的值也是如此,在匹配重要规则的元素之外,重要性也会随之消失
内容 content :盒子的主要区域,盒子中的文本内容以及后代元素都显示在内容区域中。
内边距 padding :内容与盒子边界的距离。
边框 border :边框显示在盒子的边界上。
外边距 margin :盒子和相邻兄弟元素或父元素的距离。
盒子的大小=内容的大小+内边距的大小+边框的大小
元素默认 总宽度 = 父元素内容的宽度 - 元素自己的左右外边距
元素默认 内容宽度 = 父元素内容的宽度 - 元素自己的左右外边距 - 元素自己的左右边框宽度 - 元素自己的左右内边距
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流