首页 > 其他分享 >说下你对css样式的这几个属性值initial、inherit、unset、revert的理解

说下你对css样式的这几个属性值initial、inherit、unset、revert的理解

时间:2024-12-02 10:01:29浏览次数:4  
标签:初始值 样式 initial revert inherit 继承 元素 unset 属性

这四个 CSS 属性值 initialinheritunsetrevert 都与元素样式的继承和重置有关,但它们的作用方式略有不同:

  • initial (初始值): 将属性设置为浏览器样式表中定义的默认值。 每个属性都有其初始值,例如,background-color 的初始值为 transparentfont-size 的初始值为 mediumdisplay 的初始值为 inline 等等。 使用 initial 会忽略任何继承的样式、样式表中的样式规则以及内联样式。 它会将属性恢复到最原始的状态。

  • inherit (继承值): 将属性值设置为与其父元素相同的值。 如果父元素没有设置该属性,则会继续向上查找祖先元素,直到找到一个设置了该属性的元素,或者到达根元素为止。 inherit 允许你轻松地将样式从父元素传递给子元素,而无需为每个子元素单独设置样式。

  • unset (未设置值): 这是一个混合值。 对于继承属性(例如 font-familycolor),unset 的行为与 inherit 相同。 对于非继承属性(例如 background-colorwidth),unset 的行为与 initial 相同。 unset 提供了一种便捷的方式来重置属性,而无需考虑该属性是否可继承。

  • revert (还原值): 将属性值还原到用户代理样式表中定义的默认值。 这与 initial 不同,因为用户代理样式表可能包含用户自定义的样式或浏览器扩展程序添加的样式。 revert 旨在将样式恢复到用户预期的默认状态,即使该状态与浏览器内置的初始值不同。 在某些情况下,revert 的行为可能与 unset 相同,尤其是在没有用户自定义样式或浏览器扩展程序影响的情况下。

总结表格:

继承属性 非继承属性 说明
initial 初始值 初始值 属性的浏览器默认值。
inherit 继承父元素 继承父元素 从父元素继承值。
unset 继承父元素 初始值 继承属性继承父元素值,非继承属性设置为初始值。
revert 用户代理样式表 用户代理样式表 还原到用户代理样式表的值,可能包含用户自定义样式或浏览器扩展程序添加的样式。

示例:

假设你有一个带有蓝色文本的 div 元素,并且它的子元素是一个 span 元素:

<div style="color: blue;">
  <span style="color: inherit;">继承的蓝色文本</span>
  <span style="color: initial;">黑色的文本 (color 的初始值为 black)</span>
  <span style="color: unset;">继承的蓝色文本 (color 是继承属性)</span>
  <span style="color: revert;">黑色的文本 (假设没有用户自定义样式)</span>
</div>

希望这个解释能够帮助你理解这四个 CSS 属性值之间的区别。

标签:初始值,样式,initial,revert,inherit,继承,元素,unset,属性
From: https://www.cnblogs.com/ai888/p/18581068

相关文章

  • heritage、legacy和inheritance的区别
    heritage、legacy和inheritance都表示从祖先处得到的物品或财富。他们的区别是:heritage不是财物,是文化、历史、语言、遗迹这样的东西。如:Theparliamenthaspassedalawtopreserveculturalheritage.(国会通过了一部旨在保护文化遗产的法律)legacy也不是财物,他是一种对后世或......
  • Qt运行生成的exe报错“This application failed to start because no Qt platform plu
    Qt运行生成的exe报错“ThisapplicationfailedtostartbecausenoQtplatformplugincouldbeinitialized.Reinstallingtheapplicationmayfixthisproblem.”报错复现将exe复制一份至单独文件夹中,直接运行会发现报错缺少一些dll去Qt根目录D:\QT\Qt\5.15.0\mingw8......
  • InheritableThreadLocal从入门到放弃
    作者:京东零售田超辉背景:一个上线了很久但是请求量很低(平均每天一两次)的历史功能突然出现空指针报错:  我们翻开代码定位到对应的报错代码:  结合堆栈和代码可以确定是由于bdIdJobMap的值为null导致往bdIdEmployeeJobMap这个map中putAll的时候空指针了。而bdIdJobM......
  • [CSS] initial vs unset vs revert
    /*initial:defaultvalueofthecssproperty,youdon'tneedtorememberwhat'sthedefaultvalueofeachcssproperty,justuseinitialshoulddothetrickunset:neitherusethedefaultvalueortheinheritvalue,butwedon'twanttore......
  • 【C++】继承(inheritance)
    引入假设我们有一个动物类classAnimal{public:intage;voideat(){std::cout<<"吃东西!"<<std::endl;}};又想写一个狗类,它也有年龄,也会吃,除此之外还有种类classDog{public:constchar*kind;intage;voideat(){......
  • python系列&deep_study系列:【已解决】Failed to initialize NVML: Driver/library ver
    【已解决】FailedtoinitializeNVML:Driver/libraryversionmismatchNVMLlibraryversion:535.161【已解决】FailedtoinitializeNVML:Driver/libraryversionmismatchNVMLlibraryversion:535.161问题描述原因分析和解决当我把这个问题喂给`chatgpt`的时......
  • SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial commu
    错误信息 SQLSTATE[HY000][2013]LostconnectiontoMySQLserverat'readinginitialcommunicationpacket',systemerror:111 表示在尝试与MySQL服务器建立连接时出现了问题,具体来说是在读取初始通信包时失去了与MySQL服务器的连接,系统错误码为111,这通常表示连接被拒绝......
  • C++扫盲--直接构造(Direct Initialization)
      在C++中,直接构造(DirectInitialization)是由一种对象构造的方式,它直接调用类的构造函数来初始化对象。这种方式通常用于创建对象时立即提供必要的参数。直接构造的语法如下:ClassNameobjectName(arguments);其中,ClassName是类的名称,objectName是要创建的对象的名称,argument......
  • Resource Acquisition Is Initialization
    在C++中,资源获取即初始化(RAII,ResourceAcquisitionIsInitialization)是一种管理资源的编程惯用法。其核心思想是将资源的获取和释放绑定到对象的生命周期中。具体来说:资源获取:在对象构造时获取资源,比如内存、文件句柄、网络连接等。将资源的句柄或指针保存在对象的成员......
  • 【C#Mutex】 initiallyOwned错误引起的缺陷
    临界区只能对同一个进程的不同线程同步,互斥量可以跨进程同步。典型应用场景:两个exe会操作同一个注册表项。错误代码封装类publicclassCMutexHelp:IDisposable{publicCMutexHelp(){s_mutex.WaitOne();}privatestaticMutexs_mu......