我正在尝试向元素添加 css 过渡效果,如下所示:
$('.trans-opener').click(function () {
$(this).nextAll().slice(0, 3).toggleClass('trans-hidden');
});
.row{
padding: 50px;
}
.trans-hidden {
display: none;
position: absolute;
right: 15px;
}
ul{
list-style:none;
margin:0px;
padding:0px;
}
ul li {
float: right;
padding-left: 15px;
}
ul li .icon {
height: 32px;
width: 32px;
background-color: #cdcdcd;
line-height: 35px;
border-radius: 50%;
transition: all 0.3s;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="col-xs-3">
<div></div>
</div>
<div class="col-xs-9">
<ul>
<li class="trans-opener"><a href="#"><div class="icon"><i class="fa fa-ellipsis-h"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-facebook"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-twitter"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-heart"></i></div></a>
</li>
</ul>
</div>
</div>
当我单击 (...) 三点图标时,会出现其他图标。但我正在尝试为图标提供过渡效果。我尝试了 transition: all 0.3s;
但它不起作用。任何帮助将不胜感激。
提前致谢。
最佳答案
您可能可以使用 jQuery fadeIn()
函数更轻松地实现这一点,如下所示:
$('.trans-opener').click(function () {
$(this).nextAll().slice(0, 3).fadeToggle();
});
.row{
padding: 50px;
}
.trans-hidden {
display: none;
/*position: absolute;*/
right: 15px;
}
ul{
list-style:none;
margin:0px;
padding:0px;
}
ul li {
float: right;
padding-left: 15px;
}
ul li .icon {
height: 32px;
width: 32px;
background-color: #cdcdcd;
line-height: 35px;
border-radius: 50%;
transition: all 0.3s;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="col-xs-3">
<div></div>
</div>
<div class="col-xs-9">
<ul>
<li class="trans-opener"><a href="#"><div class="icon"><i class="fa fa-ellipsis-h"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-facebook"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-twitter"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-heart"></i></div></a>
</li>
</ul>
</div>
</div>
如果您希望它们展开(即向右移动),您需要分别为它们指定位置。试试这个:
$('.trans-opener').click(function () {
var icons = $(this).nextAll().slice(0, 3)
if(icons.is(":visible")){
$(icons).animate({right: 60}, function(){ icons.toggle(); });
}
else{
icons.toggle();
$(icons[0]).animate({right: 200});
$(icons[1]).animate({right: 150});
$(icons[2]).animate({right: 100});
}
});
.row{
padding: 50px;
}
.trans-hidden {
display: none;
position: absolute;
right: 60px;
}
ul{
list-style:none;
margin:0px;
padding:0px;
}
ul li {
float: right;
padding-left: 15px;
}
ul li .icon {
height: 32px;
width: 32px;
background-color: #cdcdcd;
line-height: 35px;
border-radius: 50%;
transition: all 0.3s;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="col-xs-3">
<div></div>
</div>
<div class="col-xs-9">
<ul>
<li class="trans-opener"><a href="#"><div class="icon"><i class="fa fa-ellipsis-h"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-facebook"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-twitter"></i></div></a>
</li>
<li class="trans-hidden"><a href="#"><div class="icon"><i class="fa fa-heart"></i></div></a>
</li>
</ul>
</div>
</div>
关于jquery - css 转换不能与 jquery 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902985/