查漏补缺——说说unset属性
问题
如题所示
答案
CSS 中的 initial、inherit、unset、revert、all
相关源码:
<div class="hzh-back-top" v-show="hzhShow" @click.stop="hzhGetTop">
<img class="img1" src="../../static/_hzh-tortoise.svg" alt="">
<img class="img2" src="../../static/hzh-tortoise.svg" alt="">
<p>回到顶部</p>
</div>
.hzh-back-top:hover .img1 {
display: none;
}
.hzh-back-top:hover .img2 {
display: unset;
}
unset属性意思是未设置,而不是不设置,其实,它是关键字 initial 和 inherit 的组合。
什么意思呢?也就是当我们给一个 CSS 属性设置了 unset 的话:
- 如果该属性是默认继承属性,该值等同于 inherit
- 如果该属性是非继承属性,该值等同于 initial
那么display是否可以继承?
也就是display这个属性不可以继承,那么也就是此时的值等同于 initial,那么这个属性又是啥意思呢?
根据上面可以知道,这个值会直接继承浏览器的默认值,那么display这个属性,浏览器的默认值是什么呢?
根据上面,我们可以知道display这个属性的默认值是inline-block,那么display: inline-block;
又是啥意思呢?
inline-block
代表的是该元素高度和宽度可以设置,并且元素会在同一行显示。
如果把以下代码删除:
.hzh-back-top:hover .img1 {
display: none;
}
,显示的效果是这样的:
按照原来的,光标移到乌龟上,乌龟壳会因为display: none;
而消失,又因为乌龟会unset属性,这里省略一大堆默认属性,反正它是显示出来了。
今天又遇到的关于unset
这个样式值的知识点,相关源码如下:
.banner-img{
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
z-index: -1;
transition: unset;
&:hover {
transform: unset;
filter: unset;
}
}
这段代码有三个样式的样式值都被设置为unset
根据上面的知识点,我们可以知道
当我们给一个 CSS 属性设置了 unset 的话:
- 如果该属性是默认继承属性,该值等同于 inherit
- 如果该属性是非继承属性,该值等同于 initial
那么transition
、transform
、filter
这三个样式哪个是可以继承,哪个是不可以继承的呢?
transition属性的说明:
transform属性的说明:
filter属性的说明:
这三个属性不都是可以继承的属性,那么设置它们的样式值为unset
之后,就按照默认值来设置。