如何在悬停元素期间制作拉起效果?只看一次这段代码
How to make pull up effect during hovering element? Just see this code once
我正在尝试创建一种效果,当 div class="container" 悬停时,另一个 div 从底部开始。只有在悬停期间,才会发生这种情况,因为我希望 .bottom div 被隐藏。当那个 div 没有隐藏的时候,我可以看到我想要的效果。但是由于我把底部隐藏了div,那个悬停效果平滑过渡效果是看不到的。检查此代码一次。
HTML CODE
<div class="box">
Hello
<div class="bottom">
Everyone
</div>
</div>
CSS code
.box{
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
top:80px;
left:0;
/* display: none; */
}
.box:hover .bottom {
display: block;
transition: linear 0.2s;
top:55px;
}
这是代码笔link
https://codepen.io/Biebk/pen/MWpREqb
使用以下代码。
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.hovered{
transition: all .2s;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
top: 80px;
left: 0;
visibility: hidden;
}
.hovered:hover+.bottom {
transition: all .2s;
top: 55px;
visibility: visible;
}
<div class="box">
<div class="hovered">Hello</div>
<div class="bottom">
Everyone
</div>
</div>
首先,您可以将其 opacity
设置为 0
,而不是 display: none
来完全隐藏传入元素,然后当父项悬停时,将其设置为 1
,像这样:
.bottom {
opacity: 0;
}
.box:hover .bottom {
opacity: 1;
}
我想假设您希望在悬停时有传入的“上拉”效果,您希望该元素在悬停结束时也“下拉”。您可以通过在父元素上使用 :not(:hover)
来反转相同的效果:
.box:not(:hover) .bottom {
opacity: 0;
}
此外,请务必将 transition
设置为非悬停状态。以下示例提供了您正在寻找的平滑过渡:
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
left: 0;
transition: all .25s ease;
}
.box:not(:hover) .bottom {
top: 80px;
opacity: 0;
}
.box:hover .bottom {
top: 55px;
opacity: 1;
}
<div class="box">
Hello
<div class="bottom">
Everyone
</div>
</div>
第二种方法是将 bottom
div 作为 box
的同级放置,并使用 adjacent sibling combinator 应用悬停效果:
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
font-size: 20px;
background: pink;
width: 80px;
text-align: center;
position: absolute;
left: 0;
top: 80px;
opacity: 0;
cursor: default;
transition: all .25s ease;
}
.box:hover + .bottom {
top: 55px;
opacity: 1;
}
<div class="box">
Hello
</div>
<div class="bottom">
Everyone
</div>
使用opacity 属性而不是显示来达到想要的效果,然后
使用以下代码
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
top: 80px;
left: 0;
opacity: 0;
}
.box:hover .bottom{
opacity: 1;
transition: opacity 0.2s , top 1s;
top: 55px;
}
我正在尝试创建一种效果,当 div class="container" 悬停时,另一个 div 从底部开始。只有在悬停期间,才会发生这种情况,因为我希望 .bottom div 被隐藏。当那个 div 没有隐藏的时候,我可以看到我想要的效果。但是由于我把底部隐藏了div,那个悬停效果平滑过渡效果是看不到的。检查此代码一次。
HTML CODE
<div class="box">
Hello
<div class="bottom">
Everyone
</div>
</div>
CSS code
.box{
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
top:80px;
left:0;
/* display: none; */
}
.box:hover .bottom {
display: block;
transition: linear 0.2s;
top:55px;
}
这是代码笔link https://codepen.io/Biebk/pen/MWpREqb
使用以下代码。
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.hovered{
transition: all .2s;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
top: 80px;
left: 0;
visibility: hidden;
}
.hovered:hover+.bottom {
transition: all .2s;
top: 55px;
visibility: visible;
}
<div class="box">
<div class="hovered">Hello</div>
<div class="bottom">
Everyone
</div>
</div>
首先,您可以将其 opacity
设置为 0
,而不是 display: none
来完全隐藏传入元素,然后当父项悬停时,将其设置为 1
,像这样:
.bottom {
opacity: 0;
}
.box:hover .bottom {
opacity: 1;
}
我想假设您希望在悬停时有传入的“上拉”效果,您希望该元素在悬停结束时也“下拉”。您可以通过在父元素上使用 :not(:hover)
来反转相同的效果:
.box:not(:hover) .bottom {
opacity: 0;
}
此外,请务必将 transition
设置为非悬停状态。以下示例提供了您正在寻找的平滑过渡:
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
left: 0;
transition: all .25s ease;
}
.box:not(:hover) .bottom {
top: 80px;
opacity: 0;
}
.box:hover .bottom {
top: 55px;
opacity: 1;
}
<div class="box">
Hello
<div class="bottom">
Everyone
</div>
</div>
第二种方法是将 bottom
div 作为 box
的同级放置,并使用 adjacent sibling combinator 应用悬停效果:
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
font-size: 20px;
background: pink;
width: 80px;
text-align: center;
position: absolute;
left: 0;
top: 80px;
opacity: 0;
cursor: default;
transition: all .25s ease;
}
.box:hover + .bottom {
top: 55px;
opacity: 1;
}
<div class="box">
Hello
</div>
<div class="bottom">
Everyone
</div>
使用opacity 属性而不是显示来达到想要的效果,然后 使用以下代码
.box {
border: 1px solid black;
display: inline-block;
border-radius: 3px;
padding: 8px;
font-size: 20px;
}
.bottom {
background: pink;
width: 80px;
text-align: center;
position: absolute;
top: 80px;
left: 0;
opacity: 0;
}
.box:hover .bottom{
opacity: 1;
transition: opacity 0.2s , top 1s;
top: 55px;
}