html - 仅当找到多个具有类的元素时才应用 CSS
问题描述
我有 2 张卡片,其中一个类card
显示在card-stack
. 可以有N张这样的牌。
<div class="card-stack">
<div class="clear"><button name="clear" value="Clear all" onclick="removeAllCards(this)">Clear All</button></div>
<div class="card" style="--y:1" onclick="remove(this)">
<div class="card-header">
<div class="card-avatar">
<img src="https://static.thenounproject.com/png/363633-200.png">
</div>
<div class="card-title">Announcement 1</div>
</div>
<div class="card-body">
This is announcement 1.
</div>
</div>
<div class="card" style="--y:2" onclick="remove(this)">
<div class="card-header">
<div class="card-avatar">
<img src="https://static.thenounproject.com/png/363633-200.png">
</div>
<div class="card-title">Announcement 1</div>
</div>
<div class="card-body">
This is announcement 1.
</div>
</div>
</div>
当用户悬停时,card-stack
我将一些 CSS 应用到每个card
.card-stack:hover .card{
transform: translateY(calc((var(--y) * -105% + 200px)));
box-shadow: none;
}
我只想在类有超过 1 个元素的情况下应用 HOVER css card
。我如何使用 CSS 做到这一点?
function remove(element) {
element.remove();
}
function removeAllCards(element) {
element.remove();
document.querySelectorAll(".card").forEach(el => el.remove());
}
body {
background-color: #e8eaed;
}
.card {
width: 300px;
min-height: 150px;
background-color: white;
position: fixed;
top: 75vh;
right: 100px;
transform: translate(-50%, -50%);
display: grid;
border-radius: 5px;
font-family: sans-serif;
font-size: 14px;
color: #00000080;
box-shadow: 0 5px 15px 0 #00000040, 0 5px 5px 0#00000020;
transition: transform 200ms;
padding:15px;
cursor:pointer;
}
.card {
transform: translateY(calc((var(--y) * 20px) - 50%)) scale(calc(1.0 + var(--y) * 0.05));
}
.card-avatar {
display:block;
}
.card-avatar img {
width:40px;
height:40px;
float:left;
}
.card-title {
font-size:16px;
display:inline-block;
margin-top:10px;
margin-left:10px;
}
.card-header {
height:30px;
display: inline-block;
}
.card-body {
margin-top:-30px;
}
.card-stack:hover .card{
transform: translateY(calc((var(--y) * -105% + 200px)));
box-shadow: none;
}
.card-stack:hover .clear {
visibility: visible;
transform: translateY(calc((var(--y) * -105% + 200px)));
position:absolute;
top:2vh;
right:40px;
}
.card-stack {
position:fixed;
width: 400px;
min-height: 100vh;
position: fixed;
right: 65px;
}
.clear {
visibility:hidden;
}
<div class="card-stack">
<div class="clear"><button name="clear" value="Clear all" onclick="removeAllCards(this)">Clear All</button></div>
<div class="card" style="--y:1" onclick="remove(this)">
<div class="card-header">
<div class="card-avatar">
<img src="https://static.thenounproject.com/png/363633-200.png">
</div>
<div class="card-title">Announcement 1</div>
</div>
<div class="card-body">
This is announcement 1.
</div>
</div>
<div class="card" style="--y:2" onclick="remove(this)">
<div class="card-header">
<div class="card-avatar">
<img src="https://static.thenounproject.com/png/363633-200.png">
</div>
<div class="card-title">Announcement 1</div>
</div>
<div class="card-body">
This is announcement 1.
</div>
</div>
</div>
解决方案
一种解决方案是同时针对first-child
目标last-child
类
.myClass {
color: tomato;
}
.myClass:first-child:last-child {
color: DarkSlateGrey;
}
<div>
<span class="myClass">I'm alone</span>
</div>
<div>
<span class="myClass">We are two</span>
<span class="myClass">We are two</span>
</div>
推荐阅读
- reactjs - 第二次单击编辑按钮时缺少 ID
- c# - 尝试从 Azure CI/CD 获取生成输出工件
- c++ - 当没有调整大小/重新散列发生时,C++ 普通的旧数组/向量/unordered_map 线程是否安全?
- reactjs - 如何获取所有 Reactjs 组件将使用的数据
- amazon-web-services - 无法从 SQL Developer 连接 AWS RDS
- docker - Dockerfile MKDIR 不工作(节点:高山)
- amazon-web-services - AWS Cloudfront 将 index.html 中的 CSS 和 JS 引用重写为 index_files/style.css 而不是 css/style.css
- express - 如果我在标头中发送会话 ID,是否可以在没有 CSRF 令牌的情况下阻止 CSRF 攻击
- python-3.x - 取消 asyncio 任务导致“任务被破坏但它处于挂起状态”
- laravel - Laravel nova 文件字段 | 如何在存储文件之前获取资源 ID