【CSS】CSS 属性计算过程

news2024/10/5 21:24:34

1. 概述

我们所书写的任何一个 HTML 元素,实际上都有完整的一整套 CSS 样式。如果没有修改某样式,大概率可能使用默认值。

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>这是一个h1标签</h1>
</body>
</html>

在这里插入图片描述

2. CSS 属性值计算过程

属性值的计算过程,分为如下这么 4 个步骤:

  • 确定声明值
  • 层叠冲突
  • 使用继承
  • 使用默认值

从上到下优先级依次降低。

2.1 确定声明值

所谓声明值就是你自己所书写的 CSS 样式。

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        h1 {
            color: aqua;
        }
    </style>
</head>
<body>
    <h1>这是一个h1标签</h1>
</body>
</html>

在这里插入图片描述
上述我们看到除了作者样式表,一般浏览器还会存在“用户代理样式表”,简单来讲就是浏览器内置了一套样式表。

2.2 层叠冲突

在确定声明值时,可能出现声明的样式规则发生了冲突。

此时会进入解决层叠冲突的流程:

  • 比较源的重要性
  • 比较优先级
  • 比较次序
2.2.1 比较源的重要性

整体来讲样式表有三种来源:

  • 浏览器会有一个基本的样式表来给任何网页设置默认样式。这些样式统称用户代理样式
  • 网页的作者可以定义文档的样式,这是最常见的样式表,称之为页面作者样式
  • 浏览器的用户,可以使用自定义样式表定制使用体验,称之为用户样式

对应的重要性顺序依次为:页面作者样式 > 用户样式 > 用户代理样式。(参考:MDN)

2.2.2 比较优先级

比如,同属于页面作者样式,源的重要性是相同的,此时会以选择器的权重来比较重要性。(参考:MDN)

2.2.3 比较次序

比如,同样都是页面作者样式选择器的权重也相同,此时位于下面的样式声明会层叠掉上面的那一条样式声明。

2.3 使用继承

  1. 子元素继承最近的父元素身上的属性。

  2. 可以继承的属性,直接在MDN上查阅。

    例如:
    在这里插入图片描述

2.4 使用默认值

如果前面的步骤都进行过了,那么剩下的就只能是使用默认值了。

3. 面试题

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta
        name="viewport"
        content="width=device-width, initial-scale=1.0"
    >
    <title>Document</title>
    <style>
        div {
            color: red;
        }
    </style>
</head>

<body>
    <div>
        <a href="">test</a>
        <p>test</p>
    </div>
</body>

</html>

会出现什么样的效果,为什么?

在这里插入图片描述

a 元素在用户代理样式表中已经设置了 color 属性对应的值,因此会应用此声明值。

而在 p 元素中无论是作者样式表还是用户代理样式表,都没有对此属性进行声明,然而由于 color 属性是可以继承的,因此最终 p 元素的 color 属性值通过继承来自于父元素。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

笔记本Win10系统一键重装系统教程

在Win10笔记本电脑中&#xff0c;用户发现系统出现了崩溃、卡顿等问题&#xff0c;这时候就可以重新安装系统。新安装的系统会更稳定流畅&#xff0c;可以带来更好的操作体验&#xff0c;如果您不知道具体的重装操作步骤&#xff0c;那么就可以参考下面小编分享的笔记本Win10系…

Real- Time Rendering-图形渲染管线(The graphics rendering pipeline)

1、图像渲染管线描述的是什么 图像渲染管线的主要功能是决定在给定虚拟相机&#xff0c;三维物体&#xff0c;光源&#xff0c;照明模式以及纹理等诸多条件的情况下&#xff0c;生成或者绘制一幅二维图像的过程。 渲染图像的位置&#xff0c;形状是由他们的几何形状&#xff0c…

使用GoQuery实现头条新闻采集

概述 在本文中&#xff0c;我们将介绍如何使用Go语言和GoQuery库实现一个简单的爬虫程序&#xff0c;用于抓取头条新闻的网页内容。我们还将使用爬虫代理服务&#xff0c;提高爬虫程序的性能和安全性。我们将使用多线程技术&#xff0c;提高采集效率。最后&#xff0c;我们将展…

火锅食材店配送小程序商城的作用是什么

每个城市中都有大量火锅店、自助转转店&#xff0c;当然还包括个人在家中涮菜&#xff0c;其对火锅食材的需求量非常高&#xff0c;而在市场中也有很多专营店或超市经营&#xff0c;行业中也不乏头部品牌。 对火锅食材店来说&#xff0c;长期经营及生意好的因素除了食品新鲜质…

移动端之Unity嵌入Android项目开发

目录 前言1 搭建开发环境2 创建Unity项目 2.1 新建项目2.2 Unity构建配置2.3 Android环境相关配置2.4 导出Unity库文件3 创建Android项目 3.1 新建Android项目3.2 Android环境相关配置3.2 导入Unity相关的库3.3 Android中跳转到Unity视图4 进阶扩展 4.1 包体积优化 4.1.1 mono…

Babylonjs学习笔记(六)——贴图的使用

书接上回&#xff0c;这里讨论贴图的运用&#xff01;&#xff01;&#xff01; // 创建球网格const ball MeshBuilder.CreateSphere(ball,{diameter:1},scene)ball.position new Vector3(0,1,0)// 创建PRB材质const ballMat new PBRMaterial(pbr,scene)// albedoTexture 反…

通过实例理解Go Web身份认证的几种方式

在2023年Q1 Go官方用户调查报告[1]中&#xff0c;API/RPC services、Websites/web services都位于使用Go开发的应用类别的头部(如下图)&#xff1a; 我个人使用Go开发已很多年&#xff0c;但一直从事底层基础设施、分布式中间件等方向&#xff0c;Web应用开发领域涉及较少&…

14 结构性模式-适配器模式

1 适配器模式介绍 适配器模式(adapter pattern )的原始定义是&#xff1a;将类的接口转换为客户期望的另一个接口&#xff0c;适配器可以让不兼容的两个类一起协同工作。 2 适配器模式原理 3 适配器模式应用实例 /*** SD卡接口**/ public interface SDCard {//读取SD卡Strin…

【Docker】什么是Docker?看这一篇干货文章就够了!

目录 前言 容器技术的起源 容器技术 vs 虚拟机 什么是容器 什么是docker 如何使用docker docker的底层实现 总结 前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或…

斯德博STOBER伺服驱动器维修MDS5040A

STOBER斯德博驱动器常见故障维修如下&#xff1a; 当伺服驱动器给出移动指令而机床不移动&#xff0c;则伺服器维修故障原因可能是&#xff1a;机械传动卡住。如果故障发生在垂直轴控制时&#xff0c;则故障为伺服电动机的电磁制动回路。伺服电动机及动力线有断相故障或伺服电…

2024通信保研-电磁场电磁波复习

标量场的梯度的旋度恒等于0&#xff0c;旋度的散度等于0。 旋度&#xff1a; rot ⁡ F ( e x ∂ ∂ x e y ∂ ∂ y e z ∂ ∂ z ) ( e x F x e y F y e z F z ) e x ( ∂ F z ∂ y − ∂ F y ∂ z ) e y ( ∂ F x ∂ z − ∂ F z ∂ x ) e x ( ∂ F y ∂ x − ∂ F x …

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程 1 Jmeter安装1.1 下载安装1.2 Jmeter汉化1.2.1 临时修改1.2.2 永久修改 1.3 验证环境 2 测试对象2.1 测试对象说明2.2 测试对象安装2.2.1 下载安装2.2.2 启动测试对象服务2.2.3 访问测试对象2.…

JAVA 版多商家入驻 直播带货 商城系统 B2B2C 商城源码之 B2B2C产品概述 商城免费搭建

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

美团圈圈私域社群app拉新怎么做,申请推广渠道

首先说下美团私域社群app拉新申请渠道&#xff0c;可以通过“聚量推客”进行申请聚量推客首码邀请&#xff1a;000000 1、流程&#xff1a;用户点击活动专属链接进入扫码进群页面&#xff0c;长按二维码进入美团圈 圈多重福利群&#xff0c;用户首次进群且保持 10 天不退群即符…

地方门户系统源码 同城信息系统源码 家政外卖跑腿同城信息门户源码

地方门户系统源码 同城信息系统源码 家政外卖跑腿同城信息门户源码 系统介绍&#xff1a; 一&#xff1a;系统 后台设置:菜单列表 管理员管理:角色管理,操作日志,禁止访问IP段列表,管理员登录日志 二&#xff1a;设置 基础设置&#xff1a;站点设置&#xff0c;附件设置&a…

转岗项目经理后,我是如何分析需求的

项目经理有一项工作就是需求分析&#xff0c;需求的本质是根据认知进行假设&#xff0c;然后给出判断。如果需求分析的结果出了问题&#xff0c;那么产品也必然会失败。本文针对如何进行需求分析展开分析&#xff0c;希望能对你有所启发。 一、什么是需求 为什么要明确需求的…

笔记本触摸板怎么开?教你5个实用方法!

“新买了一个笔记本&#xff0c;但是触摸板一直无法打开&#xff0c;应该怎么进行操作呢&#xff1f;有什么方法可以打开笔记本触摸板吗&#xff1f;” 为了方便办公和使用笔记本&#xff0c;笔记本电脑上通常都会有一个触摸板。我们可以用它代替鼠标&#xff0c;更好地进行操作…

可视化沟通解析

如果我们去吃饭看到如下菜单 我想对于当事人而言&#xff0c;这个绝对不是点菜吃饭&#xff0c;而是一场韩语考试。 但是我们看到如下这个菜单会怎么样 如果我们看到这种菜单&#xff0c;即使我们不知道菜的名字我们也能很快的做出我们想要的选择&#xff0c;那样得到的菜不会…

JVM进阶(2)

一)方法区: java虚拟机中有一个方法区&#xff0c;该区域被所有的java线程都是共享&#xff0c;虚拟机一启动&#xff0c;运行时数据区就被开辟好了&#xff0c;官网上说了方法区可以不压缩还可以不进行GC&#xff0c;JAVA虚拟机就相当于是接口&#xff0c;具体的HotSpot就是虚…

IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources

一、问题 scala: No scalac found to compile scala sources 官网 Bug 链接 二、临时解决方案 Incrementality Type 先变成 IDEA 类型 Please go to Settings > Build, Execution, Deployment > Compiler > Scala Compiler and change the Incrementality type to …