HTML+CSS to achieve carousel effect

HTML+CSS to achieve the effect of the carousel The renderings
are as follows (if you want the source code or interested friends can leave a message in the comment area!)
Insert picture description here
Insert picture description here
Insert picture description here
Insert picture description here
Insert picture description here
HTML part of the source code is as follows:

<!DOCTYPE html>
<html >

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>轮播图</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="channel">
       杨帆起航 成就梦想
    </div>
    <div class="container">
        <div class="box">


            <div class="item">
                <!-- 默认第一个选中 -->
                <input type="radio" name="btn" id="btn1" checked>
                <label for="btn1" style="--i:1"></label>
                <div class="img">
                    <img src="1.jpg" alt="">
                    <div class="right"> Title 1 </div>
                </div>
            </div>


            <div class="item">
                <input type="radio" name="btn" id="btn2">
                <label for="btn2" style="--i:2"></label>
                <div class="img">
                    <img src="2.jpg" alt="">
                    <div class="right"> Title 2 </div>
                </div>
            </div>
            <div class="item">
                <input type="radio" name="btn" id="btn3">
                <label for="btn3" style="--i:3"></label>
                <div class="img">
                    <img src="3.jpg" alt="">
                    <div class="right"> Title 3 </div>
                </div>
            </div>
            <div class="item">
                <input type="radio" name="btn" id="btn4">
                <label for="btn4" style="--i:4"></label>
                <div class="img">
                    <img src="4.jpg" alt="">
                    <div class="right"> Title 4 </div>
                </div>
            </div>
            <div class="item">
                <input type="radio" name="btn" id="btn5">
                <label for="btn5" style="--i:5"></label>
                <div class="img">
                    <img src="5.jpg" alt="">
                    <div class="right"> Title 5 </div>
                </div>
            </div>
            <div class="item">
                <input type="radio" name="btn" id="btn6">
                <label for="btn6" style="--i:6"></label>
                <div class="img">
                    <img src="6.jpg" alt="">
                    <div class="right"> Title 6 </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

The source code of CSS is as follows:

:root {
    
    
    --background-color: #2c3e50;
    --border-color    : #7591AD;
    --text-color      : #34495e;
    --color1          : #EC3E27;
    --color2          : #fd79a8;
    --color3          : #0984e3;
    --color4          : #00b894;
    --color5          : #fdcb6e;
    --color6          : #e056fd;
    --color7          : #F97F51;
    --color8          : #BDC581;
}

* {
    
    
    margin : 0;
    padding: 0;
}

html {
    
    
    font-size: 14px;
}

body {
    
    
    width           : 100vw;
    height          : 100vh;
    background-color: var(--background-color);
    display         : flex;
    justify-content : center;
    align-items     : center;
    font-family     : 'Montserrat', sans-serif, Arial, 'Microsoft Yahei';
}

.channel {
    
    
    position   : absolute;
    width      : 80%;
    text-align : center;
    top        : 50%;
    left       : 50%;
    transform  : translate(-50%, -250px);
    font-size  : 30px;
    font-weight: bold;
    color      : #fff;
}

.box {
    
    
    position              : relative;
    width                 : 600px;
    height                : 300px;
    /* box-shadow         : ; */
    overflow           : hidden;
    /* background-color   : #e056fd; */
    z-index               : 0;
    box-shadow            :
        0 0 0 10px #fff,
        5px 5px 0 10px rgba(0, 0, 0, 0.1);

}

.box::after {
    
    
    position        : absolute;
    content         : '';
    width           : 100%;
    height          : 1px;
    background-color: rgba(255, 255, 255, .35);
    bottom          : 25px;
    z-index         : 8888;
}

/* 元素box相同大小 */
.box .item {
    
    
    position: absolute;
    width   : 600px;
    height  : 300px;
    top     : 0;
    left    : 0;

}

/* 让单选框离开显示区域 */
input[type=radio] {
    
    
    transform : translateY(-100px);
    /* opacity: 0; */
}

label {
    
    
    position              : absolute;
    width                 : 20px;
    height                : 20px;
    background-color      : rgba(255, 255, 255, .35);
    /* background-color   : #EC3E27; */
    /* 鼠标 */
    cursor                : pointer;
    bottom                : 15px;
    border-radius         : 50%;
    left                  : calc((var(--i) - 1) * 108px + 20px);
    z-index               : 9999;
    transition            : all 0.5s;
}

label:hover {
    
    
    background-color: rgba(255, 255, 255, .6);
}


input[type=radio]:checked+label {
    
    
    background-color: #fff;
    box-shadow      : 0 0 0 6px rgba(255, 255, 255, .5);
}

.img {
    
    
    position           : absolute;
    width              : 600px;
    height             : 300px;
    top                : 0;
    left               : 0;
    /* background-color: #F97F51; */
    overflow: hidden;
}

.img img {
    
    
    position  : absolute;
    transform : translateX(600px);
    /* z-index在动画中变化挺特殊这里直接用0s */
    transition: all .15s, z-index 0s;
}


input[type=radio]:checked~.img img {
    
    
    transform: translateX(0px);
    z-index  : 777;
}

.img .right {
    
    
    position           : absolute;
    width              : 270px;
    height             : 300px;
    /* background-color: #e056fd; */
    z-index            : 778;
    right              : 0;
    background-image   : radial-gradient(rgba(255, 255, 255, .6), transparent);
    background-size    : 600px 600px;
    background-repeat  : no-repeat;
    background-position: -300px -150px;
    transform          : translateX(300px);
    /* 这里时间比img要长一些 */
    transition         : all 0.35s;

    font-size: 40px;
    color: #ffffff99;
    text-align: center;
    line-height: 80px;
}

input[type=radio]:checked~.img .right {
    
    
    transform   : translateX(0px);
    /* z-index  : 777; */
}

Guess you like

Origin blog.csdn.net/m0_46374969/article/details/111934176