js点击选项置顶动画效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>js置顶动画</title>
    <style>
      *{margin:0;padding:0;}
      ul {width: 1000px;margin:100px auto;position:relative;}
      li {position:absolute;height: 100px;width:900px;font-size:30px;background:#fff;line-height:100px;border:1px solid #eee;list-style:none;padding-left:50px;margin-top:-1px;transition:all .8s ease;}
      li button {float:right;position:relative;top:40px;right:30px;}
    </style>
</head>
<body>
  <ul>
    <li data-index="0">
      <span>内容0</span>
      <button>置顶</button>
    </li>
    <li data-index="1">
      <span>内容1</span>
      <button>置顶</button>
    </li>
    <li data-index="2">
      <span>内容2</span>
      <button>置顶</button>
    </li>
    <li data-index="3">
      <span>内容3</span>
      <button>置顶</button>
    </li>
    <li data-index="4">
      <span>内容4</span>
      <button>置顶</button>
    </li>
  </ul>
</body>
<script>
  function $$(str) {return document.querySelectorAll(str);}
  // 初始化排序
  function intData () {
    for (let i = 0, len = $$('ul li').length; i < len; i++) {
      $$('ul li')[i].style.top = (i * 101) + 'px'; 
      $$('ul li')[i].style.zIndex = (i * 101); 
    }
  }
  function bindEvent () {
    for (let i = 0, len = $$('ul li').length; i < len; i++) {
      $$('ul li')[i].onclick = function() {
        // 将点击的节点追加到第一个
        let first = this.parentNode.firstChild;
        this.parentNode.insertBefore(this, first);
        setTimeout(() => {
          intData();
        }, 50);
      };
    }
  }
  intData();
  bindEvent();
</script>
</html>
发布了165 篇原创文章 · 获赞 139 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/CodingNoob/article/details/102480374