Zepto实现移动端tab选项

知识点

  1. 移动端适口

    <meta name="viewport" content="width=device-width, user-scalable=no">
    
  2. 新闻div占200% 每一个都占父标签50% 左浮

  3. Zepto中swip实现滑动、tap实现点击

  4. index()获取下标

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <title></title>
    <style>
        *{margin: 0;padding:0;border:none;list-style:none;
            touch-action: none;box-sizing: border-box;}
        .box{position: relative;}
        .head{ width: 100%; height: 40px; background-color: #ccc;}
        .head li{width: 50%; height: 100%; float: left; display: flex;
            justify-content: center; align-items: center;
            font-size: 18px;font-weight: bold;
        }
        .head li.current{color: #e9232c;}
        .line{width: 50%;height: 3px;background-color: #e9232c;
              position: absolute;left: 0;top: 37px;}
        .list{width: 200%;overflow: hidden;}
        .list>div{width: 50%;float: left;}
        .list>div ul{padding: 10px;}
        .list>div ul li{height: 36px;line-height: 36px;
            border-bottom: 1px solid #000;
        }
        .more{
            width: 100%;
            text-decoration: none;
            color: #000;
            display: flex;
            justify-content: center;
            align-items: center;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul class="head">
            <li class="current">新闻</li>
            <li>科技</li>
        </ul>
        <span class="line"></span>
        <div class="list">
            <div class="list1">
                <ul>
                    <li>新闻内容新闻内容新闻内容</li>
                    <li>新闻内容新闻内容新闻内容</li>
                    <li>新闻内容新闻内容新闻内容</li>
                    <li>新闻内容新闻内容新闻内容</li>
                    <li>新闻内容新闻内容新闻内容</li>
                </ul>
                <a href="#" class="more">查看更多...</a>
            </div>
            <div class="list2">
                <ul>
                    <li>科技内容科技内容科技内容</li>
                    <li>科技内容科技内容科技内容</li>
                    <li>科技内容科技内容科技内容</li>
                    <li>科技内容科技内容科技内容</li>
                    <li>科技内容科技内容科技内容</li>
                </ul>
                <a href="#" class="more">查看更多...</a>
            </div>
        </div>
    </div>

<script src="js/zepto.min.js"></script>
<script src="js/touch.js"></script>
<script>
    $(function () {
        // 1. 监听点击事件
        $('.head li').tap(function () {
            // 1.1 获取点击的索引
            var index = $(this).index();
            // 1.2 改变选中样式
            $(this).addClass('current').siblings().removeClass('current');
            // 1.3 处理线条的样式
            $('.line').css({
                 transform: 'translateX(' + index * 100 +'%)',
                 transition: 'all 0.25s linear'
            });
            // 1.4 处理列表
            $('.list').css({
                transform: 'translateX(' + -index * 50 +'%)',
                transition: 'all 0.25s linear'
            })
        });
        // 2. 监听左滑动和右滑动
        var $list = $('.list');
        $list.swipeLeft(function () {
            dealWithSwipe(1);
        });
        $list.swipeRight(function () {
            dealWithSwipe(0);
        });

        /**
         *  统一处理左右滑动
         * @param index 索引
         */
        function dealWithSwipe(index) {
            // 1.2 改变选中样式
            $('.head li').eq(index).addClass('current').siblings().removeClass('current');

            // 1.3 处理线条的样式
            $('.line').css({
                transform: 'translateX(' + index * 100 +'%)',
                transition: 'all 0.25s linear'
            });

            // 1.4 处理列表
            $('.list').css({
                transform: 'translateX(' + -index * 50 +'%)',
                transition: 'all 0.25s linear'
            })
        }
    });
</script>
</body>
</html>

运行结果

发布了270 篇原创文章 · 获赞 123 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/KaiSarH/article/details/104598621