我希望我的鼠标悬停以使其淡出然后再出现,从而使“隐藏” div出现,并且当not(:hover)我希望它逐渐消失然后消失时,我已经尝试过:
.éléments:not(:hover) #hidding {
font-size: 0;
opacity: 0;
transition: opacity 1s, font-size 2s 1s;
}
.éléments:hover #hidding {
background-color: #97e6bc;
width: 20em;
margin: 0 auto;
padding: 1em;
transition: font-size 1s, opacity 2s 1s;
}
<div class="éléments">
<div class="école">
<h3>Where is Charly ?</h3>
</div>
<div id="hidding">
<p>hidding</p>
</div>
<div class="école">
<h3>Where is Charly ?</h3>
</div>
<div id="hidding">
<p>hidding</p>
</div>
<div class="école">
<h3>Where is Charly ?</h3>
</div>
<div id="hidding">
<p>hidding</p>
</div>
</div>
但是由于未知原因,div立即消失,只有文本似乎受:not(:hover)
影响,有人可以解释一下发生了什么吗?
答案 0 :(得分:1)
您的代码有很多问题,很多其他人都注意到了
id
必须是唯一。请改用class
。é
之类的特殊字符。这是一种错误的编码做法,可能会导致错误。 .elements:not(:hover)
并不是一个好主意。background-color
之类的无生命属性放入:hover
伪类中。transition
属性设置动画。这可能是您大多数故障的根源。但重要的是,不存在.elements:not(:hover)
的使用。看来您想要实现的只是.elements
本身。我猜是暗示:not(:hover)
。您应该将所有默认的CSS格式(包括所有转换)都放在.elements
中。在悬停的Pseudo类中,仅将要设置动画的属性放在:hover
上。
W3Schools: CSS Pseudo-classes
.elements .hidding {
height: 0;
width: 15em;
opacity: 0;
margin: 0 auto;
overflow: hidden;
box-sizing: border-box;
background-color: #97e6bc;
transition: opacity 1s, height 1s ease-out, width 1s ease-out;
}
.elements .hidding>p {
display: block;
padding: 1em;
margin: 0;
}
.elements:hover>.ecole>.hidding {
width: 20em;
height: 3em;
opacity: 1;
}
<div class="elements">
<div class="ecole">
<h3>Where is Charly ?</h3>
<div class="hidding">
<p>hidding</p>
</div>
</div>
<div class="ecole">
<h3>Where is Charly ?</h3>
<div class="hidding">
<p>hidding</p>
</div>
</div>
<div class="ecole">
<h3>Where is Charly ?</h3>
<div class="hidding">
<p>hidding</p>
</div>
</div>
</div>
我不会为transition
属性设置动画(我什至不认为这是遥不可及的)。使用CSS animations.
答案 1 :(得分:1)
您不能超过一个 <div id="hidding">
。 id
必须始终保持唯一性。请改用<div class="hidding">
。
话虽这么说,在开发中使用非ASCII字符是不好的做法。
我更正了这些问题。
问题的原因是,您拥有一些仅在:hover
状态下定义的属性(width
,padding
,margin
)和b)在transition
的规则方面没有定义。
第二个问题是您的.element:not(:hover) .hidding
实际上应该只是.elements .hidding
。这样做的原因是,在.element:not(:hover) .hidding
上悬停时,.elements
中立即定义的任何内容都不再适用。
.elements .hidding {
background-color: #97e6bc;
font-size: 0;
margin: 0 auto;
opacity: 0;
width: 20em;
transition: all 1s;
}
.elements:hover .hidding {
background-color: #97e6bc;
font-size: 16px;
opacity: 1;
padding: 1em;
transition: all 1s;
}
<div class="elements">
<div class="ecole">
<h3>Where is Charly ?</h3>
</div>
<div class="hidding">
<p>hidding</p>
</div>
<div class="ecole">
<h3>Where is Charly ?</h3>
</div>
<div class="hidding">
<p>hidding</p>
</div>
<div class="ecole">
<h3>Where is Charly ?</h3>
</div>
<div class="hidding">
<p>hidding</p>
</div>
</div>
答案 2 :(得分:0)
它有效,但是您已经写了opacity 2s 1s;
。这意味着在2秒钟的过渡中1秒钟后,不透明度开始为1。
这不是正确的方法。请改用.elements #hidding{
。然后.elements:hover #hidding{
。这个问题是否充满了错误:)。在询问How to check if a program exists from a Bash script?