为什么我这个代码没有动画效果

为什么我这个代码没有动画效果


<!DOCTYPE html>

<html dir="ltr">

  <head>

    <meta charset="utf-8">

    <title></title>

    <style media="screen">

    body{

      width: 500px;

      margin: 100px auto;

    }

    *{

      margin:0;

      padding: 0;

    }

      .left{

        width: 250px;

        height: 50px;

        background: green;

        text-align: center;

        border: none;

      }

      .right{

        border:none;

        width: 250px;

        height: 50px;

        text-align: center;

        background: yellow;

      }

      .box{

        display: none;

        width: 500px;

        height: 400px;

        background-color: red;

      }

      .transtion{

        transition: all .5s;

      }

      .fadeout{

        visibility: hidden;

        opacity: 0;

      }

      .slideup{

        height: 0 !important;

        padding: 0 !important;

      }

      .slideleft{

        width: 0 !important;

        padding: 0 !important;

      }

    </style>

  </head>

  <body>

    <button type="button" class="left" name="button">left</button><button type="button" class="right" name="button">right</button>

    <div class="box">


    </div>


    <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>



<script type="text/javascript">

function init(ele,callback) {

  if(ele.is(':hidden')){

    ele.data('status','hidden')

    if(callback === 'function'){

      callback()

    }

  }else{

    ele.data('status','shown')

  }

}

function show(ele,callback) {

  if(ele.data('status') === 'show') return;

  if(ele.data('status') === 'shown') return;

  ele.data('status','show').trigger('show')

  callback()

}

function hide(ele,callback) {

  if(ele.data('status') === 'hide') return;

  if(ele.data('status') === 'hidden') return;

  ele.data('status','hide').trigger('hide')

  callback()

}

var js = {

slideleft:{

  init:function (ele) {

    var styles = {};

    styles['width'] = ele.css('width');

    styles['padding-left'] = ele.css('padding-left');

    styles['padding-right'] = ele.css('padding-right');

    ele.data('styles',styles)

    ele.removeClass('transtion')

    console.log(styles)

    init(ele,function () {

    ele.css({

    'width':0,

    'padding-left':0,

    'padding-right':0,

    })

    console.log(ele.css('width'))

  })

},

  show:function (ele) {

  show(ele,function () {

      var styles = ele.data('styles')

        ele.show()

    ele.stop().animate({

        'width':styles['width'],

        'padding-left':styles['padding-left'],

        'padding-right':styles['padding-right'],

      },function () {

      ele.data('status','shown').trigger('shown')

    })

  })

  },

  hide:function (ele) {

    hide(ele,function () {

      ele.stop().animate(function () {

        // var styles = ele.data('styles')

        // ele.show()

        ele.css({

          'width':0,

          'padding-left':0,

          'padding-right':0,

        })

      },function () {

        ele.hide()

        ele.data('status','hidden').trigger('hidden')

      })

    })

  }


}}



var box = $('.box')

js.slideleft.init(box)

  $('.left').on('click',function () {


    js.slideleft.show(box)//,function() {



  })

  box.on('show shown hide hidden',function (e) {

    console.log(e.type)


  })




  $('.right').on('click',function() {

    js.slideleft.hide(box)

  })


</script>


  </body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

animate要有一个动画过程,比如说宽度由0-500,不能使用show()显示来完成。所以你这样只能显示与隐藏,没有动画。参考:

http://img1.sycdn.imooc.com//climg/5b95d97d0001e2bf03960228.jpg

http://img1.sycdn.imooc.com//climg/5b95d9880001944a03860215.jpg

自己测试下,祝学习愉快~~

路大锤 2018-09-09 13:03:45

实现动画特效是要设置的,可以用css3的动画,还可以用jQuery的animation,你先检查一下有没有做动态特效。如果帮助了你,请采纳!

好帮手慕星星 2018-09-07 09:43:15

经用Chrome浏览器测试,效果如下:

点击‘left’,box显示:

http://img1.sycdn.imooc.com//climg/5b91d73f0001ee7f06780560.jpg

打印‘show’和‘shown’:

http://img1.sycdn.imooc.com//climg/5b91d75d0001e21901260066.jpg

点击‘right’,box隐藏:

http://img1.sycdn.imooc.com//climg/5b91d77300014bda03320149.jpg

打印‘hide’和‘hiden’:

http://img1.sycdn.imooc.com//climg/5b91d78300013ca601310066.jpg

效果是没有问题的哦,自己测试的时候是没有这些效果吗?建议使用主流浏览器测试下哦,祝学习愉快~~

  • 提问者 慕无忌6236884 #1
    显示隐藏效果是有的,我说的是为什么没有向左向右滑动显示隐藏的效果,我的代码获取了box的width也设置了让它等于0 了啊
    2018-09-08 21:45:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师