Carrusel de corte simple CSS3

Carrusel de corte simple CSS3

Idea de realización

  1. Primero, cree un contenedor principal y use dos listas desordenadas para dividir el contenedor principal en dos columnas mediante un diseño flexible.
  2. Guarde la imagen en li dividiendo la imagen en dos columnas dando la izquierda li {background: url('图片地址') no-repeat; background-size: 200% 100%;}a la derecha li{background-position-x: -300(父容器宽度的一半)px;}.
  3. Otorgue la ul{ransform-style: preserve-3d; }propiedad para activar la visualización 3D del navegador.
  4. Ponga los li uno encima del otro con la imagen del hijo y el padre ul{position: relative;} li {position: absolute;}.
  5. Establezca la rotación de li a través del atributo transform.
  6. Puede agregar aquí .box:hover>ul { transition: all 5s;transform: rotateX(360deg); }para ver el efecto.
  7. Finalmente, agregue dos botones para permitir que los usuarios cambien las imágenes por sí mismos.
  8. Úselo solo para cambiar el ángulo de rotación de ul al hacer clic
		btn1.onclick = ()=>{
    
    
            item++;
            let r = item * 90;
            letf.style.transform = 'rotateX(' + r + 'deg)';
            letf.style.transition = 'all 1s';
            right.style.transform = 'rotateX(' + r + 'deg)';
            right.style.transition = 'all 1s .3s';
        }
        btn2.onclick = ()=>{
    
    
            item--;
            let r = item * 90;
            letf.style.transform = 'rotateX(' + r + 'deg)';
            letf.style.transition = 'all 1s';
            right.style.transform = 'rotateX(' + r + 'deg)';
            right.style.transition = 'all 1s .3s';
        }

Finalmente, adjunte todo el código, espero que sea de ayuda para ustedes que aprenden el front-end

código HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>切割轮播图</title>
</head>
<body>
    <div class="box">
        <ul class="letf">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <ul class="right">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    <button id="btn1">上一页</button><button id="btn2">下一页</button>
</body>
</html>

código CSS

*{
    
    
    margin: 0;
    padding: 0;
}
body{
    
    
    perspective: 800px;
}
.box{
    
    
    display: flex;
    width: 600px;
    height: 350px;
    margin: 150px auto;
}
.box:hover ul li:nth-child(1){
    
    
    transition: all 5s;
    transform: rotateX(360deg);
}
ul{
    
    
    flex: 1;
    list-style: none;
    padding: 0;
    margin: 0;
    transform-style: preserve-3d;  /* 开启浏览器的3D显示 */
    position: relative;
}
li{
    
    
    width: 100%;
    height: 100%;
    position: absolute;
}
li:nth-child(1){
    
    
    background: url('../images/9.jpg') no-repeat;
    background-size: 200% 100%;
    transform: translateZ(175px);

}
li:nth-child(2){
    
    
    background: url('../images/10.jpg') no-repeat;
    background-size: 200% 100%;
    transform: rotateX(90deg) translateZ(175px);
}
li:nth-child(3){
    
    
    background: url('../images/11.jpg') no-repeat;
    background-size: 200% 100%;
    transform: rotateX(180deg) translateZ(175px);
}
li:nth-child(4){
    
    
    background: url('../images/12.jpg') no-repeat;
    background-size: 200% 100%;
    transform: rotateX(-90deg) translateZ(175px);
}
.right li{
    
    
    background-position-x: -300px;
}

código js

		let item = 0;
        let btn1 = document.getElementById('btn1');
        let btn2 = document.getElementById('btn2');
        let letf = document.querySelector('.letf');
        let right = document.querySelector('.right')
        btn1.onclick = ()=>{
    
    
            item++;
            let r = item * 90;
            letf.style.transform = 'rotateX(' + r + 'deg)';
            letf.style.transition = 'all 1s';
            right.style.transform = 'rotateX(' + r + 'deg)';
            right.style.transition = 'all 1s .3s';
        }
        btn2.onclick = ()=>{
    
    
            item--;
            let r = item * 90;
            letf.style.transform = 'rotateX(' + r + 'deg)';
            letf.style.transition = 'all 1s';
            right.style.transform = 'rotateX(' + r + 'deg)';
            right.style.transition = 'all 1s .3s';
        }

Supongo que te gusta

Origin blog.csdn.net/xa000919/article/details/110633116
Recomendado
Clasificación