html - 当悬停另一个具有不同父级的 div 时,CSS 显示 div
问题描述
我试图在另一个 divdisplay
时更改一个属性。hover
.pc-hover {
display: none;
}
.pc-content-image img:hover + .pc-hover {
display: block;
}
<div class="profile-content">
<div class="pc-hover">{hover}</div>
<div class="pc-header">{head}</div>
<div class="pc-content">
<div class="pc-content-image">
<img src="https://via.placeholder.com/300" alt="placeholder" />
</div>
<div class="pc-content-text">
<p>{text}</p>
<p>{text2}</p>
</div>
</div>
</div>
最初,pc-hover
直到鼠标将图像悬停在pc-content-image
. 但是当我将鼠标悬停在图像上时没有任何反应。
我从Using only CSS, show div on hover over another element中看到了一些参考资料,但我不明白该怎么做。
尝试使用+
and ~
,但不工作。
有没有办法做到这一点?感谢任何帮助,谢谢。
解决方案
两个问题:
仅当兄弟元素位于 html 源中的悬停元素之后时,相邻
+
的兄弟运算符 ( ) 才会起作用。所以我在我的例子中把它移到了图像 div 的下方。您将悬停事件附加到
img
div 内的元素。该图像没有任何相邻的兄弟姐妹,因此您的 CSS 将不起作用。为此,我们必须侦听作为相邻兄弟的父级div.pc-content
上的div.pc-hover
悬停。
我不确定 CSS 中是否有“前面的兄弟运算符”,否则您必须使用 flex 和flex-direction: column-reverse
(例如)才能将隐藏的 div 放在源中图像下方但在其上方的正确位置在输出中。
.pc-hover {
display: none;
}
.pc-content-image img:hover {
cursor: pointer;
border: 1px solid red;
}
.pc-content-image:hover + .pc-hover {
display: block;
height: 10rem;
background: red;
margin-bottom: 1rem;
}
<div class="profile-content">
<div class="pc-header">{head}</div>
<div class="pc-content">
<div class="pc-content-image">
<img src="https://via.placeholder.com/100" alt="placeholder" />
</div>
<div class="pc-hover">{hover}</div>
<div class="pc-content-text">
<p>{text}</p>
<p>{text2}</p>
</div>
</div>
</div>
推荐阅读
- visual-studio-2017 - Visual Studio 2017 决定更改“起始页”上“最近”项目的顺序,现在我要解决这个问题吗?
- python - 如何在 Pytorch 中定义一个“无关”类?
- javascript - 如何使用带有表单验证的javascript将带有li的无序列表添加到div
- next.js - 如何在 _document.js Head 中有条件地渲染 amp?
- python - 通过正确的命令后,Airodump-ng 不返回任何值
- html - google recaptcha 验证后将联系我们的表单数据发送到 REST api
- angular - 禁用角度日期
- python - “只能从 Matlab 5 级 MAT 文件中读取”
- python - 通过 VBA 从不同的计算机运行 Python 脚本
- php - PHP - Preg 匹配所有 - Wordpress 多个带有多个参数的短代码