使用html5+css3来实现slider切换效果告别javascript+css

yizhihongxing

HTML5 和 CSS3 的引入,使得在网页设计和建设方面有了很多新的特性和技术,可以实现更多的功能,slider 切换效果就是其中一个。下面是使用 HTML5 和 CSS3 来实现 slider 切换效果的完整攻略,其中包括两个示例:

一、基础版

1. HTML 结构

首先需要准备 HTML 代码,基础版的 HTML 代码如下:

<div class="slider">
  <ul class="slider-items">
    <li>
      <img src="http://lorempixel.com/800/400/food/" alt="">
      <div class="slider-caption">
        <h2>Slider 1</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
    <li>
      <img src="http://lorempixel.com/800/400/sports/" alt="">
      <div class="slider-caption">
        <h2>Slider 2</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
    <li>
      <img src="http://lorempixel.com/800/400/business/" alt="">
      <div class="slider-caption">
        <h2>Slider 3</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
  </ul>
</div>

其中,.slider 是外层容器,.slider-items 是图片轮播列表,每个轮播项包含一张图片和文字描述。

2. CSS 样式

接下来需要添加 CSS 样式,使得轮播效果可以正常显示。基础版的 CSS 样式如下:

.slider {
  position: relative;
  width: 100%;
  overflow: hidden;
  display: inline-block;
}

.slider-items li {
  position: absolute;
  left: 0;
  top: 0;
  opacity: 0;
  z-index: 1;
  transition: opacity 0.4s ease-in-out;
}

.slider-items li:nth-child(1) {
  opacity: 1;
  z-index: 2;
}

.slider-items li.active {
  opacity: 1;
  z-index: 2;
}

.slider-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
  background: rgba(0,0,0,0.7);
  color: #fff;
  padding: 20px;
  margin: 0;
  transition: bottom 0.4s ease-in-out;
}

.slider-caption h2 {
  font-size: 2rem;
  margin: 0 0 10px;
}

.slider-caption p {
  margin: 0;
}

.slider-items li.active .slider-caption {
  bottom: 0;
}

这里的样式主要是设置轮播的基本属性,包括轮播容器的宽度、轮播项的定位方式、轮播文字的位置、字体大小等。使用 transition 属性可以使得轮播效果呈现出来。

3. 添加 JavaScript

最后,需要添加一小段 JavaScript 代码,来控制轮播效果的展示和切换。基础版的 JavaScript 代码如下:

let slideIndex = 1;
showSlides(slideIndex);

function showSlides(n) {
  let i;
  let slides = document.getElementsByClassName("slider-items")[0].getElementsByTagName("li");
  if (n > slides.length) { slideIndex = 1 }
  if (n < 1) { slideIndex = slides.length }
  for (i = 0; i < slides.length; i++) {
    slides[i].className = slides[i].className.replace(" active", "");
  }
  slides[slideIndex - 1].className += " active";
  setTimeout(function () { showSlides(slideIndex += 1) }, 5000);
}

这段 JavaScript 代码的作用是,先隐藏所有的轮播项,再通过计时器定时切换轮播项的显示。

二、进阶版

基础版的轮播效果已经可以呈现出来了,但是为了增加一些特性和美观度,可以对轮播效果进行进一步的升级。下面是一个进阶版的示例:

1. HTML 结构

同样是需要先准备 HTML 代码,并且进阶版的 HTML 代码相对于基础版来说,更加复杂一些。示例的 HTML 代码如下:

<div class="slider">
  <ul class="slider-items">
    <li>
      <img src="http://lorempixel.com/800/400/food/" alt="">
      <div class="slider-caption">
        <h2>Slider 1</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
    <li>
      <img src="http://lorempixel.com/800/400/sports/" alt="">
      <div class="slider-caption">
        <h2>Slider 2</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
    <li>
      <img src="http://lorempixel.com/800/400/business/" alt="">
      <div class="slider-caption">
        <h2>Slider 3</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
    <li>
      <img src="http://lorempixel.com/800/400/technics/" alt="">
      <div class="slider-caption">
        <h2>Slider 4</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
      </div>
    </li>
  </ul>
  <div class="slider-controls">
    <a class="slider-controlprev" href="#">Prev</a>
    <a class="slider-controlnext" href="#">Next</a>
  </div>
  <div class="slider-pager"></div>
</div>

这里多了两个 div 元素,一个是轮播控制的 div 元素,另一个是轮播页码的 div 元素。

2. CSS 样式

然后设置 CSS 样式,进阶版的 CSS 样式与基础版差异不大,只需增加一些样式就行了,示例代码如下:

.slider {
  position: relative;
  width: 100%;
  overflow: hidden;
  display: inline-block;
}

.slider-items {
  width: 400%;
  transition: all 0.4s ease-in-out;
}

.slider-items li {
  position: relative;
  display: inline-block;
  width: 25%;
  min-height: 400px;
}

.slider-items li img {
  max-width: 100%;
  display: block;
  height: auto;
}

.slider-items li .slider-caption {
  width: 80%;
  left: 10%;
  bottom: -80px;
  opacity: 0;
  transition: all 0.4s ease-in-out;
  position: absolute;
  text-align: center;
}

.slider-items li .slider-caption h2 {
  margin: 0 0 5px;
  font-size: 32px;
  color: #fff;
  text-shadow: none;
}

.slider-items li.active .slider-caption {
  opacity: 1;
  bottom: 20px;
}

.slider-items li:nth-child(1) {
  background: #c53929;
}

.slider-items li:nth-child(2) {
  background: #00897b;
}

.slider-items li:nth-child(3) {
  background: #6d4c41;
}

.slider-items li:nth-child(4) {
  background: #2e7d32;
}

.slider-controls {
  position: absolute;
  width: 100%;
  left: 0;
  bottom: 0;
  text-align: center;
  z-index: 10;
  transition: all 0.4s ease-in-out;
  padding: 20px;
}

.slider-controlprev,
.slider-controlnext {
  display: inline-block;
  background: rgba(255,255,255,0.7);
  color: #000;
  padding: 10px 20px;
  margin: 0 10px;
  font-size: 16px;
  text-decoration: none;
  transition: all 0.4s ease-in-out;
  border-radius: 5px;
}

.slider-controlnext:hover,
.slider-controlprev:hover {
  background: #fff;
}

.slider-controlnext {
  position: absolute;
  right: 20px;
  bottom: 20px;
}

.slider-controlprev {
  position: absolute;
  left: 20px;
  bottom: 20px;
}

.slider-pager {
  text-align: center;
  position: absolute;
  bottom: 20px;
  left: 45%;
  transform: translateX(-50%);
}

.slider-pager a {
  display: inline-block;
  background: rgba(255,255,255,0.7);
  color: #000;
  width: 12px;
  height: 12px;
  margin: 0 10px;
  border-radius: 50%;
  text-decoration: none;
  transition: all 0.4s ease-in-out;
}

.slider-pager a.active,
.slider-pager a:hover {
  background: #fff;
}
.slider-pager a.active {
  box-shadow: 0 0 5px rgba(0,0,0,0.5);
}

这里的主要区别是在轮播项的布局上,使用 display: inline-blockmin-height 实现等高布局,同时添加了轮播控制和轮播页码的样式。

3. 添加 JavaScript

最后,在进阶版的示例中需要添加更多的 JavaScript 代码,主要是实现轮播控制和轮播页码的功能。示例 JavaScript 代码如下:

let slideIndex = 1;
showSlides(slideIndex);

function showSlides(n) {
  let i;
  let slides = document.getElementsByClassName("slider-items")[0].getElementsByTagName("li");
  let dots = document.getElementsByClassName("slider-pager")[0].getElementsByTagName("a");
  if (n > slides.length) { slideIndex = 1 }
  if (n < 1) { slideIndex = slides.length }
  for (i = 0; i < slides.length; i++) {
    slides[i].className = slides[i].className.replace(" active", "");
  }
  for (i = 0; i < dots.length; i++) {
    dots[i].className = dots[i].className.replace(" active", "");
  }
  slides[slideIndex - 1].className += " active";
  dots[slideIndex - 1].className += " active";
}

document.getElementsByClassName("slider-controlprev")[0].onclick = function () {
  slideIndex -= 1;
  showSlides(slideIndex);
}

document.getElementsByClassName("slider-controlnext")[0].onclick = function () {
  slideIndex += 1;
  showSlides(slideIndex);
}

document.getElementsByClassName("slider-pager")[0].onclick = function (e) {
  if (e.target.tagName === "A") {
    let pagerIndex = parseInt(e.target.getAttribute("data-slide-to"));
    slideIndex = pagerIndex;
    showSlides(slideIndex);
  }
}

其中,showSlides 函数用于控制轮播效果,slideIndex 用于标识当前显示的轮播项,slideIndex -= 1slideIndex += 1 控制轮播项的切换,data-slide-to 用于标识轮播页码的位置。

以上就是使用 HTML5 和 CSS3 来实现 slider 切换效果的完整攻略,有了以上的示例代码,可以根据自己的需求来修改对应的属性和样式,来完成自己想要的轮播效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用html5+css3来实现slider切换效果告别javascript+css - Python技术站

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

相关文章

  • 设计一个有趣的网站的方法与技巧(图)

    设计一个有趣的网站的方法与技巧 想要设计一个有趣的网站需要掌握一些方法与技巧。下面我来介绍一下: 1.确定网站的定位和主题 网站的定位和主题决定了网站的风格和内容。确定好定位和主题,才能更好地进行后续的设计。 2.制定网站目录结构 网站目录结构的合理性会给用户带来良好的浏览体验和导航效果。可以考虑使用分层的方式对网站进行分类,以方便用户快速找到所需内容。 3…

    css 2023年6月11日
    00
  • vue自适应布局postcss-px2rem详解

    首先我们需要了解一下什么是自适应布局和px2rem。 自适应布局 自适应布局是指网页能够根据屏幕尺寸自动调整布局,从而实现在不同的终端设备上呈现出更好的用户体验。在传统的网页设计中,设计师通常会设置一个固定的像素值作为布局单位,但是这种布局难以适应不同屏幕尺寸的设备。因此,采用自适应布局的设计方法可以有效解决这个问题。 px2rem px2rem是一种将像素…

    css 2023年6月11日
    00
  • BootStrapValidator初使用教程详解

    BootStrapValidator初使用教程详解 什么是 Bootstrap Validator Bootstrap Validator 是一个 jQuery 插件,它为表单验证提供了强大的支持。它可以在客户端对表单进行验证,用户在提交表单之前就可以知道表单是否正确。Bootstrap Validator 可以验证所有 HTML 输入元素,包括文本输入框、…

    css 2023年6月9日
    00
  • CSS性能优化提高css性能的方法

    CSS性能优化是Web开发中非常重要的一部分,可以提高网站的加载速度和用户体验。以下是一些提高CSS性能的方法: 1. 减少CSS文件的大小 CSS文件的大小对网站的加载速度有很大的影响。因此,可以采取以下措施来减少CSS文件的大小: 删除不必要的CSS代码:删除不必要的CSS代码,例如未使用的样式、重复的样式和注释等。 压缩CSS文件:使用CSS压缩工具来…

    css 2023年5月18日
    00
  • CSS3实现各种图形的示例代码

    那我来给你详细讲解一下CSS3实现各种图形的示例代码的攻略。 准备工作 在开始实现各种图形之前,我们需要确保在HTML文件中引用了CSS文件,这里我们可以通过以下代码引入: <link rel="stylesheet" href="style.css"> 接着我们需要定义一些基础的CSS样式,比如背景色、字…

    css 2023年6月10日
    00
  • jQuery插件编写步骤详解

    下面是“jQuery插件编写步骤详解”的完整攻略,分为以下几个步骤: 步骤一:创建基本的HTML代码和CSS样式 首先,我们需要创建一个HTML页面,并且在页面中引入jQuery库和我们自己写的插件文件。然后,在HTML页面中创建一个用于显示插件效果的盒子,并设置该盒子的样式。具体的HTML和CSS代码可以参考以下示例: <!DOCTYPE html&…

    css 2023年6月10日
    00
  • 使用HTML5 Canvas为图片填充颜色和纹理的教程

    接下来我将为您详细讲解“使用HTML5 Canvas为图片填充颜色和纹理的教程”。具体步骤如下: 准备工作 在开始之前,我们需要做一些准备工作: 确定你要为哪张图片填充颜色或纹理; 要准备好填充的颜色或纹理图片; 了解一些 HTML5 Canvas 的基础知识。 为图像填充颜色 下面我们来通过实例讲解如何为图像填充颜色: 首先,将需要填充颜色的图像绘制到 C…

    css 2023年6月9日
    00
  • CSS预处理器Sass详解

    CSS预处理器Sass详解 简介 CSS预处理器Sass是一种基于CSS的领先的编程式样式表语言,是由Ruby语言编写而成,旨在简化CSS的编写和维护。Sass具有许多高级功能,如变量、嵌套规则、Mixin、模块化、函数等。Sass为Web开发者提供了更加灵活且易于维护的样式表编写方式,并且它可以被用于任何的Web开发项目中。 安装 安装Sass需要先安装R…

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