CSS控制继承中的height能变为可继承吗


Posted in HTML / CSS onJune 10, 2022

一、前言

我们知道,CSS 属性有可继承和不可继承之分,例如 height 和 width 就 是CSS 中典型的不可继承属性,color 和 font-size 是典型的可继承属性。CSS 可继承属性意味着后代元素的样式会继承祖先元素样式,例如一个父元素的 color 是 red,那么如果它的子孙元素自己没有设置 color 值,就会取自父元素的 color 值。同样的条件,CSS 属性由 color 改为 height,由于默认是不可继承属性,其子孙元素不会继承父元素的 height 值。

这就是 CSS 中的继承与非继承属性的区别,区别在于某一元素的某类样式值,会不会被其子孙元素继承,也就是其子孙元素的样式值会不会取自父元素。

css 中有三个概念对于理解 CSS 是如何工作的十分重要,他们分别是“层叠”、“优先级”和“继承”。

Mozilla 上关于 CSS 继承概念的解释: 在 CSS 中,每个 CSS 属性定义的概述都指出了这个属性是默认继承的("Inherited: Yes") 还是默认不继承的("Inherited: no")。这决定了当你没有为元素的属性指定值时该如何计算值。

二、控制继承

CSS 为控制继承提供了四个特殊的通用属性值。每个css属性都接收这些值。 这意味着,就像 css 盒子模型可以通过改变 box-sizing 的值 (border-box 和 content-box)来改变。 css 属性的继承情况也是可以控制的,例如通过设置值 inherit、initial、unset 和 revert 来控制。

  • inherit:设置该属性会使子元素属性和父元素相同。实际上,就是 "开启继承"。
  • initial:设置属性值和浏览器默认样式相同。如果浏览器默认样式中未设置且该属性是自然继承的,那么会设置为 inherit。
  • unset:将属性重置为自然值,也就是如果属性是自然继承那么就是 inherit,否则和 initial一样。
  • revert:新的属性,目前仅被很少浏览器支持。

1.开启继承

height 在 CSS 原生上不可继承属性,子元素不会继承父元素的 height, 但是这种现状是可以改变的,当子孙元素的 height 设置 为 inherit, 该子孙元素就会的 height 值就会取其父元素的 height 值,就像是子元素继承了父元素的高度。

如果你希望子元素的高度一直保持和父元素一直,那么设置子元素的 height 为 inherit,最合适不过了。

inherit:设置该属性会使子元素属性和父元素相同。实际上,就是 "开启继承"。这个值可以被几乎 CSS 所有属性 使用,也就是 width 等其他属性也可以开启继承。

下面是一个给子元素的 height 开启继承的示例:

<div>
    <p>这是一个普通的段落</p>

</div>
div{
    height: 200px;
    color: red;
    border: 1px solid red;
    font-size: 25px;

}
p{
    border: 1px solid #1e87f0;
    height: inherit; /*开启继承后,自动继承了父元素的高度*/
    margin: 0;

}

CSS控制继承中的height能变为可继承吗

CSS控制继承中的height能变为可继承吗

2.重设几乎所有属性值

all 结合 unset,重置几乎所有样式,这也可以看成是一种对原始继承的控制改变, all 属性,将这种改变的有效范围放大了,因为 unset 几乎可以重置所有属性的值。 这里的重置通常是指将属性重置为自然值,也就是如果属性是自然继承那么就是 inherit,否则和 initial一样。

CSS 的 shorthand 属性 all 可以用于同时将这些继承值中的一个,应用于(几乎)所有属性。 它的值可以是其中任意一个(inherit, initial, unset, or revert)。 这是一种撤销对样式所做更改的简便方法,以便回到之前已知的起点。

例如像下面这样:例子中有两个 div,第一个 div 应用了样式选择器 div 的样式, 第二个通过 类选择器 unset-all 设置 all 为 unset,重置了几乎所有样式。 例如 color、background-color 和 border 都被重置为浏览器默认样式了,原本两个段落的样式应该是一致的。

<div>
    <p>这是一段文字</p>
</div>
<div class="unset-all">
    <p>这是另一段文字,它将被充值样式</p>
</div>
div {
    color: red;
    background-color: red;
    border: 2px solid green;
}
.unset-all {
    all: unset;

}

下面是一张测试样式重置的效果图:

CSS控制继承中的height能变为可继承吗

三、拓展:常见继承属性与非继承属性

1.常见可继承属性

  • ul
  • li
  • dl
  • dd
  • dt
  • color
  • font-size
  • font-family

2.常见不可继承属性

  • width
  • border
  • margin
  • height
  • padding

四、总结

所以,通过将子元素的 height 值设置 inherit,可以继承父元素的高度,这会使得子元素的高度始终保持一致,这有时会很便利。 当然 width 等大多数属性都可以这样开启继承。

到此这篇关于CSS控制继承中的height能变为可继承吗的文章就介绍到这了,更多相关CSS继承 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
定义css设备类型-Media Queries图表简介及使用方法
Jan 21 HTML / CSS
一款纯css3实现的鼠标经过按钮特效教程
Nov 09 HTML / CSS
用纯CSS3实现网页中常见的小箭头
Oct 16 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
Jul 16 HTML / CSS
Html5如何唤起百度地图App的方法
Jan 27 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
Jan 30 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
Jun 16 HTML / CSS
HTML5本地数据库基础操作详解
Apr 26 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
Nov 21 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
Sep 12 HTML / CSS
html5实现滑块功能之type=&quot;range&quot;属性
Feb 18 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
Jan 19 HTML / CSS
css样式important规则的正确使用方式
Jun 10 #HTML / CSS
分享几个实用的CSS代码块
Jun 10 #HTML / CSS
html中两种获取标签内的值的方法
Jun 10 #HTML / CSS
html5+实现plus.io进行拍照和图片等获取
Jun 01 #HTML / CSS
基于CSS制作创意端午节专属加载特效
聊聊CSS粘性定位sticky案例解析
Jun 01 #HTML / CSS
HTML5之高度塌陷问题的解决
Jun 01 #HTML / CSS
You might like
php连接mysql数据库
2017/03/21 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
python zip文件 压缩
2008/12/24 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
迟到检讨书900字
2014/01/14 职场文书
白莲教口号
2014/06/18 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
社区务虚会发言材料
2014/10/20 职场文书
教师读书活动心得体会
2016/01/14 职场文书