HTML+CSS动画打造酷炫轮播图!(含源码)

简介: HTML+CSS动画打造酷炫轮播图!(含源码)

先上效果

   


🌟如何让内容呈现更加吸引人成为设计师和开发者的挑战。大气实用的HTML5/CSS动画轮播图提供了一种解决方案,它结合了视觉美感和动态效果,使得信息展示不仅大气而且具有高度的实用性。本文将探讨如何利用HTML5和CSS的动画特性,设计出既美观又功能丰富的轮播图,提升用户体验。

   

完整代码

   

HTML

<div class="slider">
          <div class="slider-wrapper">
            <img src="./img/1.png" alt="" />
          </div>
          <div class="slider-footer">
            <p>标题1</p>
            <ul class="slider-indicator">
              <li class="active"></li>
              <li></li>
              <li></li>
              <li></li>
              <li></li>
              <li></li>
              <li></li>
              <li></li>
            </ul>
            <div class="toggle">
              <button class="prev">&lt;</button>
              <button class="next">&gt;</button>
            </div>
          </div>
        </div>

CSS代码:

* {
          box-sizing: border-box;
        }
     
        .slider {
          width: 560px;
          height: 400px;
          overflow: hidden;
          margin-left: 300px;
        }
     
        .slider-wrapper {
          width: 100%;
          height: 320px;
        }
     
        .slider-wrapper img {
          width: 100%;
          height: 100%;
          display: block;
        }
     
        .slider-footer {
          height: 80px;
          background-color: rgb(100, 67, 68);
          padding: 12px 12px 0 12px;
          position: relative;
        }
     
        .slider-footer .toggle {
          position: absolute;
          right: 0;
          top: 12px;
          display: flex;
        }
     
        .slider-footer .toggle button {
          margin-right: 12px;
          width: 28px;
          height: 28px;
          appearance: none;
          border: none;
          background: rgba(255, 255, 255, 0.1);
          color: #fff;
          border-radius: 4px;
          cursor: pointer;
        }
     
        .slider-footer .toggle button:hover {
          background: rgba(255, 255, 255, 0.2);
        }
     
        .slider-footer p {
          margin: 0;
          color: #fff;
          font-size: 18px;
          margin-bottom: 10px;
        }
     
        .slider-indicator {
          margin: 0;
          padding: 0;
          list-style: none;
          display: flex;
          align-items: center;
        }
     
        .slider-indicator li {
          width: 8px;
          height: 8px;
          margin: 4px;
          border-radius: 50%;
          background: #fff;
          opacity: 0.4;
          cursor: pointer;
        }
     
        .slider-indicator li.active {
          width: 12px;
          height: 12px;
          opacity: 1;
        }

JS:


// 1. 初始数据
const sliderData = [
{ url: './img/1.png', title: '标题1', color: 'rgb(100, 67, 68)' },
{ url: './img/2.png', title: '标题2', color: 'rgb(43, 35, 26)' },
{ url: './img/3.png', title: '标题3', color: 'rgb(36, 31, 33)' },
{ url: './img/4.png', title: '标题4', color: 'rgb(139, 98, 66)' },
{ url: './img/5.png', title: '标题5', color: 'rgb(67, 90, 92)' },
{ url: './img/6.png', title: '标题6', color: 'rgb(166, 131, 143)' },
{ url: './img/7.png', title: '标题7', color: 'rgb(53, 29, 25)' },
{ url: './img/8.png', title: '标题8', color: 'rgb(99, 72, 114)' },
]
//获取元素
const img = document.querySelector('.slider-wrapper img')
const p =document.querySelector(' .slider-footer p ')
const footer = document.querySelector(' .slider-footer ')
//1.右按钮业务
//1.1 获取右侧按钮
const next = document.querySelector('.next')
let i =0
//1.2注册点击事件
next.addEventListener('click',function(){
  i++
  i = i >= sliderData.length ? 0: i
  toggle()
})
const prev = document.querySelector('.prev')
//1.2注册点击事件
prev.addEventListener('click',function(){
  i--
  i = i<0 ? sliderData.length-1 : i;
  
  toggle()
})
//声明一个渲染的函数作为复用
function toggle(){
  img.src = sliderData[i].url;
  p.innerHTML = sliderData[i].title;
  footer.style.backgroundColor = sliderData[i].color
  //1.5更换小圆点 先移除原来的类名,当前li再添加 这个类名
  document.querySelector(' .slider-indicator .active ').classList.remove('active')
  document.querySelector( ` .slider-indicator li:nth-child(${i+1}) ` ).classList.add('active')
}
//3.自动播放模块
let timerId = setInterval(function(){
  //利用js自动调用点击事件
  next.click()
},2000)
//4.鼠标经过大盒子,停止定时器
const slider = document.querySelector('.slider')
//注册事件
slider.addEventListener('mouseenter',function(){
  clearInterval(timerId)
})
//5.鼠标离开大盒子,停止定时器
const slider1 = document.querySelector('.slider')
//注册事件
slider.addEventListener('mouseleave',function(){
  clearInterval(timerId)
  //开启定时器
  timerId = setInterval(function(){
  //利用js自动调用点击事件
  next.click()
},2000)
})
相关文章
|
6天前
|
移动开发 HTML5
响应式精品资源导航源码html5
一款响应式精品网站推荐导航源码,可以自己修改代码替换图标图片和指向网址。背景图支持自动替换,背景图可以在images中修改,本地双击html即可查看效果
13 1
响应式精品资源导航源码html5
|
8天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
5天前
|
XML JavaScript 前端开发
JavaWeb基础4——HTML,JavaScript&CSS
HTML,JavaScript&CSS、元素、标签、css 选择器、属性、JavaScript基础语法、JavaScript对象、BOM浏览器对象模型、DOM文档对象模型、事件监听、正则对象RegExp/ES6
JavaWeb基础4——HTML,JavaScript&CSS
|
7天前
|
搜索推荐
2024微信个人名片在线生成HTML源码
微信个人名片卡片在线生成,这是一款微信个人名片生成网站源码,无第三方接口,本地直接生成可长期使用。 主要用于生成用户个性化的名片页面,包括头像、姓名、联系方式、个人介绍等信息。 在本地浏览器打开即可,源码是html的,也可上传到服务器上。
9 0
2024微信个人名片在线生成HTML源码
|
15天前
|
移动开发 HTML5
蓝色炫酷碎粒子HTML5导航源码
蓝色炫酷碎粒子HTML5导航源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
27 1
|
16天前
一款好看的导航网HTML源码(全静态页面带特效)
一款好看的导航网源码(全静态页面带特效),页面自适应,单页源码没有后台,需要的下载。
26 1
|
4天前
|
XML 前端开发 JavaScript
jQuery HTML / CSS 方法
jQuery HTML / CSS 方法
9 0
|
27天前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
|
27天前
HTML+CSS 实现通用的企业官网页面(记得收藏)
HTML+CSS 实现通用的企业官网页面(记得收藏)
|
27天前
|
前端开发 JavaScript
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!