我有以下scss:
.skillBox {
position: relative;
border-radius: 10px;
border: 1px solid #ccc;
box-shadow: 0 2px 20px #ccc;
padding: 1em;
&:hover {
padding: 3em;
.d-none {
display: inline-block !important;
}
}
&:hover .d-none {
display: inline-block !important;
}
}
悬停时,我得到了padding:3em
,但是嵌套规则和内联子规则都无效,即.d-none
类没有被覆盖。
使用CSS模块编写规则的正确方法是什么?
我正在使用sass
和modules
启用(REACT_APP_SASS_MODULES=true
)的CRA和custom-react-scripts来测试CSS模块。
或者我应该改用styled components
吗?试图找出适合响应应用程序的应用程序。
答案 0 :(得分:1)
您可以尝试使用此代码来解决您的问题
.skillBox {
position: relative;
border-radius: 10px;
border: 1px solid #ccc;
box-shadow: 0 2px 20px #ccc;
padding: 3em;
background: red;
&:hover {
&.d-none {
background: black;
color: #fff;
padding: 20px;
}
}
}
.d-none {
background: green;
color: #fff;
padding: 20px;
}
<div class="skillBox">
Parrent
<div class="d-none">Childred</div>
</div>
答案 1 :(得分:0)
您的CSS没有错。请参见下面的演示。
.skillBox {
position: relative;
border-radius: 10px;
border: 1px solid #ccc;
box-shadow: 0 2px 20px #ccc;
padding: 1em;
.d-none{
display: none;
}
&:hover {
padding: 3em;
.d-none {
display: inline-block;
}
}
}
答案 2 :(得分:0)
如果具有skillbox
和d-none
类的元素是下面的同级元素,则为该css
.skillBox {
position: relative;
border-radius: 10px;
border: 1px solid #ccc;
box-shadow: 0 2px 20px #ccc;
padding: 1em;
&:hover {
padding: 3em;
}
}
.dnone {
display: none;
}
.skillBox:hover ~ .dnone {
display: inline-block;
}
答案 3 :(得分:0)
因此,我意识到CSS模块为.d-none
创建了一个自定义的类名,并应用了该类名。
因此,我完全更改了类名,使其成为覆盖.d-none
的全新类。
.skillBox {
position: relative;
border-radius: 10px;
border: 1px solid #ccc;
box-shadow: 0 2px 20px #ccc;
padding: 1em;
&:hover {
.dNone {
display: inline-block !important;
}
}
}
并通过将它们添加为数组然后将它们连接在一起进行应用:
<i className={['fas fa-times-circle d-none', styles.faTimesCircle, styles.dNone].join(' ')} onClick={this.onDelete} />