jQuery实现自动与手动切换的滚动新闻特效代码分享

下面我来详细讲解“jQuery实现自动与手动切换的滚动新闻特效代码分享”的完整攻略。这个特效可以让你的网站拥有带有无限滚动、自动播放、手动切换等功能的新闻动态栏。步骤如下:

  1. 制作HTML结构

首先,我们需要在HTML页面中添加一个容器的div,然后在其中添加新闻动态内容和按钮区域:

<div class="news-container">
  <ul class="news-box">
    <li>新闻1</li>
    <li>新闻2</li>
    <li>新闻3</li>
    <li>新闻4</li>
    <li>新闻5</li>
  </ul>
  <div class="btn-box">
    <button class="prev-btn">&lt;</button>
    <button class="next-btn">&gt;</button>
  </div>
</div>

这里,我们采用无序列表(ul)来存放新闻动态内容。按钮区域可以使用div容器或按钮元素(button、a)来实现。

  1. CSS样式设置

接下来,我们需要给新闻容器和按钮容器设置样式:

.news-container {
  width: 500px;
  height: 300px;
  position: relative;
  overflow: hidden;
}
.news-box {
  position: absolute;
  left: 0;
  top: 0;
  width: 500px;
  height: 300px;
  padding: 0;
  margin: 0;
}
.news-box li {
  list-style: none;
  height: 60px;
  line-height: 60px;
  font-size: 24px;
  text-align: center;
  color: #333;
}
.btn-box {
  position: absolute;
  right: 0;
  top: 50%;
  z-index: 999;
  transform: translateY(-50%);
}
.prev-btn,
.next-btn {
  display: inline-block;
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  background-color: #ccc;
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  margin: 0 10px;
}

这里,我们设置新闻容器的宽度、高度和布局方式。设置无序列表的位置、大小和属性,同时为每个新闻条目设置样式。设置按钮容器的位置、大小和样式。最后,为上一页和下一页按钮设置样式。

  1. jQuery插件引用

在文件头部引入jQuery插件:

<head>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
  1. jQuery实现

接下来,我们要使用jQuery实现自动播放和手动切换。

$(function() {
  var newsHeight = $(".news-box li").height(); // 每条新闻的高度
  var newsCount = $(".news-box li").length; // 新闻的总数
  var newsBoxHeight = $(".news-box").height(); // 新闻框高度
  var newsIndex = 0; // 当前显示的新闻索引

  // 点击上一页
  $(".prev-btn").click(function() {
    newsIndex--;
    if (newsIndex < 0) {
      newsIndex = newsCount - 1;
      $(".news-box").css("top", -newsHeight * (newsCount-1));
    }
    $(".news-box").stop().animate({top: -newsHeight * newsIndex}, 500);
  });

  // 点击下一页
  $(".next-btn").click(function() {
    newsIndex++;
    if (newsIndex >= newsCount) {
      newsIndex = 0;
      $(".news-box").css("top", 0);
    }
    $(".news-box").stop().animate({top: -newsHeight * newsIndex}, 500);
  });

  // 自动滚动
  var timer = setInterval(function() {
    $(".next-btn").click();
  }, 2000);

  // 鼠标移入移出事件
  $(".news-container").hover(function() {
    clearInterval(timer);
  }, function() {
    timer = setInterval(function() {
      $(".next-btn").click();
    }, 2000);
  });
});

这里,我们首先获取新闻高度、新闻总数和新闻框高度。然后,我们监听上一页和下一页按钮的点击事件,利用animate()函数实现新闻切换。接着,我们使用setInterval()函数实现自动滚动,使用hover()函数来取消或重新开启自动滚动。

示例1:利用jQuery插件实现

除了上面的手写方法,我们还可以使用jQuery插件来实现自动切换的新闻特效。以下为一个例子:

<div class="news-container2">
  <ul class="news-box2">
    <li>新闻1</li>
    <li>新闻2</li>
    <li>新闻3</li>
    <li>新闻4</li>
    <li>新闻5</li>
  </ul>
</div>

<script>
  $(function() {
    $(".news-box2").liMarquee({
      direction: "up",
      scrollamount: 20,
      circular: true,
      drag: false,
      hoverstop: false
    });
  });
</script>

此时无需手写代码,我们只需引入liMarquee插件,然后给ul添加class="news-box2"即可实现相同的效果。

示例2:改良版

最终我们可以改良一下代码,来达到更好的效果。我们可以添加动画进度条,以更直观的方式提示用户当前所处新闻的位置。下面是改良后的示例代码:

<div class="news-container3">
  <ul class="news-box3">
    <li>新闻1</li>
    <li>新闻2</li>
    <li>新闻3</li>
    <li>新闻4</li>
    <li>新闻5</li>
  </ul>
  <div class="progress-box3">
    <div class="progress-bar3"></div>
  </div>
</div>

<script>
  $(function() {
    var newsHeight = $(".news-box3 li").height();
    var newsCount = $(".news-box3 li").length;
    var newsBoxHeight = $(".news-box3").height();
    var newsIndex = 0;
    var progressBar = $(".progress-bar3");

    $(".news-box3").append($(".news-box3 li:first").clone(true)); // 末尾添加第一条新闻

    $(".prev-btn, .next-btn").click(function() {
      var buttonClass = $(this).attr("class");
      if (buttonClass.indexOf("prev-btn") >= 0) {
        newsIndex--;
        if (newsIndex < 0) {
          newsIndex = newsCount - 1;
          $(".news-box3").css("top", -newsHeight * (newsCount));
        }
      }
      else {
        newsIndex++;
      }

      if (newsIndex >= newsCount + 1) {
        newsIndex = 0;
        $(".news-box3").css("top", 0);
      }

      $(".news-box3").stop().animate({top: -newsHeight * newsIndex}, 500, function() {
        if (newsIndex == newsCount) {
          $(".news-box3").css("top", 0);
          newsIndex = 0;
        }
        updateProgressBar();
      });
    });

    $(".progress-box3").click(function(e) {
      var offsetTop = $(this).offset().top;
      var boxTop = $(".news-box3").offset().top;
      var relativeTop = offsetTop - boxTop + newsHeight;
      var clickIndex = Math.floor(relativeTop / newsHeight) - 1;
      if (clickIndex == newsCount) {
        newsIndex = 0;
        $(".news-box3").css("top", 0);
        clickIndex = 0;
      }
      else {
        newsIndex = clickIndex;
      }
      $(".news-box3").stop().animate({top: -newsHeight * clickIndex}, 500, function() {
        updateProgressBar();
      });
    });

    function updateProgressBar() {
      var progressHeight = newsBoxHeight / (newsCount + 1);
      progressBar.stop().animate({height: progressHeight * (newsIndex + 1)}, 500);
    }
  });
</script>

<style>
.news-container3 {
  width: 500px;
  height: 300px;
  position: relative;
  overflow: hidden;
}
.news-box3 {
  position: absolute;
  left: 0;
  top: 0;
  width: 500px;
  height: 300px;
  padding: 0;
  margin: 0;
}
.news-box3 li {
  list-style: none;
  height: 60px;
  line-height: 60px;
  font-size: 24px;
  text-align: center;
  color: #333;
}
.progress-box3 {
  position: absolute;
  right: 0;
  top: 0;
  width: 10px;
  height: 300px;
  background-color: #ddd;
}
.progress-bar3 {
  width: 10px;
  height: 0;
  background-color: #f00;
}
</style>

这里我们添加了末尾添加第一条新闻、点击进度条和进度条动画等改造方案,让效果更加完整和优美。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现自动与手动切换的滚动新闻特效代码分享 - Python技术站

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

相关文章

  • Ajax清除浏览器js、css、图片缓存的方法

    当我们开发网站或者 web 应用的时候,经常会碰到浏览器缓存导致页面或资源更新不及时的问题,而根据 HTTP 缓存机制,浏览器首先会检查本地的缓存是否足够新鲜,如果新鲜则直接使用,否则才会向服务器重新请求资源,因此我们需要手动清除浏览器的缓存。 本文将介绍使用 Ajax 来清除浏览器中各种资源的缓存,其中包括js,css,图片资源等等。 一、清除 js 的缓…

    jquery 2023年5月28日
    00
  • 用jquery和json从后台获得数据集的代码

    首先,我们需要将数据存储在后台。假设我们有一个名为data.json的文件,里面存储了我们要获取的数据。数据结构如下: [ {"name": "item 1", "description": "This is item 1"}, {"name": "…

    jquery 2023年5月19日
    00
  • jQuery UI Sortable update事件

    jQuery UI 的 Sortable 组件提供了一个 update 事件,该事件在 Sortable 实例中的项目位置发生更改时触发。在本教程中,我们将详细介绍 Sortable 的 update 事件的使用。 update 事件基本语法如: $( ".selector" ).sortable({ update: function( …

    jquery 2023年5月11日
    00
  • jQWidgets jqxButton imgHeight属性

    jQWidgets jqxButton imgHeight属性详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxButton是其中之一。本文将详细介绍jqButton的imgHeight属性,包括定义、语法和示例。 imgHeight属性的定义 jqxButton的imgHeight用于设置按钮图像的高度。 imgH…

    jquery 2023年5月10日
    00
  • jQuery通过ajax请求php遍历json数组到table中的代码(推荐)

    下面我来详细讲解一下“jQuery通过ajax请求php遍历json数组到table中的代码(推荐)”的完整攻略。 首先,我们需要明确以下几点: AJAX:AJAX(Asynchronous JavaScript and XML)是一种通过JavaScript异步运行HTTP请求的技术。可以在不重新加载整个网页的情况下,与服务器交换数据并更新部分网页内容。 …

    jquery 2023年5月28日
    00
  • Jquery日期选择datepicker插件用法实例分析

    jQuery日期选择datepicker插件用法实例分析 jQuery日期选择datepicker是一个非常常用的日期选择插件,可以帮助我们快速地实现日期的选择,提高开发效率。下面我们将详细讲解该插件的使用方法和实例分析。 安装 使用该插件前,需要先引入jQuery库文件和datepicker插件文件。 <!– 引入jQuery库文件 –> …

    jquery 2023年5月28日
    00
  • jQWidgets jqxDataTable editSettings 属性

    以下是关于“jQWidgets jqxDataTable editSettings 属性”的完整攻略,包含两个示例说明: 简介 editSettings 是 jqx 控件的一个属性,用于设置表格的编辑设置。 详细攻略 以下是 jqxDataTable 控件的 editSettings 属性的详细攻略: 使用 editSettings 属性 在 jqxData…

    jquery 2023年5月11日
    00
  • jquery+swiper组件实现时间轴滑动年份tab切换效果

    下面是关于“jquery+swiper组件实现时间轴滑动年份tab切换效果”的完整攻略: 1. 准备工作 首先,我们需要引入jQuery和Swiper库,并且在HTML页面中创建好相关的DOM结构。例如,我们在页面中创建一个时间轴的整体容器(用一个div包含),并在其中放置一个swiper容器,再在swiper容器中创建每个年份的tab标签(用div包含,并…

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