gpt4 book ai didi

css - 为什么将元素悬停在 div 中会影响 div sibling ?

转载 作者:行者123 更新时间:2023-11-28 09:34:48 25 4
gpt4 key购买 nike

我提供两张图片来展示正在发生的事情。悬停前:

enter image description here

悬停后:

enter image description here

xhtml 代码:

    <body>
<div>
<div class="channel"><img src="./logos/svt1.png" alt="Channel logotype" /><div class="chName">SVT1</div>
<ul>
<li>
<div class="prog">01.20 Plus</div>
<div class="info">Program info here</div>
</li>
<!--more <li>-->
</ul>
</div>
<div class="channel"><img src="./logos/svt2.png" alt="Channel logotype" /><div class="chName">SVT2</div>
<ul>
<li>
<div class="prog">01.00 Rapport</div>
<div class="info">Program info here</div>
</li>
<!--more <li>-->
</ul>
</div>
<!-- and more <div> -->
</div>
</body>

这是我的 CSS:

body{
position: absolute;
}

img{
position: relative;
top: 0;
height: 60px;
width: auto;
margin-left: 30px;
}

ul{
list-style-type: none;
font-size: 12px;
}

li{
padding-bottom: 1em;
}

li:hover .info{
display: block;
}

li:hover{
border: solid 1px darkgrey;
}

div{
display: table;
}

.channel{

display: inline-block;
width: 32%;
height: auto;
padding: 5px;
top: 0;
}

.chName{
position: relative;
float: right;
top: 0;
margin-top: 30px;
margin-right: 40%;
font-weight: bold;
}

.info{
display: none;
font-weight: bold;
}

所以我想知道为什么 <li> 的悬停影响 <div> s with class = channel,以及如何解决这个问题。

如果需要更多详细信息,请发表评论。谢谢

编辑: http://jsfiddle.net/robbannn/53j38uyh/

最佳答案

这是因为 .channel 被设置为 display: inline-block; 这意味着垂直对齐是有效的。内联元素的默认垂直对齐方式是 baseline。当您将鼠标悬停在 li 上时,您正在将 .info 更改为 display: block;,这意味着基线不同。

要解决此问题,请将 vertical-align: top; 添加到 .channel,这将确保 .channel 始终与父项的顶部。

body {
position: absolute;
}
img {
position: relative;
top: 0;
height: 60px;
width: auto;
margin-left: 30px;
}
ul {
list-style-type: none;
font-size: 12px;
}
li {
padding-bottom: 1em;
}
li:hover .info {
display: block;
}
li:hover {
border: solid 1px darkgrey;
}
div {
display: table;
}
.channel {
display: inline-block;
width: 32%;
height: auto;
padding: 5px;
top: 0;
vertical-align: top;
}
.chName {
position: relative;
float: right;
top: 0;
margin-top: 30px;
margin-right: 40%;
font-weight: bold;
}
.info {
display: none;
font-weight: bold;
}
<div>
<div class="channel">
<img src="./logos/svt1.png" alt="Channel logotype" />
<div class="chName">SVT1</div>
<ul>
<li>
<div class="prog">01.20 Plus</div>
<div class="info">Program info here</div>
</li>
<!--more <li>-->
</ul>
</div>
<div class="channel">
<img src="./logos/svt2.png" alt="Channel logotype" />
<div class="chName">SVT2</div>
<ul>
<li>
<div class="prog">01.00 Rapport</div>
<div class="info">Program info here</div>
</li>
<!--more <li>-->
</ul>
</div>
<!-- and more <div> -->
</div>

关于css - 为什么将元素悬停在 div 中会影响 div sibling ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com