原生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日

相关文章

  • CSS字体属性全解析

    CSS字体属性全解析 在CSS中,字体属性是一组用于控制文本字体的属性。本攻略将详细讲解CSS字体属性,包括基本原理、使用方法和示例说明。 1. 基本原理 CSS字体属性是一组用于控制文本字体的属性,包括字体类型、字体大小、字体样式、字体粗细等。具体来说,CSS字体属性包括以下几个: font-family:字体类型。 font-size:字体大小。 fon…

    css 2023年5月18日
    00
  • jQuery实现可编辑的表格实例讲解(2)

    下面我将为您详细讲解关于“jQuery实现可编辑的表格实例讲解(2)” 的完整攻略。 1. 简单介绍 本篇攻略将针对 jQuery 实现可编辑表格的实例进行讲解。通过使用 jQuery,可以实现在表格中获得实时编辑的效果。这样可以增加用户的操作便捷性和在数据处理方面的灵活性。 2. 前置依赖 在实现可编辑表格前,我们需要准备以下工具和资源: jQuery 3…

    css 2023年6月10日
    00
  • vue实现拖拽小图标

    Vue实现拖拽小图标的过程可以分为以下几步: 在Vue组件中,引入需要拖拽的小图标的组件,并给组件绑定拖拽开始、拖拽结束、拖拽过程中的事件处理函数。具体代码如下: <template> <div> <draggable-item @dragstart="onDragStart" @dragend="…

    css 2023年6月10日
    00
  • 纯Css实现Div高度根据自适应宽度(百分比)调整

    实现Div高度随宽度自动调整,其实主要是通过设置padding参数的百分比值或使用padding-top和padding-bottom属性实现。这样可以根据所给定的比例计算出高度,从而实现Div的高度自适应调整。 具体实现步骤如下: 1. 在CSS中,使用vw/vh改变Div的宽高比 vw/vh指的是视口宽度/高度的百分比,当页面大小发生改变时,宽高比会自动…

    css 2023年6月9日
    00
  • 详解强大的jQuery选择器之基本选择器、层次选择器

    强大的jQuery选择器是jQuery库中最有用的模块之一,它提供了一种快速方便的方式来选择DOM元素,在操作DOM时帮助我们节省了很多时间。本文将详细讲解jQuery选择器的基本选择器和层次选择器。 基本选择器 基本选择器是指最常用的一组选择器,它们可以根据元素类型、id、class、属性等条件来选择元素。 1. 根据元素类型选择 选择元素的最基本方式就是…

    css 2023年6月9日
    00
  • vue文件使用iconfont解析

    关于“vue文件使用iconfont解析”的完整攻略,以下是详细的步骤说明: 1. 在iconfont官网上创建图标库 首先需要在iconfont官网进行图标库的创建和管理,这里不再赘述。创建好图标库之后,可以在库里选择需要使用的图标,将其添加到“购物车”里面,并下载图标库相关文件。 2. 创建Vue项目 使用Vue-cli创建新项目,执行命令: vue c…

    css 2023年6月10日
    00
  • css background-position 用法详细图文介绍

    CSS background-position 用法详细图文介绍 什么是 background-position CSS 的 background-position 属性用于设置元素背景图像的起始位置。 默认情况下,背景图片从元素的左上角开始,然后向下和向右延伸,而 background-position 属性允许您更改该行为,从而影响背景图像占用的空间。 …

    css 2023年6月9日
    00
  • HTML5响应式(自适应)网页设计的实现

    实现HTML5响应式(自适应)网页设计的步骤如下: 第一步:理解响应式设计的概念 响应式设计是通过使用不同的技术,使网站的布局和内容适应不同的设备(如电脑、平板电脑和手机)的屏幕大小和分辨率,从而提供更好的用户体验。 第二步:使用流式网格进行布局 流式网格是响应式设计的一个关键部分,它允许网页的内容随着浏览器窗口大小而自适应。在HTML5中,可以使用CSS3…

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