jquery+swiper组件实现时间轴滑动年份tab切换效果

下面是关于“jquery+swiper组件实现时间轴滑动年份tab切换效果”的完整攻略:

1. 准备工作

首先,我们需要引入jQuery和Swiper库,并且在HTML页面中创建好相关的DOM结构。例如,我们在页面中创建一个时间轴的整体容器(用一个div包含),并在其中放置一个swiper容器,再在swiper容器中创建每个年份的tab标签(用div包含,并设为inline-block布局)和tab内容(用div包含,每个tab内容设为swiper-slide类)。具体代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>时间轴滑动年份tab切换效果</title>
    <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
    <style>
        .timeline {
            position: relative;
            width: 100%;
            height: 400px;
            overflow: hidden;
        }
        .swiper-container {
            width: 100%;
            height: 100%;
        }
        .year-tab {
            display: inline-block;
            width: 80px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            font-size: 18px;
            color: #666;
            cursor: pointer;
        }
        .year-tab.active {
            color: #fff;
            background-color: #333;
        }
        .swiper-slide {
            height: 100%;
            box-sizing: border-box;
            padding: 20px;
            font-size: 16px;
            color: #333;
            background-color: #f5f5f5;
        }
        .swiper-slide p {
            margin: 0;
        }
    </style>
</head>
<body>
<div class="timeline">
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
                <p>这是第一个年份的内容</p>
            </div>
            <div class="swiper-slide">
                <p>这是第二个年份的内容</p>
            </div>
            <div class="swiper-slide">
                <p>这是第三个年份的内容</p>
            </div>
            <!-- 这里可以根据需求添加更多的年份 -->
        </div>
    </div>
    <div class="timeline-year">
        <div class="year-tab active">2019</div>
        <div class="year-tab">2020</div>
        <div class="year-tab">2021</div>
        <!-- 这里也可以根据需求添加更多的年份 -->
    </div>
</div>
<script src="https://unpkg.com/jquery/dist/jquery.min.js"></script>
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
</body>
</html>

2. 初始化Swiper实例

接下来,我们需要使用Swiper库创建一个swiper实例,使得我们可以在时间轴上滑动来切换年份的内容。创建swiper实例的过程较为简单,只需要在页面中添加以下代码:

var mySwiper = new Swiper('.swiper-container', {
    direction: 'horizontal',   // 垂直切换
    loop: true,    // 循环轮播
    slidesPerView: 'auto',   // 根据父容器自动调整宽度
});

3. 响应年份tab点击事件

为了实现年份tab的点击切换效果,我们需要添加一个点击事件监听器,监听每个年份tab的点击事件。在每次点击时,我们只需要切换当前tab的active类以及swiper实例的切换动画即可。代码如下:

var tabs = $('.year-tab');   // 获取所有年份tab
tabs.on('click', function () {
    // 切换tab的active类
    tabs.removeClass('active');
    $(this).addClass('active');
    // 切换swiper实例的轮播位置
    var index = $(this).index();
    mySwiper.slideToLoop(index, 500, false);
});

4. 细节优化

为了完善我们的时间轴滑动年份tab切换效果,我们还需要进行一些额外的细节优化,包括以下两点:

4.1 让当前年份tab始终处于可见区域

当我们在滑动时间轴时,当前的年份tab有可能被滑出了可见区域,这会影响我们的体验。为了解决这个问题,我们可以在每次swiper实例的切换动画结束后,判断当前选中的年份tab是否在可见区域,如果不在则将它滚动到可见区域即可。

// 给swiper实例添加一个回调函数,监听切换动画结束事件
mySwiper.on('transitionEnd', function () {
    // 判断当前选中的年份tab是否在可见区域
    var activeTab = $('.year-tab.active');
    if (activeTab.position().left + activeTab.outerWidth() > $(window).width()) {
        $('.timeline-year').animate({
            scrollLeft: activeTab.offset().left -$(window).width() / 2 + activeTab.outerWidth() / 2
        }, 500);
    } else if (activeTab.position().left < 0) {
        $('.timeline-year').animate({
            scrollLeft: activeTab.offset().left - $(window).width() / 2 - activeTab.outerWidth() / 2
        }, 500);
    }
});

4.2 优化移动端浏览体验

由于移动端设备的屏幕大小较小,我们需要对年份tab和swiper内容进行一些特殊处理,以优化移动端的浏览体验。例如,我们可以将年份tab的布局更改为上下布局,使得每个tab的高度占满整个swiper容器,这样就可以避免用户在移动端需要拖动才能将整个tab栏目完整展示出来的情况。同样地,我们也可以调整swiper-slide的样式,增加一些行距和字体大小,使得移动端用户可以更清晰地看到内容。

@media screen and (max-width: 768px) {
    .year-tab {
        display: block;
        width: 100%;
        height: 40px;
        line-height: 40px;
        text-align: center;
        font-size: 16px;
        color: #666;
        cursor: pointer;
    }
    .swiper-slide {
        padding: 10px 20px;
        font-size: 14px;
        line-height: 1.5em;
    }
}

到这里,我们就成功地实现了“jquery+swiper组件实现时间轴滑动年份tab切换效果”这个功能。完整的代码示例见下面。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>时间轴滑动年份tab切换效果</title>
    <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
    <style>
        .timeline {
            position: relative;
            width: 100%;
            height: 400px;
            overflow: hidden;
        }
        .swiper-container {
            width: 100%;
            height: 100%;
        }
        .year-tab {
            display: inline-block;
            width: 80px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            font-size: 18px;
            color: #666;
            cursor: pointer;
        }
        .year-tab.active {
            color: #fff;
            background-color: #333;
        }
        .swiper-slide {
            height: 100%;
            box-sizing: border-box;
            padding: 20px;
            font-size: 16px;
            color: #333;
            background-color: #f5f5f5;
        }
        .swiper-slide p {
            margin: 0;
        }
        @media screen and (max-width: 768px) {
            .year-tab {
                display: block;
                width: 100%;
                height: 40px;
                line-height: 40px;
                text-align: center;
                font-size: 16px;
                color: #666;
                cursor: pointer;
            }
            .swiper-slide {
                padding: 10px 20px;
                font-size: 14px;
                line-height: 1.5em;
            }
        }
    </style>
</head>
<body>
<div class="timeline">
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
                <p>这是第一个年份的内容</p>
            </div>
            <div class="swiper-slide">
                <p>这是第二个年份的内容</p>
            </div>
            <div class="swiper-slide">
                <p>这是第三个年份的内容</p>
            </div>
            <!-- 这里可以根据需求添加更多的年份 -->
        </div>
    </div>
    <div class="timeline-year">
        <div class="year-tab active">2019</div>
        <div class="year-tab">2020</div>
        <div class="year-tab">2021</div>
        <!-- 这里也可以根据需求添加更多的年份 -->
    </div>
</div>
<script src="https://unpkg.com/jquery/dist/jquery.min.js"></script>
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
<script>
    $(function () {
        var mySwiper = new Swiper('.swiper-container', {
            direction: 'horizontal',   // 垂直切换
            loop: true,    // 循环轮播
            slidesPerView: 'auto',   // 根据父容器自动调整宽度
        });
        var tabs = $('.year-tab');   // 获取所有年份tab
        tabs.on('click', function () {
            // 切换tab的active类
            tabs.removeClass('active');
            $(this).addClass('active');
            // 切换swiper实例的轮播位置
            var index = $(this).index();
            mySwiper.slideToLoop(index, 500, false);
        });
        mySwiper.on('transitionEnd', function () {
            // 判断当前选中的年份tab是否在可见区域
            var activeTab = $('.year-tab.active');
            if (activeTab.position().left + activeTab.outerWidth() > $(window).width()) {
                $('.timeline-year').animate({
                    scrollLeft: activeTab.offset().left -$(window).width() / 2 + activeTab.outerWidth() / 2
                }, 500);
            } else if (activeTab.position().left < 0) {
                $('.timeline-year').animate({
                    scrollLeft: activeTab.offset().left - $(window).width() / 2 - activeTab.outerWidth() / 2
                }, 500);
            }
        });
    });
</script>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery+swiper组件实现时间轴滑动年份tab切换效果 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • DataTables pageLength 选项

    以下是关于DataTables pageLength选项的完整攻略: pageLength选项是什么? pageLength选项是DataTables中的一个选项用于设置表格每页显示的行数。使用pageLength选项,可以设置表格每页显示的行数。 如何使用Length选项? 可以使用以下代码设置pageLength选项: $(‘#example’).Dat…

    jquery 2023年5月12日
    00
  • jQuery 鼠标事件

    jQuery提供了多种鼠标事件,包括click、dblclick、mousedown、mouseup、mousemove、mouseover和mouseout等这些事件可以用于响应用户在页面上的鼠标操作。 以下是鼠标事件的详细攻略: 语法 $(selector).click(function) $(selector).dblclick(function) $…

    jquery 2023年5月9日
    00
  • jQuery页面刷新(局部、全部)问题分析

    下面是关于“jQuery页面刷新(局部、全部)问题分析”的完整攻略: 1. 为什么需要局部刷新? 在Web开发中,页面刷新对用户体验来说是很糟糕的。在一些Web应用中,如社交媒体,购物网站,消息系统等,经常需要更新页面上的某些部分,而不是整个页面刷新。这样能够提供更好的性能、更快的响应时间和更良好的用户体验。同时,这种局部刷新技术也称为Ajax技术。 2. …

    jquery 2023年5月27日
    00
  • jQWidgets jqxExpander enable()方法

    jQWidgets jqxExpander enable()方法 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包括表格下拉等。jqxExpander是jQWidgets的组件之一,用于创建可折叠的面板。enable()方法是jqxExpander的一个方法,用于启用jqxExpander组件。 enable()方法的基本语法…

    jquery 2023年5月9日
    00
  • jQuery插件Tmpl的简单使用方法

    下面我将详细讲解一下 “jQuery插件Tmpl的简单使用方法” 的完整攻略。 什么是jQuery插件Tmpl jQuery插件Tmpl是一种轻量级的JavaScript模板库,用于在客户端动态生成HTML模板,其提供的模板语法非常简单易懂,而且可以自定义模板标签,非常灵活。 如何使用jQuery插件Tmpl 引入jQuery插件Tmpl 在使用jQuery…

    jquery 2023年5月28日
    00
  • 实例学习JavaScript读取和写入cookie

    下面是实例学习JavaScript读取和写入cookie的完整攻略。 什么是Cookie? Cookie是存储在用户计算机上的小文件,它通常包含有关用户的信息,例如网站首选项、购物车中的商品等等。网站可以通过JavaScript读取和写入cookie来存储这些信息。 如何读取Cookie? 要读取cookie,可以使用JavaScript中的document…

    jquery 2023年5月27日
    00
  • vue实现选中效果

    下面是关于“vue实现选中效果”的完整攻略。 1. 实现思路 Vue实现选中效果的思路主要是通过为指定元素绑定一个属性或者类名,然后通过样式控制实现选中效果。一般情况下,选中状态和未选中状态分别对应不同的样式。 2. 实现步骤 以下是通过Vue实现选中效果的步骤: 2.1 在Vue中定义一个数据变量,用于保存当前选中的元素对应的索引值: <templa…

    jquery 2023年5月18日
    00
  • jQuery简介

    jQuery简介 什么是jQuery jQuery是一种JavaScript库,可以简化常见的任务,如对HTML文档进行操作、处理事件、创建动画效果和处理AJAX请求等。jQuery可以让JavaScript代码更短、更简洁,并且减少了不同浏览器之间的差异。 安装jQuery 要使用jQuery,首先需要引用jQuery库文件。您可以通过以下方式引入jQue…

    jquery 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部