zoukankan      html  css  js  c++  java
  • js中滑动门的实现方法和案例

    很多小伙伴想做滑动门的时候没有思路,今天就分享一个案例:

    下面这个div需要做滑动门效果

        <div class="cont">
            <ul>
                <li name="ulli"  class="active">按钮1</li>
                <li name="ulli" >按钮2</li>
                <li name="ulli" >按钮3</li>
            </ul>
            <ol>
                <li name="olli" class="active">内容1</li>
                <li name="olli">内容2</li>
                <li name="olli">内容3</li>
            </ol>
        </div>

    方法1循环遍历:

        var ullis = document.querySelectorAll('ul li');
        var ollis = document.querySelectorAll('ol li');
        //ul进行循环遍历
        ullis.forEach(function(item,key){
            //给item标签添加点击函数
            item.onclick = function(){
                //让ol也进行循环遍历,不管第几次循环,class都为空
                ollis.forEach(function(v,k){
                    v.className = '';
                    ollis[k].className = '';
                })
                //在ol循环同时,赋值给第key个item一个class标签,覆盖循环遍历的class标签
                item.className = 'active';
                //同时也给第key个ollis一个class标签,覆盖循环遍历的class标签
                ollis[key].className = 'active';
            }
        })

      核心思路:
      利用 ul 和 ol 中 li标签个数相同的 特点,优化程序,简化代码
      1,获取标签对象
      2,给所有的ul中的li标签,添加点击事件
      3,点击事件执行的内容
        (1),给所有的ul和ol中的li标签,清除样式
        (2),给当前点击的ul中的li标签,添加样式
        (3),给索引相同的ol中的li标签,添加样式
      可以用自己的方式实现,比如多写几个循环,分别操作ul和ol中的标签

    方法2事件委托:

        var oDiv = document.querySelector('div');
        var ullis = document.querySelectorAll('ul li');
        var ollis = document.querySelectorAll('ol li');
        //给父级div添加点击事件
        oDiv.onclick = function(e){
            //判断触发点击对象的标签如果有name属性为ulli,则表示点击的是ul标签中的li
            if(e.target.getAttribute('name') === 'ulli'){
                //ul中li循环遍历,给所有的标签清除样式属性
                ullis.forEach(function(item,key){
                    item.className = '';
                    ollis[key].className = '';
                    //并且给ul中的li标签定义属性
                    item.setAttribute('index',key);
                })
                //给当前ul中的li添加样式
                e.target.className = 'active';
                //利用ul中li的index的值key给ol中对应的下标添加属性
                ollis[e.target.getAttribute('index')].className = 'active';
            }
        }

    1、核心思想:
      利用 按钮标签 与 内容标签 标签数量是一一对应的关系
      通过点击 按钮标签 同时操作 对应的内容标签
    2、基本步骤:
      点击 按钮标签 时
      (1)给所有的li标签,包括ul,ol中的所有li标签,清除class样式
      (2)给当前点击的 按钮标签 添加样式
      (3)给对应的 内容标签 添加样式

    3、利用事件委托
      (1)给父级div,添加事件委托
      (2)判断点击 ul中的li时,执行程序
      (3)给所有的li清除class样式标签
         给点击的li添加class样式
         给点击的li对应的ol中的li,添加class样式

    A True Master Is An Eternal Student(真正的大师总是怀着一颗学徒的心) ------(Master Yi)
  • 相关阅读:
    hdu 1599 floyd 最小环(floyd)
    poj 1328 Radar Installation(贪心)
    poj 2488 A Knight's Journey(dfs)
    hdu 2544 最短路 (dijkstra)
    hdu 2015 偶数求和(水)
    hdu 2063 过山车(二分图最大匹配基础)
    hdu 1052 Tian Ji -- The Horse Racing(贪心)
    hdu 2122 Ice_cream’s world III(最小生成树)
    RabbitMQ中 exchange、route、queue的关系
    Windows安装Rabbitmq
  • 原文地址:https://www.cnblogs.com/karl-kidd/p/12624091.html
Copyright © 2011-2022 走看看