分享好友 教程首页 教程搜索 频道列表

原生js实现横向 tab 栏切换,选中项自动滚动居中

2022-03-19 01:142890
+关注29
核心提示:需要用代码测试

css:

<style>
        .container {
            height: 200px;
            width: 800px;
            background-color: #eee;
            white-space: nowrap;
            overflow: auto;
            position: relative;
            
            scroll-behavior: smooth; 
            margin: 0 auto;
        }
        .item {
            width: 220px;
            height: 100px;
            background-color: blue;
            display: inline-block;
            text-align: center;
            line-height: 100px;
        }
        .item:nth-child(2n) {
            background-color: pink;
        }
    </style>


html:

 <div class="container">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
        <div class="item">7</div>
        <div class="item">8</div>
        <div class="item">9</div>
        <div class="item">10</div>
    </div>


JS:

<script>
        // 获取到 container 整个盒子
        var container = document.querySelector(".container");

        // 获取包裹盒子 container.offsetWidth
        var containerW = container.offsetWidth;

        // 找到所有需要被点击的 item 的集合
        var itemList = document.querySelectorAll(".item");

        // 遍历数组
        for (let i = 0; i < itemList.length; i++) {
            // 给每个元素添加点击事件
            itemList[i].onclick = function () {

                // 获取到当前点击元素的 offsetLeft  - 包裹盒子 offsetWidth 的一半 + 当前点击元素 offsetWidth 的一半
                var scrollLeftNum =itemList[i].offsetLeft - containerW / 2 + itemList[i].offsetWidth / 2; 
                console.log(scrollLeftNum,'距离')

                // 赋值
                container.scrollLeft = scrollLeftNum;
            }
        }
</script>


注意:( 如果不想要横向滚动条 )
在最外层包裹的盒子加上样式 :

   .container::-webkit-scrollbar {
            display: none;
    }


本文标签: #tab #切换 #居中 #移动端 #h5
整理员:小黑
免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
生成海报
您可能在找更多

Sortable.js:功能强大的JavaScript拖拽库,不依赖JS

    JS库介绍Sortable.js一个功能强大的JavaScript 拖拽库!!!用于在网页上创建可拖放和可排序的元素。它提供了简单而强大的 API,使开发人员能够轻松地实现拖放功能,并允许用户通过拖放来重新排序列表、网格和其他元

网络转载 JavaScript教程2024-04-28

jquery拖拽排序,针对后台列表table进行拖拽排序(测试有用)

    现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序。话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js先上html代码,很简单:

网络转载 JavaScript教程2023-03-16

jQuery-ui插件sortable实现自由拖动排序

    自行用代码测试

网络转载 JavaScript教程2023-03-15

解决TAB切换需拉一下才触发Lazyload懒加载方法

    处理方法就是通过给TAB绑定事件,监控TAB的切换时触发Lazyload懒加载。代码如下

小黑 PC端模板制作2022-09-03

关于touchslider.js滑动切换页面的使用

    需用代码测试

网络转载 移动端模板制作2022-03-19

下一篇
我来说两句
抢沙发