纯CSS轮播

9 篇文章 0 订阅

移动端列表元素的滑动,不用swiper,但是仅用overflow: auto,滑动到的位置无法控制。

解决方案:父元素设置 scroll-snap-type: x mandatory;

                子元素设置:scroll-snap-align: start;

注意:该样式推荐在移动端使用,纯在一定的兼容性问题

效果:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body{
      margin: 0;
    }
    .container{
      width: 375px;
      display: flex;
      overflow-x: auto;
      overflow-y: hidden;
      white-space: nowrap;
      scroll-snap-type: x mandatory;
    }
    .container div{
      width: 100px;
      padding: 10px;
      scroll-snap-align: start;
    }
    .container img{
      width: 80px;
    }
    .container1 div{
      width: 375px;
    }
    .container1 img{
      width: 355px;
    }
  </style>
</head>
<body>
  <h1>导航图标滚动</h1>
  <div class="container">
    <div><img src="https://img1.baidu.com/it/u=3353201715,2373215519&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=3709188896,3555962561&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=2034165975,3896208670&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img1.baidu.com/it/u=3353201715,2373215519&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=3709188896,3555962561&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=2034165975,3896208670&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img1.baidu.com/it/u=3353201715,2373215519&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=3709188896,3555962561&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=2034165975,3896208670&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img1.baidu.com/it/u=3353201715,2373215519&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=3709188896,3555962561&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
    <div><img src="https://img0.baidu.com/it/u=2034165975,3896208670&fm=26&fmt=auto&gp=0.jpg" alt=""></div>
  </div>
  <h1>banner滚动</h1>
  <div class="container container1">
    <div><img src="https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00342-3415.jpg" alt=""></div>
    <div><img src="https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00277-814.jpg" alt=""></div>
    <div><img src="https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00127-8.jpg" alt=""></div>
    <div><img src="https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00342-3415.jpg" alt=""></div>
    <div><img src="https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00277-814.jpg" alt=""></div>
    <div><img src="https://ns-strategy.cdn.bcebos.com/ns-strategy/upload/fc_big_pic/part-00127-8.jpg" alt=""></div>
  </div>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是HTML和CSS实现的轮图代码: HTML代码: ``` <div class="slideshow-container"> <input type="radio" name="slide" id="slide1" checked> <input type="radio" name="slide" id="slide2"> <input type="radio" name="slide" id="slide3"> <div class="slideshow"> <div class="slide"> <img src="img1.jpg"> </div> <div class="slide"> <img src="img2.jpg"> </div> <div class="slide"> <img src="img3.jpg"> </div> </div> <div class="nav"> <label for="slide1"></label> <label for="slide2"></label> <label for="slide3"></label> </div> </div> ``` CSS代码: ``` .slideshow-container { max-width: 800px; position: relative; margin: auto; } .slideshow { display: flex; overflow: hidden; } .slide { flex: 1; width: 100%; transition: all 1s ease; } .slide img { width: 100%; } .nav { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); display: flex; } .nav label { cursor: pointer; display: block; width: 10px; height: 10px; margin: 0 5px; border-radius: 50%; background-color: #ccc; } .nav label:hover { background-color: #555; } input[type="radio"] { display: none; } input[type="radio"]:checked + .slideshow .slide { width: 0; } input[type="radio"]:checked + .slideshow .slide:nth-of-type(1) { width: 100%; } input[type="radio"]:checked + .slideshow .slide:nth-of-type(2) { width: 100%; } input[type="radio"]:checked + .slideshow .slide:nth-of-type(3) { width: 100%; } input[type="radio"]:checked + .nav label { background-color: #555; } ``` 这个轮图的实现方式是通过使用radio和label元素来实现的。HTML代码中的input元素用于定义轮图的切换按钮,label元素用于定义按钮的样式。CSS代码中的.nav类用于定义按钮容器的样式,其中transform属性被设置为translateX(-50%)以实现水平居中。radio元素的:checked伪类被用于控制轮图的显示,其中:nth-of-type()伪类用于控制每个轮图的显示方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值