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)
})
相关文章
|
7天前
|
移动开发 JavaScript 前端开发
html table+css实现可编辑表格的示例代码
html table+css实现可编辑表格的示例代码
|
3天前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
27 1
|
9天前
|
移动开发 HTML5
HTML5熊猫弹跳手机小游戏源码
一款html5手机端小游戏源码,熊猫跳跃小游戏源码下载。熊猫脚底有弹簧,长按变化力度跳跃,计分游戏,html5手机熊猫也疯狂小游戏源代码。
26 5
|
8天前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
19 3
|
10天前
|
移动开发 HTML5
html5+three.js公路开车小游戏源码
html5公路开车小游戏是一款html5基于three.js制作的汽车开车小游戏源代码,在公路上开车网页小游戏源代码。
32 0
html5+three.js公路开车小游戏源码
|
6月前
|
前端开发 JavaScript UED
【专栏:HTML与CSS移动端开发篇】移动端触摸事件与手势识别
【4月更文挑战第30天】本文探讨了移动端触摸事件和手势识别在网页开发中的重要性。介绍了基础触摸事件如`touchstart`, `touchmove`, `touchend`, `touchcancel`及相关属性。文章列举了处理触摸事件的方法,包括单点触摸、多点触摸、滑动、长按、捏合缩放、旋转检测和事件代理。建议使用第三方库如Hammer.js简化手势处理,并分享了最佳实践,如避免意外触摸、提供视觉反馈、考虑性能和跨设备测试。理解并有效利用这些技术能提升用户交互体验。
224 7
|
6月前
|
缓存 前端开发 JavaScript
【专栏:HTML与CSS移动端开发篇】移动端网页性能优化策略
【4月更文挑战第30天】本文探讨了移动端网页性能优化的重要性,并提出了优化策略。HTML方面,建议精简结构、使用语义化标签、异步加载脚本和压缩文件;CSS优化包括精简样式、使用CSS3动画、媒体查询和压缩文件。其他策略涉及图片和字体压缩、缓存利用、数据压缩、减少HTTP请求及根据网络状态调整加载。综合运用这些策略能提升网页性能和用户体验。
95 6
|
6月前
|
编解码 移动开发 前端开发
【专栏:HTML与CSS移动端开发篇】使用Viewport Meta标签优化移动端显示
【4月更文挑战第30天】本文介绍了HTML的Viewport Meta标签在移动端网页优化中的作用。Viewport Meta标签定义了视口属性,如宽度、高度、初始缩放等,解决移动设备因屏幕尺寸差异导致的显示问题。主要属性包括width(常用device-width)、initial-scale、maximum-scale、minimum-scale和user-scalable。
186 4
|
6月前
|
编解码 前端开发 UED
【专栏:HTML 与 CSS 移动端开发篇】CSS 媒体查询与移动端特定样式
【4月更文挑战第30天】CSS媒体查询在移动端开发中至关重要,它基于设备特性(如屏幕尺寸、分辨率、方向)应用特定样式,实现响应式设计。通过`@media`规则定义条件,如`(max-width: 600px)`,当屏幕宽度小于或等于600px时应用相应样式。常见条件包括屏幕宽度、高度、方向和分辨率。媒体查询可用于响应式布局、导航菜单优化、图片加载及字体调整。在实践中,需注意保持查询简洁,充分测试,渐进增强,并提前规划。掌握媒体查询能提升移动端用户体验,创造更优秀的网页设计。
194 3