将过渡应用到 div
Apply transition to div
我有 3 个 divs
并排放置,背景 div
。我们将背景称为 div
bg div
。每当 3 divs
之一得到 selected 时,bg div
就会位于 selected div
的顶部。 (基本上,类似于分段控制器。)
当我尝试将 bg div
转换到新位置时。我做了以下转换:
transition: left linear .2s;
当你第一次 select a div
时,动画不会发生,但是 bg div
会移动到正确的位置(只是没有动画).第二次点击后,就可以了。
如何向背景添加过渡 div
?
$('.inner').click(function() {
var pos = $(this).position();
$("#back").css('left', pos.left + "px");
});
#wrapper {
width: 600px;
height: 30px;
position: relative;
}
.inner {
display: block;
float: left;
width: calc(100% / 3);
height: 50px;
}
#back {
background-color: yellow;
height: 100%;
z-index: -1;
width: calc(100% / 3);
position: relative;
transition: left linear 1s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div class="inner">First Option</div>
<div class="inner">Second Option</div>
<div class="inner">Third Option</div>
<div id="back"></div>
</div>
要使转换生效,应定义动画开始的初始值。
这里 #back
没有初始 left
值,因此在第一次点击时,它会直接跳转到点击时定义的 left
位置。
这将作为下一个过渡的初始值,因此从那时起您将看到过渡中的动画。
所以您需要做的就是在 css 中添加 left:0px;
for #back
。
希望对您有所帮助。
您应该为 css 添加 left: 0;
属性 #back
$('.inner').click(function() {
var pos = $(this).position();
$("#back").css('left', pos.left + "px");
});
#wrapper {
width: 600px;
height: 30px;
position: relative;
}
.inner {
display: block;
float: left;
width: calc(100% / 3);
height: 50px;
}
#back {
background-color: yellow;
height: 100%;
z-index: -1;
width: calc(100% / 3);
position: relative;
transition: left linear 1s;
left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div class="inner">First Option</div>
<div class="inner">Second Option</div>
<div class="inner">Third Option</div>
<div id="back"></div>
</div>
我有 3 个 divs
并排放置,背景 div
。我们将背景称为 div
bg div
。每当 3 divs
之一得到 selected 时,bg div
就会位于 selected div
的顶部。 (基本上,类似于分段控制器。)
当我尝试将 bg div
转换到新位置时。我做了以下转换:
transition: left linear .2s;
当你第一次 select a div
时,动画不会发生,但是 bg div
会移动到正确的位置(只是没有动画).第二次点击后,就可以了。
如何向背景添加过渡 div
?
$('.inner').click(function() {
var pos = $(this).position();
$("#back").css('left', pos.left + "px");
});
#wrapper {
width: 600px;
height: 30px;
position: relative;
}
.inner {
display: block;
float: left;
width: calc(100% / 3);
height: 50px;
}
#back {
background-color: yellow;
height: 100%;
z-index: -1;
width: calc(100% / 3);
position: relative;
transition: left linear 1s;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div class="inner">First Option</div>
<div class="inner">Second Option</div>
<div class="inner">Third Option</div>
<div id="back"></div>
</div>
要使转换生效,应定义动画开始的初始值。
这里 #back
没有初始 left
值,因此在第一次点击时,它会直接跳转到点击时定义的 left
位置。
这将作为下一个过渡的初始值,因此从那时起您将看到过渡中的动画。
所以您需要做的就是在 css 中添加 left:0px;
for #back
。
希望对您有所帮助。
您应该为 css 添加 left: 0;
属性 #back
$('.inner').click(function() {
var pos = $(this).position();
$("#back").css('left', pos.left + "px");
});
#wrapper {
width: 600px;
height: 30px;
position: relative;
}
.inner {
display: block;
float: left;
width: calc(100% / 3);
height: 50px;
}
#back {
background-color: yellow;
height: 100%;
z-index: -1;
width: calc(100% / 3);
position: relative;
transition: left linear 1s;
left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<div class="inner">First Option</div>
<div class="inner">Second Option</div>
<div class="inner">Third Option</div>
<div id="back"></div>
</div>