基于CSS的轮播图

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>基于CSS的轮播图</title>
</head>
<style>
    body{
        padding: 0px;
        margin: 0px;
    }
    ul{
        height: 280px;
        background: gray;
        position: relative;
        margin: 0px;
        overflow-x:hidden;
    }
    ul li{
        height: 280px;
        width: 100%;
        position: absolute;
        top: 0;
        left: 0;
        color: white;
        font-size: 50px;
        list-style: none;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: .5s transform ease-in-out;
    }
    ul li:nth-of-type(1){
        background: pink;
        
    }
    ul li:nth-of-type(2){
        background: green;
        margin-left: 100%;
    }
    ul li:nth-of-type(3){
        background: blue;
        margin-left: 200%;
    }
    ._footer{
        width: 100%;
        z-index: 10;
        position: absolute;
        bottom: 12px;
        left: 0px;
        text-align: center;
    }
    ._footer label{
        display: inline-block;
        width: 20px;
        height: 20px;
        background: white;
        border-radius: 50%;
    }
    /*  ~ 获取同层级的后元素,对同层级的前边元素不生效 */
    ul input[type='radio']:nth-of-type(1):checked ~ ._footer label:nth-of-type(1){
        background: black;
    }
    ul input[type='radio']:nth-of-type(2):checked ~ ._footer label:nth-of-type(2){
        background: black;
    }
    ul input[type='radio']:nth-of-type(3):checked ~ ._footer label:nth-of-type(3){
        background: black;
    }
    ul input[type='radio']:nth-of-type(1):checked ~ .slide{
        transform: translateX(0%);
    }
    ul input[type='radio']:nth-of-type(2):checked ~ .slide{
        transform: translateX(-100%);
    }
    ul input[type='radio']:nth-of-type(3):checked ~ .slide{
        transform: translateX(-200%);
    }
</style>
<body>
    <div>设计思路:
    1、用ul和li标签,ul用相对定位,li标签用绝对定位
    2、设置input标签的id,在通过label标签的for属性实现input的checked选中,input选中后再通过元素选择器实现轮播图的切换和label样式的改变
  </div> <ul> <input id="check1" type="radio" name="control" checked/> <input id="check2" type="radio" name="control"/> <input id="check3" type="radio" name="control"/> <li class="slide">1</li> <li class="slide">2</li> <li class="slide">3</li> <div class="_footer"> <label for="check1"></label> <label for="check2"></label> <label for="check3"></label> </div> </ul> </body> </html>

 

posted @ 2023-02-21 14:29  一只懒懒的熊Zz  阅读(26)  评论(0编辑  收藏  举报