热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS继承性及层叠性

我们知道,对于面向对象开发语言,比如:Java、C++、JavaScript、C#等的都有一个非常重要的特性,也就是继承性。那么在CSS中也有这样的特性。CSS继承性CSS中父元素的

我们知道,对于面向对象开发语言, 比如:Java、C++、Javascript、C#等的都有一个非常重要的特性,也就是继承性。那么在CSS中也有这样的特性。

CSS继承性

CSS中父元素的一些属性能够被其后代元素继承,在这实际开发中非常的重要。先通过一个简单的列子来感知一下CSS的继承性。


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
div {
color: blue;
border: 1px solid #ccc;
}

style>
head>
<body>
<div>
<p>我是段落p>
<p>我是段落p>
<p>我是段落p>
div>
body>
html>

运行图:

这里写图片描述

哎,这样利用CSS的继承性我们就可以把一些通用的属性写在父元素里,对于特殊的属性我们自己在来处理,那么CSS中哪些属性能够被继承勒?

1. color

2. font-开头

3. text-开头

4. line-开头

再来看一个例子


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
body{
color: red;
font-size: 16px;
text-decoration: underline;
line-height: 16px;
}

style>
head>
<body>

<div>
<div>
我是文字
<div>
我是文字
<div>
<span>我是文字span>
div>
div>
div>
div>
body>
html>

运行图:

这里写图片描述

看见了吧,这就是CSS继承性的一些用法,而且无论后代元素多深,都能够继承到父元素的这些属性,也就是说继承性是从自己开始,直到最小的元素。

CSS的层叠性

就是css处理冲突的能力。 所有的权重计算,没有任何兼容问题!

我们假设一个场景,html代码中有一个p标签,该p标签有类选择器和id选择器,同时分别使用标签选择器、类选择器及id选择器来给该p标签的文字赋予字体颜色的语义化,那么该p标签最终是什么颜色的尼?


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
p{
color: rebeccapurple;
}


.pp {

color: red;
}


#para1 {
color: blue;
}


style>
head>
<body>
<p class="pp" id="para1">猜猜我是什么颜色p>
body>
html>

哎呀,这个p标签到底是什么颜色啊?如果不懂CSS层叠性的小伙伴们可能一下子就懵逼了。来看看运行效果图就知道了。

这里写图片描述

最终答案是绿色。也不给大家卖关子了,其实对于层叠性,是有规律可循的。那么这个规律是什么勒?再看一个例子。


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
#b1 .box2 p{
color: rebeccapurple;
}


.box1 .box3 p {

color: red;
}


div.box1 div.box2 div.box3 p {
color: blue;
}


style>
head>
<body>
<div class="box1" id="b1">
<div class="box2" id="b2">
<div class="box3" id="b3">
<p>猜猜我是什么颜色p>
div>
div>
div>
body>
html>

看运行图:

这里写图片描述

我们可以看到,最终p标签的文字是黄色的。这层叠性到底怎么能够让我们一下子知道哪些选择器被层叠掉了勒?

我们从上面的例子可以观察到,对于第一组选择器有1个id选择器1个类选择器1个标签选择器,我们可以记住1,1,1。第二组0个id选择器2个类选择器1个标签选择器,记作0,2,1。类推下去,我们要数id选择器、类选择器、标签选择器的个数。

这些选择器是不进位的,也就是说无论id选择器、类选择器、标签选择器分别对应的个数是多少都不会进位,但其实又是进位的,比如255个标签选择器等同于1个类选择器,但是没有任何实际意义。

那么对于层叠性的权重是一样的,该怎么去判断?


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
#b1 .box2 p{
color: yellow;
}


#b1 div .pp{
color: red;
}


style>
head>
<body>
<div class="box1" id="b1">
<div class="box2" id="b2">
<div class="box3" id="b3">
<p class="pp">猜猜我是什么颜色p>
div>
div>
div>
body>
html>

看到上面的两组选择器权重都是1,1,1.那么最终有效的是哪个?

这里写图片描述

发现选择了第二个,也就是说如果权重相同,就选择最后一个

上面我们都说的是该标签是直接被选择到,那么对于没有直接选择到的,该怎么处理,先看代码


<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<style>
#b1 #b2 #b3{
color: yellow;
}


div.box1 div.box2 div.box2{
color: red;
}


p{
color: green;
}


style>
head>
<body>
<div class="box1" id="b1">
<div class="box2" id="b2">
<div class="box3" id="b3">
<p class="pp">猜猜我是什么颜色p>
div>
div>
div>
body>
html>

我们看到,第一组选择器的权重按照我们上面的规律来看是3,0,0;第二组是0,3,3;第三组是0,0,1。按道理最终该p标签文字颜色应该是黄色,那么到底是不是?

这里写图片描述

发现最终是绿色的。到底为啥会这样勒?因为第一组、第二组选择器都没有直接选择上p标签,它们的权重最终都是0,0,0,这样第一组、第二组权重为0第三组权重为:0,0,1。

CSS层叠性总结

1. 当选择器,选择上了某个元素的时候,那么要这么统计权重(id的数量,类的数量,标签的数量)

2. 不进位,实际上能进位(奇淫知识点:255个标签,等于1个类名)但是没有实际意义!

3. 如果权重一样,那么以后出现的为准

4. 如果不能直接选中某个元素,通过继承性影响的话,那么权重是0。

5. 如果大家都是0,那么有一个就近原则:谁描述的近,听谁的。

OK,关于CSS继承性和层叠性就介绍到这里,这篇文章中的内容很重要很重要很重要哦


推荐阅读
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 表单提交前的最后验证:通常在表单提交前,我们必须确认用户是否都把必须填选的做了,如果没有,就不能被提交到服务器,这里我们用到表单的formname.submit()看演示,其实这个对于我们修炼道 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了一种在PHP中对二维数组根据某个字段进行排序的方法,以年龄字段为例,按照倒序的方式进行排序,并给出了具体的代码实现。 ... [详细]
  • 但有时候,需要当某事件触发时,我们先做一些操作,然后再跳转,这时,就要用JAVASCRIPT来实现这一跳转功能。下面是具体的做法:一:跳转到新页面,并且是在新窗口中打开时:复制代码代码如下:fu ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
author-avatar
不爽我就来吐槽_320
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有