CSS-0_2 CSS和继承(inherit initial)

文章目录

  • CSS的层叠和继承
    • inherit
    • initial
      • 很多你以为的样式初始值,其实是用户代理样式
    • 碎碎念

CSS的层叠和继承

在上一篇 CSS和层叠、样式优先级 里已经讲过了层叠和优先级之间的关系,但是在CSS中的层叠除了体现在争抢露脸机会的优先级之外,还体现在属性的延续性上


就像这样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="blue_word">
    <h1 id="h">我是div1中的文字</h1>
</div>
</body>
</html>

<style>
    .blue_word {
        color: blue;
    }
</style>

在这里插入图片描述

道友你有没有想过,为什么明明被选中的是外层元素的类选择器,可内部的元素的字体颜色也跟着变了?

事实上这是CSS中的一个性质,我们管他叫继承。对,css中的样式继承

在一些属性没有指明属性值的情况下,css会自动让他应用父元素的对应样式。但并不是所有的属性都会被继承,通常来说只有跟文本有关系的,比如 font-*,color,text-* 等等。以及一些列表相关的属性会被继承

盒模型有关的内容,比如margin、padding、border之类的属性则不会,也不应该被继承

但是如果你硬要让一个不会被继承的属性去继承,那可以使用关键字——inherit



inherit

inherit,本身就是继承的意思,这个关键字简单明了。使用这个关键字后,所指定属性的属性值将会和父元素一致

最常见的用法,是用在统一那些被用户代理样式带偏的特殊标识,比如标签

就像这样:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <p>
            我是p标签里的内容:<a href="#">我是a标签里面的内容</a>
        </p>
    </body>
</html>

<style>
    p{
        color: green;
    }
    p a{
        text-decoration: none;
    }
</style>

在这里插入图片描述


我明明希望整个p标签里面的文字都是绿色的,但是由于a标签的用户代理样式为他指定了color属性,所以他不会继承标签的color样式(这不是因为优先级的问题)。我希望a标签里面的字体颜色跟着p标签走,这样我改颜色的时候就不用改两个地方


所以这时候我们不会这样做:

p,p a{
    color: green;
}
p a{
    text-decoration: none;
}

而是会这样做:

p{
    color: green;
}
p a{
    color:inherit;/*继承p的color属性*/
    text-decoration: none;
}

他们的效果都是一样的:

在这里插入图片描述



initial

当你希望把某个属性还原到最原始的状态时,可以使用initial关键字

比如说,还是用a标签举例,如果上例变成这样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>
    我是p标签里的内容:<a href="#">我是a标签里面的内容</a>
    <br>
    <a href="#" id="a2">我是第二个a标签里面的内容</a>
</p>
</body>
</html>

<style>
    p{
        color: green;
    }
    p a{
        color:inherit;
        text-decoration: none;
    }

    #a2{
        color: initial;
    }
</style>

前面的部分没有改,但是我们新加入了id值为a2的a标签,并把她的color值初始化(因为id选择器优先级更高,所以这个initial是一定生效的)。那么问题来了,这时候a2的文字应该是什么颜色呢?


我相信会有道友回答蓝色,但事实上,他是黑的:

在这里插入图片描述

为什么会回答蓝色,因为a标签不经过任何处理的情况下就是蓝色字体啊

可你想过没有,a标签的蓝色字体是用户代理样式给他的,而不是说a标签本身就是蓝色字体


initial关键字的作用,是把对应的属性值重置,而不是重置成用户代理样式

他是跟着具体属性走的,跟任何标签都没有关系,color属性的初始值,就是黑色


很多你以为的样式初始值,其实是用户代理样式

如果你对initial的这一特性不了解,那就会对他的一些行为觉得很诡异,比如这个:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>A</div>
</body>
</html>

<style>
    div{
        background: skyblue;
    }
</style>

在这里插入图片描述

理论上来说,就算我把下面的样式改成这样:

div{
    display: initial;
    background: skyblue;
}

我得到的页面也应该是一样的


可结果让人大跌眼镜:

在这里插入图片描述

这看起来就好像她变成了一个 行内元素 一样!


是的,他就是变成了一个行内元素,根据 MDN 的说明,display这个属性的初始值应该是:inline,哪怕是div也不例外

在这里插入图片描述

——https://developer.mozilla.org/zh-CN/docs/Web/CSS/display

你可以理解成 initial 这个关键字针对的是当前这种属性,跟元素无关。事实上不同的标签对css指定样式来说确实没有什么关系,他们对css来说只在标签选择器里起作用而已



碎碎念

  • css的一些属性是可以自动继承的,但是这些属性大都是文本相关和列表相关的属性
  • 你可以通过inherit关键字强制让某个属性继承父元素的值
  • 你可以通过initial关键字把指定的属性重置,这种重置不是重置成用户代理样式





万分感谢您看完这篇文章,如果您喜欢这篇文章,欢迎点赞、收藏。还可以通过专栏,查看更多与【CSS笔记】有关的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/719193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pyqt QCustomPlot 简介、安装与实用代码示例(三)

目录 前言实用代码示例Line Style DemoDate Axis DemoParametric Curves DemoBar Chart DemoStatistical Box Demo 所有文章除特别声明外&#xff0c;均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nixgnauhcuy’s blog&#xff01; 如需转载&#xff0c;请标明出处&#x…

【一文开启StableDiffusion】最火AIGC绘画工具SD阿里云部署指南(含踩坑经验)

Midjonery使用简单&#xff0c;效果出色&#xff0c;不过需要付费。本文将介绍完全开源的另一款产品StableDiffusion&#xff0c;它的社区目前非常活跃&#xff0c;各种插件和微调模型都非常多&#xff0c;而且它无需付费注册&#xff0c;没有速度、网络限制&#xff0c;非常推…

广州巨控科技GRM230系列无线模块:环保监控的新利器*

​近日&#xff0c;广州巨控科技推出了一款功能强大的无线模块——GRM230系列&#xff0c;其独特的IO输入输出与485通讯功能&#xff0c;在环保、河道水质检测、流量液位无线4G传输等方面展现出显著的应用优势&#xff0c;尤其在远程泵站启停与监控领域取得了显著成效。 一、G…

有趣且重要的JS知识合集(22)树相关的算法

0、举例&#xff1a;树形结构原始数据 1、序列化树形结构 /*** 平铺序列化树形结构* param tree 树形结构* param result 转化后一维数组* returns Array<TreeNode>*/ export function flattenTree(tree, result []) {if (tree.length 0) {return result}for (const …

分数计算 中级题目

分数计算 中级题目&#xff1a;多个数参与的计算 参考答案&#xff1a;【仅供参考】CBBCCBCCCC

【语义分割系列】基于camvid数据集的Deeplabv3+分割算法(二)

基于camvid数据集的Deeplabv3+分割算法 前言 在前面的内容中,对比了Camvid数据集在基于不同backbone的Deeplabv3+算法上的效果。在这节内容中,本文将介绍在ghostnet的基础上,进一步优化效果,使得Miou提升。通过引入CFAC和CARAFE结构,有效地提升了模型的miou。 1.代码部…

国际期货投机交易的常见操作方法:

一、在开仓阶段&#xff0c;入市时机的选择&#xff1a; &#xff08;1&#xff09;通过基本分析法&#xff0c;判断市场处于牛市还是熊市 开仓阶段&#xff0c;入市时机的选择&#xff1a;当需求增加、供给减少&#xff0c;此时价格上升&#xff0c;买入期货合约&#xff1b…

Element-ui中Table表格无法显示

Element-ui中Table表格无法显示 在使用过程中发现样式正常显示但是table就是不显示&#xff0c;研究了一段时间后&#xff0c;发现问题是项目结构的问题 当你创建vue和安装el的时候&#xff0c;一定要注意进入到正确的项目文件夹&#xff0c;如果在外面也出现一个package.jso…

ARDUINO NRF24L01

连线 5v 3.3皆可 gnd Optimized high speed nRF24L01 driver class documentation: Optimized High Speed Driver for nRF24L01() 2.4GHz Wireless Transceiver 同时下载同一个程序 案例默认引脚ce ces &#xff0c;7&#xff0c;8 可以 修改为 9,10 安装库 第一个示例 两…

【driver8】

1.USB 2.磁盘缓存&#xff0c;页缓存 3.平均负载

传感器在智能家居中的应用

在物联网时代&#xff0c;智能家居成为人们生活中的重要组成部分。而传感器作为实现智能家居的基础设备&#xff0c;起到了关键的作用。不同类型的传感器能够获取环境中的各种参数&#xff0c;并通过物联网技术实现与智能家居系统的连接。例如&#xff0c;温度传感器可以实时监…

力扣每日一题 6/17 枚举+双指针

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 522.最长特殊序列II【中等】 题目&#xff1a; 给定字符串列表 strs &…

6.17作业

升级优化自己应用程序的登录界面。 要求&#xff1a; 1. qss实现 2. 需要有图层的叠加 &#xff08;QFrame&#xff09; 3. 设置纯净窗口后&#xff0c;有关闭等窗口功能。 4. 如果账号密码正确&#xff0c;则实现登录界面关闭&#xff0c;另一个应用界面显示。 //发送端头文件…

scratch3编程01-山地足球+射击游戏

目录 一&#xff0c;山地足球 1&#xff0c;基础&#xff08;需要的素材&#xff09; 1&#xff09;使用“重复执行直到”语句块 2&#xff09;使用“如果那么否则”语句 2&#xff0c;效果 3&#xff0c;sb3文件 一&#xff0c;击败小怪兽 1&#xff0c;基础&#xff0…

基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统架构 4.2 GoogLeNet网络简介 4.3 手势检测 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 训练过程如下&#xff1a; 将摄像头对准手势&#xff0c;然后进行…

HPC环境下文件流转最容易忽视的安全问题是什么?

半导体芯片设计企业将IC设计、仿真、验证过程上云&#xff0c;已成为越来越广泛的共识。企业使用HPC环境能满足 EDA 工作负载前端仿真百万随机 IO 小文件&#xff0c;后端仿真海量顺序读写大文件的高并发访问需求&#xff0c;简化 EDA 的工作流程&#xff0c;降低了仿真作业的时…

vue分类

先看效果 再看代码 <category-tab v-model"params.area" name"地区" :list"areaList" /><category-tab v-model"params.type" name"类型" :list"typeList" /><category-tab v-model"params.…

Semantic Kernel 中的流式输出SSE与Vue3前端接收示例

本文将介绍如何在使用 Semantic Kernel 框架的 ASP.NET 项目中使用流式输出 SSE&#xff08;Server-Sent Events&#xff09;&#xff0c;并展示如何在Vue3前端应用中接收这些数据。并介绍了如何使用 microsoft/fetch-event-source 库使用 POST 方法来接收 SSE 数据。 1. 背景 …

【单片机毕业设计选题24013】-基于STM32的城市垃圾分类引导系统

系统功能: 1、系统具有语音识别功能&#xff0c;可以对厨余垃圾、其他垃圾、有害垃圾、可回收垃圾进行语音识别&#xff1b; 2、系统可根据语音识别结果直接开启对应类别的垃圾桶&#xff0c;引导分类投放&#xff1b; 3、系统具有语音播报功能&#xff0c;可以语音播报出识…

Dapr分布式应用运行时初探2

Dapr是一个很优秀的分布式应用运行时&#xff0c;在本篇里我们来说一下Dapr的几个特色功能。 为了方便介绍&#xff0c;我简单画了个思维导图&#xff0c;如下所示&#xff1a; 众所周知&#xff0c;新技术的产生是为了解决现存的问题。从上面的思维图中我们可以了解下Dapr这…