Я работаю над приложением ReactJS, и у меня есть следующий код HTML, который используется в компоненте:
<div class="order-box">
<div class="order-header">Table #1</div>
<div class="order-list">
<div class="order-item-container ">
<span class="checkmark"></span>
<div class="order-item-name">Fish and Chips × 1</div>
</div>
<div class="order-item-container ">
<span class="checkmark"></span>
<div class="order-item-name">Teriyaki Chicken × 1</div>
</div>
<div class="order-item-container ">
<span class="checkmark"></span>
<div class="order-item-name">Satay Chicken × 2</div>
</div>
<div class="order-item-container ">
<span class="checkmark"></span>
<div class="order-item-name">Lava Cake × 2</div>
</div>
</div>
</div>
Я использую Sass для стилизации кода HTML. У меня есть следующий код Sass:
.order-box {
border: 1px solid #c3c9c8;
height: 400px;
width: 400px;
border-radius: 5px;
box-shadow: 0 10px 6px -6px #ededed;
overflow: hidden;
}
.order-list {
overflow-y: scroll;
height: 80%;
}
.order-header {
text-align: center;
background: #222222;
color: #ffffff;
font-weight: bold;
font-size: 26px;
height: 20%;
display: flex;
justify-content: center;
align-items: center;
}
.order-item-container {
display: block;
position: relative;
padding-left: 35px;
cursor: pointer;
font-size: 22px;
user-select: none;
margin: 30px;
&.order-item-cooked {
.order-item-name {
text-decoration: line-through;
}
.checkmark {
background: #222222;
&:after {
display: block;
}
}
}
&.order-item-delivered {
.order-item-name {
text-decoration: line-through;
}
.checkmark {
background: #222222;
&:after {
display: block;
}
}
}
&:hover:not(.order-item-cooked) .checkmark {
background-color: #ccc;
}
&:hover:not(.order-item-delivered) .checkmark {
background-color: #ccc;
}
}
.checkmark {
position: absolute;
top: 2px;
left: 0;
height: 25px;
width: 25px;
border-radius: 15px;
background-color: #eee;
&:after {
content: "";
position: absolute;
display: none;
left: 9px;
top: 5px;
width: 5px;
height: 10px;
border: solid white;
border-width: 0 3px 3px 0;
transform: rotate(45deg);
}
}
В моем коде React, в зависимости от определенных условий, классы "order-item-cooked"
и "order-item-delivered"
добавляются в div с классом "order-item-container"
.
Например, у вас может быть одно из следующих:
<div class="order-item-container order-item-cooked">
<div class="order-item-container order-item-delivered">
Когда у div с классом order-item-container
также есть класс "order-item-cooked"
или "order-item-delivered"
, если один из них находится над определенной галочкой по тегу span внутри этого div, цвет фона не должен изменяться на # ccc.
Следующий код Sass имеет дело с этим:
&:hover:not(.order-item-cooked) .checkmark {
background-color: #ccc;
}
&:hover:not(.order-item-delivered) .checkmark {
background-color: #ccc;
}
С вышеупомянутым в моем файле Sass при наведении указателя мыши на флажок внутри элемента div с классом order-item-cooked
или order-item-delivered
цвет фона меняется на # ccc.
Я не уверен, почему это происходит , Любые идеи приветствуются.