css实战手册第四版 pdf_你真的了解CSS继承吗?看完必跪

也许你瞧不起以前的 css ,但是你不该再轻视眼下的 css 。近年来 css 的变量系统已逐步得到各大浏览器厂商支持,自定义选择器等强势袭来,嵌套系统/模块系统也在路上...为了更好的掌握 css 这门语言,很有必要把之前零零散散的 css 知识回炉重造下。

css 作为一门语言而,也有其继承原理,虽然简单,你却未必掌握。

dca72b86eb2a69e97d6882cf3e1fd867.png

属性的是否默认继承

初始值是指当属性没有指定值时的默认值,如这些语句的值都是默认值:background-color: transparent、left: auto 、float: none、width: auto 等。

css 的继承很简单,分为默认继承的和默认不继承的,但所有属性都可以通过设置 inherit 实现继承。

当没有指定值时,默认继承的属性取父元素的同属性的计算值(相当于设置了 inherit ),默认不继承的属性取属性的初始值(时相当于设置了 initial )。

默认继承的 ("Inherited: Yes") 的属性:

  • 所有元素默认继承:visibility、cursor
  • 内联元素默认继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction
  • 块状元素默认继承:text-indent、text-align
  • 列表元素默认继承:list-style、list-style-type、list-style-position、list-style-image
  • 表格元素默认继承:border-collapse

默认不继承的("Inherited: No") 的属性:

  • 文本属性默认不继承:vertical-align、text-decoration、text-shadow、white-space、unicode-bidi
  • 盒子属性默认不继承:display、width、height、padding、margin、border、min-width、min-height、max-width、max-height、overflow、clip
  • 背景属性默认不继承:background、background-color、background-image、background-repeat、background-position、background-attachment
  • 定位属性默认不继承:float、clear、position、top、right、bottom、left、z-index
  • 内容属性默认不继承:content、counter-reset、counter-increment
  • 轮廓属性默认不继承:outline-style、outline-width、outline-color、outline
  • 页面属性默认不继承:size、page-break-before、page-break-after
  • 声音属性默认不继承:pause-before、pause-after、pause、cue-before、cue-after、cue、play-during

可以看到涉及到文本相关的属性,都是默认继承的,毕竟 css 设计之初就是为了更好的在网页上呈现文字。

需要注意的是,部分属性的默认值是会根据元素的 display 属性的值而计算的,比如 vertical-align 属性,如果是 display: inline 元素,则其计算值为基线对齐 vertical-align: baseline ,如果是 display: inline-block 元素,则其计算值为 vertical-align: bottom 。

通用属性值 initial、inherit 和 unset

css 为控制继承提供了四个特殊的通用属性值(属性 revert 只有很少的浏览器支持,所以实际上是三个),每个 css 属性都能使用这些值。

  • inherit

设置该属性会使子元素属性和父元素相同。实际上,就是“开启继承”。

  • initial

将属性的初始值应用于元素。实际上,就是“重置为默认值”。

  • unset

将属性重置为自然值,也就是如果属性是自然继承的那么就是 inherit ,否则和 initial 一样。

实例

这些通用属性值可以有很多妙用,举个栗子:

  1. 利用 inherit 实现如下图片倒影:
f6336c14359e08d2faceb931bb6bf13e.png
div::after { content: ""; position: absolute; top: 100%; left: 0; right: 0; bottom: -100%; background-image: inherit; // 背景图片继承,这一般人想不到吧... transform: rotateX(180deg);}web前端开发学习Q-q-u-n: 784783012 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频,PDF)
  1. 利用 initial 重置 left 为默认值 auto:地址
div { position: absolute; left: 20px; top: 20px;}div + div { left: initial; right: 20px;}
84aaaa42392f8128d27e29eec1940012.png

例子中 div 设置过了 left ,div2 的 right 若要生效,须将 left 重置为初始值 initial (或者 unset)。

  1. 利用 unset 将属性重置为未设置之前的值:地址
802649a60463e1a923f3d2fa934f46da.png

例子中 p 标签的 color 是默认继承属性,所以此时 color: unset 相当于 color: inherit 。 p 标签的 border 属性是默认不继承属性,所以此时 border: unset 相当于 border: initial 。

.unset { border: unset; color: unset;}web前端开发学习Q-q-u-n: 784783012 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频,PDF)

总结

css 的继承真的很简单,只需要记住那些默认继承的,剩下的都是默认不继承的。而默认继承的元素除了文本相关的哪些,只有 visibility、cursor 比较常用了,也是比较容易记得的。

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

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

相关文章

hibernate级联操作详解

2019独角兽企业重金招聘Python工程师标准>>> 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) l Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade: none,all,save-update,delete, lock,ref…

Oracle数据库的备份与恢复

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。一、 导出/导入(Export/Import)…

关于Windows® API Code Pack for Microsoft® .NET Framework

相比之前的操作系统,Window 7(or Vista)提供了很多新特性,我们在应用实现中可以利用这些特性来提升用户体验。 这些特性主要包括以下几个方面: Shell EnhancementsDirectX TechnologiesApplication Restart and Recove…

出门就背他了!可伸缩的背包,自由变大变小,还有防盗功能!

▲ 点击查看出门能不背包就不背包,几乎是小爆身边每个男生的人生信条。不背包时,两手空空一身轻,潇洒有型。但一旦到了必须背包,比如五一外出回家或旅游的时候,男同胞们翻箱倒柜找出来的背包,大多都是这种双…

C#实现网页加载后将页面截取成长图片 | Playwright版

前言如何将网页生成预览图?要实现这个功能,可以用WebBrowser组件模拟浏览器,或者使用系统浏览器访问网页,再进行截图操作。但是,这样需要编写大量的控制代码。工欲善其事,必先利其器!利用Playwr…

Android安全与逆向之Dex动态加载

Dex动态加载是为了解决什么问题? 在Android系统中,一个App的所有代码都在一个Dex文件里面。 Dex是一个类似Jar的存储了多个Java编译字节码的归档文件。 因为Android系统使用Dalvik虚拟机,所以需要把使用Java Comp…

python链接mysql报错2003_Python连接Mysql报错问题解决

import MySQLdb #打开数据库 db MySQLdb.connect("127.0.0.1","root","123456","testdb",3306) #使用corsor()方法获取操作游标 cursor db.cursor() #使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") #使…

死锁示例代码

死锁产生实例&#xff0c;两个线程两个互斥锁&#xff0c;每个线程占有一个互斥锁&#xff0c;同时想获得另一个互斥锁则会产生死锁。解决方案&#xff1a;  1.一次占有全部资源  2.每个线程占有锁的顺序是一致的。比如都是同时占有A&#xff0c;然后占有B锁。#include <…

从服务器上的数据库备份到本地

可以直接在数据库进行操作&#xff1a;把需要备份的数据库选择生成脚本。生成脚本有一个高级选项&#xff0c;可以设置数据库架构跟数据。然后在本地新建一个跟备份数据库一样的数据库名称&#xff0c;进行运行脚本。就可以了。如果不新建一个数据库。就会报错。转载于:https:/…

Android之在ubuntu上用aapt查看apk的名字以及相关信息

第一步:如何快速找把手机里面的apk文件本地 如果我们不知道apk的包名,我们先打开需要的apk,然后再打开终端,输入下面命令获取这个apk的包名 adb shell dumpsys activity 查看当前apk的包名,有了包名,然后我们可以快快速获取apk,参照我的另外一篇博客 http://blog.csdn.n…

nodejs项目_多人群聊实现其实很简单:Nodejs+WebSocket+Vue轻松实现Web IM

点击右上方红色按钮关注“web秀”&#xff0c;让你真正秀起来前言在《Nodejs WebSocket简单介绍及示例 - 第一章》中简单的介绍了&#xff0c;Nodejs WebSocket的使用方法及作用&#xff0c;今天就用它来搭建一个简单的聊天室功能。1、NodejsWebSocket创建后台服务器功能 2、…

支付宝 .NET SDK 报错:RSA签名遭遇异常,请检查私钥格式是否正确。

AlipaySDKNet 是 .NET 平台下用于对接支付宝支付的官方 SDK。Alipay SDK for .NET 让您不用复杂编程即可访问支付宝开放平台开放的各项能力&#xff0c;SDK可以自动帮您满足能力调用过程中所需的证书校验、加签、验签、发送HTTP请求等非功能性要求。其 Nuget 链接如下&#xff…

交友软件上的两种网友类型......

1 轻轻松松月入五千的方法&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 像极了期末复习的你&#xff08;via.段子楼&#xff0c;侵删&#xff09;▼3 听说你想要中国的熊猫▼4 听说学校附近有野人出没&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼5…

meta标签的作用

meta标签共有两个属性&#xff0c;它们分别是http-equiv属性和name属性&#xff0c;不同的属性又有不同的参数值&#xff0c;这些不同的参数值就实现了不同的网页功能。 一.http-equiv属性 定义和用法&#xff1a;把 content 属性连接到 HTTP 头部&#xff0c;它可以向浏览器传…

iCloud7_Next Steps

下一步Next Steps 在此次指导中&#xff0c;你创建了一个复杂的iOS应用&#xff0c;使用iCloud保存它的文档。设计一个支持 iCloud 的应用程序&#xff0c;涉及很多决策&#xff0c;即使这样&#xff0c;本教程只触及表面&#xff08;浅层&#xff09;。当你继续了解集成 iClou…

operation 多线程

2.Cocoa Operation 优点&#xff1a;不需要关心线程管理&#xff0c;数据同步的事情。Cocoa Operation 相关的类是 NSOperation &#xff0c;NSOperationQueue。NSOperation是个抽象类&#xff0c;使用它必须用它的子类&#xff0c;可以实现它或者使用它定义好的两个子类&#…

Android插件化开发基础之Java动态代理(proxy)机制的简单例子

一、代码 package com.sangfor.tree;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;interface ProxyInterFace { public void proxyMethod(); } class TargetObject implements ProxyInterFace { publ…

python获取键盘事件_50-用Python监听鼠标和键盘事件

PyHook是一个基于Python的“钩子”库&#xff0c;主要用于监听当前电脑上鼠标和键盘的事件。这个库依赖于另一个Python库PyWin32&#xff0c;如同名字所显示的&#xff0c;PyWin32只能运行在Windows平台&#xff0c;所以PyHook也只能运行在Windows平台。 关于PyHook的使用&…

解读最新的 Xamarin 更新

微软中国MSDN 点击上方蓝字关注我们Good news——Visual Studio 2022 包括了 Xamarin 对 Android 12和苹果最新的 Xcode 13 版本下的 iOS、iPadOS、macOS 和 tvOS 的支持&#xff0c;以及适用于支持它们的最新 Xamarin.Forms 版本。让我们一起来了解下最新 Xamarin版本&#x…

原来医生的处方不是随便乱写的...

1 奇奇怪怪的知识又增加了&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 像极了早上刚睡醒炸毛的你▼3 原来医生的处方不是瞎写的▼4 当爷爷不当孙子&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼5 40厘米的身高差&#xff08;素材来源网络&#xf…