CSS flex 属性 相对于 flex-basis 的特殊性
CSS specificity of the flex property over flex-basis
有人能告诉我 CSS 个属性之间是否有特异性吗?
我正在测试 flexbox,我试过这个场景:
第二个选择器.flex-basis-5
是通过JS在某种条件下应用的。
我原以为 flex-basis 的值会被新的选择器覆盖,但只有在我向其添加 !important
时才会应用它。
.flex-container {
display: flex;
flex-flow: row wrap;
}
.flex-item-7 {
flex: 0 0 58.33%
}
.flex-basis-5 {
flex-basis: 41.66%;
}
<div class="flex-container">
<div class="flex-item-7 flex-basis-5">Some content</div>
</div>
谢谢!
特异性基于选择器,而不是 属性。应用于选择器的属性按写入顺序应用,因此集合中较低的属性将覆盖较高的值。
这就是说,如果我理解正确,你的代码就可以工作。这是一个演示:
const btn = document.getElementById("toggle")
btn.addEventListener("click", () => {
document.querySelector(".flex-item-7").classList.toggle("flex-basis-5")
})
.flex-container {
display: flex;
flex-flow: row wrap;
}
.flex-item-7 {
flex: 0 0 58.33%;
background: #ccc;
}
.flex-basis-5 {
flex-basis: 41.66%;
}
button {
margin-top: 2em;
}
<div class="flex-container">
<div class="flex-item-7 flex-basis-5">Some content</div>
</div>
<button id="toggle">Toggle .flex-basis-5</button>
如果您在您的应用中看到一些不同的东西,很可能是您在 .flex-item-7
上方定义了 .flex-basis-5
,因此它具有较低的优先级并被后来定义的样式覆盖。
有人能告诉我 CSS 个属性之间是否有特异性吗?
我正在测试 flexbox,我试过这个场景:
第二个选择器.flex-basis-5
是通过JS在某种条件下应用的。
我原以为 flex-basis 的值会被新的选择器覆盖,但只有在我向其添加 !important
时才会应用它。
.flex-container {
display: flex;
flex-flow: row wrap;
}
.flex-item-7 {
flex: 0 0 58.33%
}
.flex-basis-5 {
flex-basis: 41.66%;
}
<div class="flex-container">
<div class="flex-item-7 flex-basis-5">Some content</div>
</div>
谢谢!
特异性基于选择器,而不是 属性。应用于选择器的属性按写入顺序应用,因此集合中较低的属性将覆盖较高的值。
这就是说,如果我理解正确,你的代码就可以工作。这是一个演示:
const btn = document.getElementById("toggle")
btn.addEventListener("click", () => {
document.querySelector(".flex-item-7").classList.toggle("flex-basis-5")
})
.flex-container {
display: flex;
flex-flow: row wrap;
}
.flex-item-7 {
flex: 0 0 58.33%;
background: #ccc;
}
.flex-basis-5 {
flex-basis: 41.66%;
}
button {
margin-top: 2em;
}
<div class="flex-container">
<div class="flex-item-7 flex-basis-5">Some content</div>
</div>
<button id="toggle">Toggle .flex-basis-5</button>
如果您在您的应用中看到一些不同的东西,很可能是您在 .flex-item-7
上方定义了 .flex-basis-5
,因此它具有较低的优先级并被后来定义的样式覆盖。