CSS3的animation和transform写的动画和JS的动画对比

CSS3的animation和transform写的动画和JS的动画对比

JavaScript实现的轮播的例子是这样的js完整代码如下:

<script>
        var ul = document.getElementsByClassName('tuul')[0];
        var li = document.querySelectorAll(".dian ul li");
        console.log(li);
        var main = document.getElementsByClassName('main')[0];
        var num = ul.children.length;
        console.log(num);
        var chang = ul.children[0].clientWidth;
        var timer;
        var t;
        //重复移动事件
        t = setInterval(function () {
            Move(ul, ul.offsetLeft - chang, function () {
                if (ul.offsetLeft >= -(num - 1) * chang) {
                    ul.style.left = '0px';
                }
            });
        }, 2000)

        //移动事件
        function Move(ele, target, callback) {
            clearInterval(timer);
            timer = setInterval(function () {

                var iSpeed = (target - ele.offsetLeft) / 7;
  iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
                ele.style.left = ele.offsetLeft + iSpeed + 'px';

                if (ele.offsetLeft == target) {
                    clearInterval(timer);
                    typeof callback == 'function' && callback();
                }
            }, 30)
            
        for (let i = 0; i < li.length; i++) {
           li[i].onmouseover  = function () {
             clearInterval(t)
             clearInterval(timer)
             this.style.color="#f40";
             Move(ul, - i * chang, function () {
                if (ul.offsetLeft >= -(num - 1) * chang) {
                   ul.style.left = '0px';
               }
                        
           })
         }
       }
    }
    //鼠标移出div时的事件
    main.onmouseout = function () {
      clearInterval(t)
      t = setInterval(function () {
      Move(ul, ul.offsetLeft - chang, function () {
          if (ul.offsetLeft == -(num - 1) * chang) {
              ul.style.left = '0px';
         }
      });
   }, 2000)
}
</script>

用纯CSS3实现的轮播代码:

/*css reset start*/
*{
margin:0;
padding:0;
}
ul,li{
list-style: none;
}
/*css reset end*/

/*css public start*/
.floatfix {
*zoom: 1;
}
.floatfix:after {
content: "";
display: table;
clear: both;
}
/*css public end*/

/*slider start*/
.slider-contaner{
width:100%;
position:relative;
}
.slider-item + .slider-item{
opacity:0;
}
.slider-item{
width:100%;
position:absolute;
animation-timing-function: linear;
animation-name:fade;
animation-iteration-count: infinite;
background-size:100%;
}
.focus-container{
position:absolute;
z-index:7;
margin:0 auto;
left:0;
right:0;
}
.focus-container li{
width:10px;
height:10px;
border-radius:50%;
float:left;
margin-right:10px;
background:#fff;
}
.focus-item{
width:100%;
height:100%;
border-radius:inherit;
animation-timing-function: linear;
animation-name:fade;
animation-iteration-count: infinite;
}
.focus-item2,.focus-item3,.focus-item4,.focus-item5{
opacity:0;
}
.focus-container ul{
margin-left:46%;
}
/*设置轮播焦点的位置*/
.focus-container{
bottom:2%;
}
/*设置当前图片焦点的颜色*/
.focus-item{
background:#51B1D9;
}
/*设置动画,请根据实际需要修改秒数*/
.slider-item,.focus-item{
animation-duration: 20s;
}
.slider-item1,.focus-item1{
animation-delay: -1s;
}
.slider-item2,.focus-item2{
animation-delay: 3s;
}
.slider-item3,.focus-item3{
animation-delay: 7s;
}
.slider-item4,.focus-item4{
animation-delay: 11s;
}
.slider-item5,.focus-item5{
animation-delay: 15s;
}
@keyframes fade{
0%{
opacity:0;
z-index:2;
}
5%{
opacity:1;
z-index: 1;
}
20%{
opacity:1;
z-index:1;
}
25%{
opacity:0;
z-index:0;
}
100%{
opacity:0;
z-index:0;
}
}
/*设置背景,响应式请利用媒体查询根据断点修改路径*/
.slider-item1{
background-image:url(imgs/1.jpg);
}
.slider-item2{
background-image:url(imgs/2.jpg);
}
.slider-item3{
background-image:url(imgs/3.jpg);
}
.slider-item4{
background-image:url(imgs/4.jpg);
}
.slider-item5{
background-image:url(imgs/5.jpg);
}
/*设置图片的高度,请根据具体需要修改百分比,响应式及时修改此值*/
.slider,.slider-item{
padding-bottom:40%;
}
JS和CSS3上面新增的属性的区别和使用场景:

他们两个区别就是,JS是可以动态在页面上加上标签和图片甚至其他的元素,而CSS3实现的则需要在页面上有这个元素或者元素上面有选择器的名字,例如:ID选择器的名字、Class选择器的名字等等。但是CSS3上面的属性也不是没有用的,就是实现一些小的动画效果的时候很有用,一些小动画不可能去使用js语法吧,这样的话就会是页面的负荷就大了,这样页面的加载速度就会变慢,所有在写一些大的动画效果的时候最好是使用js,而写一些小动画的时候就使用CSS3上面的animation和transform还有transition这个属性,就比如说transform上面的放大的效果和旋转的效果不可能用一个单独的js文件写来实现吧,并且使用transform的同样也减少了代码量,这也是所有程序员想要的。
还要在很多的商务网站上面有的或使用CSS3上面的旋转和动画来实现一些小的功能,而一些需要轮播的地方好多人会选择去使用JS来实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值