CSS学习笔记(十) 样式覆盖规则

简介: CSS学习笔记(十) 样式覆盖规则

有的时候 CSS 真的十分调皮,明明我们给一个元素指定了样式,但是在页面上却没有一点改变

这时我们就要考虑是不是别处指定的样式覆盖了当前指定的样式呢?

所以了解一下样式覆盖规则还是十分有必要的,对于一个元素的某个属性而言,表现出来的样式会遵循以下的规则


(1)内联样式 > 内部样式表 / 外部样式表


<!DOCTYPE HTML>
<html>
<head>
    <style>
        #title { color: red; } /* 内部样式表 */
    </style>
</head>
<body>
    <div style="color: green;" id="title"> <!-- 内联样式 -->
        Hello World
    </div>
</body>
</html>


【最终效果(内联样式 优先)】Hello World


(2)在内部样式表 / 外部样式表中,直接指定的样式 > 继承祖先的样式


<!DOCTYPE HTML>
<html>
<head>
    <style>
        #title { color: red; }
        span { color: green; } /* 直接指定 span 标签样式 */
    </style>
</head>
<body>
    <div id="title">
        <span>Hello World</span> <!-- span 标签也会继承 div 标签的样式 -->
    </div>
</body>
</html>


【最终效果(直接指定的样式 优先)】Hello World


(3)对于直接指定的样式,权值大的优先;如果权值相同,后定义的优先【重要】


当直接指定的样式发生冲突时,根据定义该样式的选择器的权值大小进行比较,权值大的优先

选择器的权值计算定义如下:

  • id 选择器 >> class 选择器 >> 标签选择器,其中同一类型的选择器权值相同
  • 后代选择器的权值等于其包含的各级选择器的权值之和


<!DOCTYPE HTML>
<html>
<head>
    <style>
        #title span { color: red; } /* 后代选择器 = id 选择器(#title) + 标签选择器(span) */
        #intro { color: green; } /* id 选择器(#intro) */
    </style>
</head>
<body>
    <div id="title">
        <span id="intro">Hello World</span> <!-- id 选择器 + 标签选择器 > id 选择器 -->
    </div>
</body>
</html>


【最终效果(权值大的优先)】Hello World


(4)对于继承祖先的样式,最近祖先优先


当继承祖先的样式发生冲突时,根据继承的关系进行比较,最近祖先优先

<!DOCTYPE HTML>
<html>
<head>
    <style>
        #title { color: red; }
        #intro { color: green; }
    </style>
</head>
<body>
    <div id="title"> <!-- 对于下面的 span 标签来说,在继承树上距离较远 -->
        <div id="intro"> <!-- 对于下面的 span 标签来说,在继承树上距离较近 -->
            <span>Hello World</span>
        </div>
    </div>
</body>
</html>


【最终效果(最近祖先优先)】Hello World


(5)!important 声明无视上面的规则,其指定的样式永远不被覆盖【重要】


其实这样的说法或许还有些许不准确,因为(有且仅有) !important 声明可以覆盖 !important 声明


<!DOCTYPE HTML>
<html>
<head>
    <style>
        #title { color: red!important; } /* 加上 !important 声明的内部样式表 */
    </style>
</head>
<body>
    <div style="color: green;" id="title"> <!-- 内联样式 -->
        Hello World
    </div>
</body>
</html>

【最终效果(!important 声明优先)】Hello World


目录
相关文章
|
7天前
|
前端开发
particlesJS使用简介,CSS字体样式值
particlesJS使用简介,CSS字体样式值
|
7天前
|
前端开发
CSS优先级:如何解决样式冲突?
CSS优先级:如何解决样式冲突?
|
8天前
|
前端开发 数据安全/隐私保护
利用 HBuilderX 设置CSS样式会员注册页面
利用 HBuilderX 设置CSS样式会员注册页面
14 1
|
8天前
|
前端开发
css设置内嵌样式阴影
css设置内嵌样式阴影
12 0
|
8天前
|
前端开发
css样式实现一个滑动按钮
css样式实现一个滑动按钮
17 0
|
8天前
|
前端开发 UED
CSS 支持伪类和伪元素,可用于指定文档中不同状态的样式
【5月更文挑战第7天】CSS 提供关键帧和过渡动画两种方式创建动态效果。关键帧动画通过定义一系列样式的关键帧,浏览器自动插入过渡帧形成动画,如示例中背景颜色变化的循环。过渡动画则在属性改变时(如鼠标悬停)触发,展示平滑转换,如 div 元素尺寸变化。通过调整帧时间、顺序和样式,可实现更复杂的动画,增强网站交互体验。
33 4
|
8天前
|
编解码 前端开发 UED
【专栏:HTML 与 CSS 移动端开发篇】CSS 媒体查询与移动端特定样式
【4月更文挑战第30天】CSS媒体查询在移动端开发中至关重要,它基于设备特性(如屏幕尺寸、分辨率、方向)应用特定样式,实现响应式设计。通过`@media`规则定义条件,如`(max-width: 600px)`,当屏幕宽度小于或等于600px时应用相应样式。常见条件包括屏幕宽度、高度、方向和分辨率。媒体查询可用于响应式布局、导航菜单优化、图片加载及字体调整。在实践中,需注意保持查询简洁,充分测试,渐进增强,并提前规划。掌握媒体查询能提升移动端用户体验,创造更优秀的网页设计。
|
8天前
|
开发框架 前端开发 搜索推荐
标题:【专栏:CSS进阶篇】CSS样式重置与框架:快速构建统一风格的网页
【4月更文挑战第30天】本文探讨了CSS样式重置和框架在确保网页跨浏览器一致性中的作用。样式重置通过消除默认样式差异实现一致外观,而CSS框架如Bootstrap提供预设样式和组件,加速开发并保证页面一致性。框架还有响应式设计和易于维护的优点,但也可能限制自定义和增加性能开销。选择使用哪种工具应根据项目需求、团队技能和设计复杂度来决定。开发者可结合使用两者以平衡灵活性和控制。
|
8天前
|
前端开发 UED
【专栏:CSS 基础篇】CSS 字体与文本样式:美化你的网页内容
【4月更文挑战第30天】网页设计中,字体和文本样式至关重要,影响视觉效果和用户体验。CSS允许设计师设置字体家族、大小、颜色、加粗、倾斜、行高和对齐方式等。高级特性包括引入外部字体和使用字体变体。响应式设计适应不同设备,确保良好阅读体验。实际案例和最佳实践强调易读性和一致性。掌握这些技巧能提升网页美感和用户交互,创造更多可能。
|
8天前
|
前端开发 UED
【专栏:CSS 基础篇】CSS 入门:给网页添加样式
【4月更文挑战第30天】CSS是网页设计的关键,用于控制网页样式和布局。它通过选择器(如元素、类和ID)来设定颜色、字体、对齐、背景等属性。CSS可内嵌、外部引用或行内设置。布局技巧包括浮动、定位和弹性盒子。响应式设计利用媒体查询适应不同设备。不断实践和学习CSS,能提升网页的吸引力和用户体验。一起探索CSS的魅力吧!