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

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

  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前端开发中常见的难点问题,本篇文章将详细介绍清除浮动的几种方法。 什么是浮动 浮动指的是将元素从其正常的文档流中移出,然后向左或向右移动,直到其外边缘触及包含块的边缘或另一个浮动元素的边缘。 为什么需要清除浮动 当我们对一个元素设置了浮动属性之后,其所处的容器将无法自动撑开以适应该元素的大小,从而影响整个页面布局。为了解决这个问题,我们需要清…

    css 2023年6月10日
    00
  • JqGrid web打印实现代码

    下面是详细讲解“JqGrid web打印实现代码”的完整攻略: JqGrid web打印实现代码详解 JqGrid web打印简介 JqGrid是一款基于jQuery的网页表格插件,它提供了丰富的功能和选项,可以非常轻松地创建和展示各种类型的表格。而JqGrid web打印实现代码则是在JqGrid的基础上,添加了网页打印的功能,方便用户在页面上进行数据打印…

    css 2023年6月10日
    00
  • CSS中固定宽度布局的详细教程

    下面是“CSS中固定宽度布局的详细教程”的完整攻略,分步骤讲解: 一、为什么需要固定宽度布局? 固定宽度布局是指网页中的各个元素宽度已经确定,不随浏览器窗口大小变化而变化。相对于弹性布局来说,它具有在布局设计上更好的控制力,同时用户体验也更稳定。 二、如何实现固定宽度布局? 实现固定宽度布局需要进行以下步骤: 1. 设置网页宽度 通过 CSS 中的 widt…

    css 2023年6月9日
    00
  • 深入挖掘Windows脚本技术第2/2页

    “深入挖掘Windows脚本技术”是一本深入讲解Windows脚本技术的书籍。其第2/2页主要讲述了如何利用Windows脚本技术进行网络编程、系统管理和编写自定义错误处理程序等方面的内容。 网络编程 在网络编程方面,通过使用Windows脚本技术,可以轻松地创建TCP/IP和UDP协议的网络应用程序。其具体示例如下: ‘ TCP连接客户端 Set objC…

    css 2023年6月10日
    00
  • CSS 嵌套DIV布局(position属性)

    CSS 嵌套DIV布局是指在 HTML 页面中嵌套多个DIV块,使用CSS的position属性对这些块进行定位和布局,实现多个块按一定的规则排列的效果。下面是实现CSS嵌套DIV布局的完整攻略: 步骤一:HTML 结构准备 在HTML页面中嵌套多个DIV块,使用id或class属性封装起来,方便使用CSS对它们进行布局。 下面是一个HTML结构示例: &l…

    css 2023年6月10日
    00
  • 一个简单的收缩菜单效果

    收缩菜单是一种常见的网页UI设计效果,可以在有限的空间内呈现更多的内容,增强网站的可读性和交互性。下面是一个简单的收缩菜单效果的完整攻略。 步骤一:准备HTML和CSS代码 首先,我们需要准备一个基本的HTML结构,包括一个固定宽度的顶部导航栏和一个带有列表内容的主体区域。代码如下: <!DOCTYPE html> <html> &l…

    css 2023年6月11日
    00
  • HTML和CSS的关键:盒子模型(Box model)

    HTML和CSS是网页制作基础技能,而盒子模型(Box model)是学习和使用这两种技术的关键。盒子模型是指网页中每一个元素都可以看做是一个长方形的盒子,该盒子包含了元素的内容、内边距(padding)、边框(border)和外边距(margin)。 盒子模型结构 盒子模型可以分为以下四个部分: 内容(Content):元素的真正内容,比如文本、图片; 内…

    css 2023年6月10日
    00
  • CSS教程(1):学习CSS背景相关知识

    下面是详细讲解“CSS教程(1):学习CSS背景相关知识”的完整攻略。 标题 CSS教程(1):学习CSS背景相关知识 概述 本教程将带领读者深入学习CSS中与背景相关的知识,包括背景颜色、背景图片以及背景定位等内容。 具体内容 1. 背景颜色 在CSS中,可以通过background-color属性来设置背景颜色。该属性可以接受任何有效的CSS颜色值。 示…

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