jquery - css 转换不能与 jquery 一起工作

标签 jquery css

我正在尝试向元素添加 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; 但它不起作用。任何帮助将不胜感激。

http://jsfiddle.net/nwy333pe/

提前致谢。

最佳答案

您可能可以使用 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/

相关文章:

php - jQuery 和 php 文件上传

javascript - 单击另一行编辑时启用表单

javascript - 是否可以通过在 jQuery 中单击 Y 来运行 X 事件(无需访问 X)?

IE 的 JavaScript 问题

css - 如何在我的子窗口中使用 Site.css?

html - 不能居中框 - 愚蠢的问题?

javascript - 如何在jquery中动态初始化组件到输入字段

html - float 侧边栏需要 100% 高度问题

javascript 添加复选框选中的值

html - href 属性与我的 css 悬停规则冲突