原生js和css实现图片轮播效果

yizhihongxing

实现图片轮播效果,需要涉及到以下几个步骤:

  1. 设置容器和图片的布局样式;
  2. 编写js代码控制图片轮播;
  3. 配置定时器实现轮播自动播放;
  4. 编写css代码实现图片的过渡效果。

下面,我们就来详细讲解如何用原生js和css实现图片轮播效果。

1. 设置容器和图片的布局样式

首先,需要在HTML页面上设置一个容器,容器内包含多张图片,如下所示:

<div class="slider">
    <img src="image1.jpg" alt="">
    <img src="image2.jpg" alt="">
    <img src="image3.jpg" alt="">
    <img src="image4.jpg" alt="">
    <img src="image5.jpg" alt="">
</div>

然后,在CSS样式表中设置容器的样式:

.slider {
    position: relative;
    width: 500px;
    height: 300px;
    overflow: hidden;
}

其中,position: relative;表示设置容器为相对定位,让容器内的图片可以根据容器的位置进行移动;width: 500px;height: 300px;分别表示容器的宽度和高度;overflow: hidden;表示隐藏容器内的溢出部分,这样可以使得图片轮播时只显示一个图片。

接着,在CSS样式表中设置图片的样式:

.slider img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    z-index: 1;
    transition: all 1s ease-in-out;
}

其中,position: absolute;表示设置图片为绝对定位;top: 0;left: 0;表示设置图片的位置为容器的左上角;width: 100%;height: 100%;表示设置图片的宽度和高度为容器的宽度和高度,从而使得图片可以填满整个容器;opacity: 0;表示设置图片的透明度为0,让图片被隐藏;z-index: 1;表示设置图片的层级为1,即在轮播过程中会被覆盖;transition: all 1s ease-in-out;表示设置图片的过渡效果,这里是使得图片1s内逐渐显示或隐藏。

2. 编写js代码控制图片轮播

在HTML页面底部引入一段js代码,用来控制图片的轮播:

<script>
    var sliderIndex = 1; // 图片的索引值
    var sliderTimer = null; // 定时器

    // 获取所有图片
    var sliderImg = document.querySelectorAll('.slider img');

    // 显示第一张图片
    sliderImg[0].style.opacity = 1;

    // 执行自动轮播
    sliderTimer = setInterval(function() {
        sliderIndex++;
        if (sliderIndex > sliderImg.length) {
            sliderIndex = 1;
        }
        slide(sliderIndex);
    }, 3000);

    // 图片轮播函数
    function slide(index) {
        for (var i = 0; i < sliderImg.length; i++) {
            sliderImg[i].style.opacity = 0;
        }
        sliderImg[index - 1].style.opacity = 1;
    }
</script>

这段代码的逻辑如下:

  1. 设置sliderIndex变量,用来记录当前显示的图片的索引值;
  2. 设置sliderTimer变量,用来记录定时器ID;
  3. 使用document.querySelectorAll()方法获取所有的图片;
  4. 设置第一张图片的透明度为1,即显示第一张图片;
  5. 使用setInterval()方法设置定时器,每隔3秒切换一次图片;
  6. 当切换到最后一张图片时,将sliderIndex重置为1;
  7. 调用slide()函数执行图片轮播过程;
  8. slide()函数中,使用for循环将所有的图片的透明度设置为0,然后再将要显示的图片的透明度设置为1。

3. 配置定时器实现轮播自动播放

在上面的js代码中,我们使用了setInterval()方法来实现图片的自动切换。这个方法接收两个参数:

  • 第一个参数是一个回调函数,表示定时器到期时要执行的代码;
  • 第二个参数是定时器的时间间隔,即每隔多少毫秒执行一次回调函数。

在上面的代码中,我们将时间间隔设置为3000毫秒,即3秒。

4. 编写css代码实现图片的过渡效果

在CSS样式表中,我们为每一张图片都设置了过渡效果,这样可以让图片在切换时呈现出一种渐变的效果,使得轮播更加平滑。我们使用的是transition属性,它可以控制元素的过渡效果。

具体来说,我们将transition设置为all 1s ease-in-out,其中:

  • all表示对所有CSS属性都进行过渡效果;
  • 1s表示过渡效果的时间为1秒;
  • ease-in-out表示过渡效果采用缓动函数,在开始和结束时速度较慢,在中间时速度较快。

示例1:使用原生JS和CSS实现简单的图片轮播效果
可参考:https://www.jianshu.com/p/14f4f6a5d9ab
在此示例中,我们创建一个名为“slider”的容器,并在其中添加了一组图片。然后,我们使用原生JS和CSS来控制图片的显示和隐藏,从而实现了一个简单的图片轮播效果。

示例2:使用原生JS和CSS实现简单的垂直滚动效果
可参考:https://www.cnblogs.com/myjik/p/5966250.html
这个示例也是使用原生JS和CSS来实现垂直滚动效果,不同的是,它是在一个固定高度的容器内进行滚动,而不是轮播图片。我们通过JS来动态改变容器的top值,从而实现了图片的垂直滚动。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js和css实现图片轮播效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Web时代变迁及html5与html4的区别

    Web时代变迁及html5与html4的区别: Web从诞生至今,经历了不少的变迁。目前我们广泛使用的Web大多数是基于HTML,而HTML也从刚开始的HTML4逐渐演变至HTML5。HTML5相较于HTML4,新增了一些特性和改进了一些性能,下面我们详细讲解HTML5与HTML4的区别。 一、HTML5与HTML4的语言类型 HTML5:<!DOCT…

    css 2023年6月9日
    00
  • DIV+CSS+JS不间断横向滚动实现代码

    DIV+CSS+JS不间断横向滚动实现代码的攻略分为以下几个步骤: HTML布局 首先需要使用div标签创建一个包含所有滚动内容的容器,并设置样式overflow: hidden;,让容器内容不可见。 <div class="scroll-container"> <div class="scroll-conte…

    css 2023年6月10日
    00
  • CSS基础知识之float详解

    CSS基础知识之float详解 在CSS中,float(浮动)是一个常用的样式属性,可以让元素脱离文档流并左右浮动。在布局中,浮动常用于实现多栏布局、文字环绕图片等效果。本文将详细讲解float属性的使用方法。 float属性的基础用法 float属性可以被用于元素的样式表中。它可以设置为left、right或none。其中,left表示元素左浮动,righ…

    css 2023年6月10日
    00
  • Bootstrap每天必学之面板

    Bootstrap每天必学之面板 Bootstrap 是一个流行的 HTML、CSS 和 JavaScript 框架,提供了丰富的 UI 组件,使得构建现代化 Web 应用变得更加轻松和高效。面板是 Bootstrap 组件库中一个常用的 UI 控件,用于展示内容块,并提供一个漂亮的边框和样式。 本篇文章将为大家介绍如何创建和使用 Bootstrap 面板,…

    css 2023年6月9日
    00
  • Bootstrap 折叠(Collapse)插件用法实例详解

    Bootstrap 折叠(Collapse)插件用法实例详解 什么是 Bootstrap 折叠(Collapse)插件 Bootstrap 折叠(Collapse)插件是一个 JavaScript 插件,用于折叠和展开内容。它可以用于隐藏或显示大段的文本或其他 HTML 元素,只需要添加一些简单的 HTML 和 JavaScript 代码即可。 如何使用 B…

    css 2023年6月11日
    00
  • CSS 辐射渐变背景 radial-gradient的实现

    下面我就详细讲解一下如何实现CSS 辐射渐变背景 radial-gradient。 什么是CSS 辐射渐变背景 radial-gradient CSS 辐射渐变背景 radial-gradient 是 CSS3 增加的一种渐变背景技术,它通过放置圆形和椭圆形的颜色之间进行平滑的渐变,可以创建出非常漂亮的渐变效果。它的语法如下: background: rad…

    css 2023年6月9日
    00
  • CSS文本阴影 text-shadow 悬停效果详解

    CSS文本阴影 text-shadow 悬停效果详解 文本阴影是在字体背后添加投影效果,让字体看起来有立体和浮动的效果。 text-shadow 属性可以添加阴影效果,以逐步增加各种文字的 3D 效果,文本阴影可以用于各种文本或标题。 语法 text-shadow: h-shadow v-shadow blur-radius color; 参数 h-shad…

    css 2023年6月10日
    00
  • css判断不同分辨率显示不同宽度布局实现自适应宽度

    实现 CSS 判断不同分辨率显示不同宽度布局的关键技术是通过 CSS 媒体查询(Media Query),其中,媒体查询是通过检测设备特性和浏览器特性来判断采用何种样式表进行渲染,从而使得同一份 HTML 代码用户依然可以获得最佳的用户体验。下面是实现该技术的完整攻略: 首先,需要使用 meta 标签指定页面宽度和缩放。常见的 meta 标签形式如下: ht…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部