我提供两张图片来展示正在发生的事情。 在悬停之前:
悬停后:
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>
的悬停会影响带有class = channel的<div>
s,以及如何解决这个问题。
如果需要更多详细信息,请发表评论。 感谢
答案 0 :(得分:4)
这是因为.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;
}
&#13;
<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>
&#13;