显示与隐藏动画有什么好的方案吗?

例子

就像这个动画一样的效果,div先是隐藏的,点击按钮后显示并且有动画效果,隐藏的时候同样。但我绝对我写的太复杂,有没有更简单的方案呢(不要第三方库)!

阅读 6k
5 个回答

试试用transition:
demo

比较简单的思路是:

  1. 方块无需隐藏,只需要设置高度为0就看不见了

  2. transition实现动画效果

  3. 不需要使用hiddenshow两个类名来控制,其实它就只有两种状态,所以可以认为无show就是隐藏了

  4. 另外无需写一个show()hide()分开绑定,其实你这个按钮点一下是展开,再点一下隐藏,用一个toggle()切换显示状态就可以了

我在你的代码上做了点修改,如下:
https://jsfiddle.net/boxsnake...

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <style type="text/css">
        .box{
            background: red;
            height: 200px;
            width: 200px;
            transition: height 0.8s;
        }
    </style>
    <body>
        <button onclick="changeHeight()">click me</button>
        <div class="box" style="height: 0;"></div>
    </body>
    <script src="https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
        function changeHeight(){
            var box=$('.box')
            if($('.box').height()!=0){
                $('.box').height(0)
            }else{
                $('.box').height(200)
            }
            
        }
    </script>
</html>

题主可以配合CSS3解决(如果不需要兼容IE的话)

可以用jquery实现吗?

//头部引入jquery,toggle()
<body>
    <p>bugbugbug</p>
    <button>Toggle</button>
    <script type="text/javascript">
    $(document).ready(function() {
        $("button").click(function() {
            $("p").toggle(1000);
        });
    });
    </script>
</body>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏