Deslizador de imagen dividida con CSS3 y SVG

Tiempo de ejecución: 30 minutos. Empezar

Autor: damianmuti
Views Total: 1,628
Sitio oficial: Ir a la web
Actualizado: July 19, 2017
Licencia: MIT

Vista prévia

Deslizador de imagen dividida con CSS3 y SVG

Descripción

Un deslizador de imagen dividida de pantalla completa de gran capacidad de respuesta construido con patrones SVG y varias propiedades CSS3.

Funcionamiento

Agregue las imágenes al control deslizante que sigue a la estructura de marcado como esta:

<div class="main">

<div class="slider">


<svg class="slider__mask" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1920 1080" width="0" height="0">



<defs>




<!-- Slide 1 -->




<pattern id="bg1" patternUnits="userSpaceOnUse" width="1920" height="1080" viewBox="0 0 1920 1080">





<image xlink:href="https://images.unsplash.com/photo-1454328911520-ccf83f1ef41d?dpr=1&auto=format&fit=crop&w=2000&h=2000&q=80&cs=tinysrgb&crop=&bg=" width="100%" height="100%"/>




</pattern>




<pattern id="pattern1l" patternUnits="userSpaceOnUse" width="562" height="366" viewBox="0 0 562 366">





<image xlink:href="https://images.unsplash.com/photo-1454328911520-ccf83f1ef41d?dpr=1&auto=format&fit=crop&w=600&h=600&q=80&cs=tinysrgb&crop=&bg=" width="600px" height="600px"/>




</pattern>




<pattern id="pattern1r" patternUnits="userSpaceOnUse" x="365px" width="562" height="366" viewBox="0 0 562 366">





<image xlink:href="https://images.unsplash.com/photo-1497215842964-222b430dc094?dpr=1&auto=format&fit=crop&w=600&h=600&q=80&cs=tinysrgb&crop=&bg=" width="600px" height="600px"/>




</pattern>









<!-- Slide 2 -->




<pattern id="bg2" patternUnits="userSpaceOnUse" width="1920" height="1080" viewBox="0 0 1920 1080">





<image xlink:href="https://images.unsplash.com/photo-1497377825569-02ad2f9edb81?dpr=1&auto=format&fit=crop&w=2000&h=2000&q=80&cs=tinysrgb&crop=&bg=" width="100%" height="100%"/>




</pattern>




<pattern id="pattern2l" patternUnits="userSpaceOnUse" width="562" height="366" viewBox="0 0 562 366">





<image xlink:href="https://images.unsplash.com/photo-1497377825569-02ad2f9edb81?dpr=1&auto=format&fit=crop&w=600&h=600&q=80&cs=tinysrgb&crop=&bg=" width="600px" height="600px"/>




</pattern>




<pattern id="pattern2r" patternUnits="userSpaceOnUse" x="365" width="562" height="366" viewBox="0 0 562 366">





<image xlink:href="https://images.unsplash.com/photo-1496060169243-453fde45943b?dpr=1&auto=format&fit=crop&w=600&h=600&q=80&cs=tinysrgb&crop=&bg=" width="600px" height="600px"/>




</pattern>



</defs>


</svg>



<div class="slide" id="slide-1">



<svg class="slide__bg" viewBox="0 0 1920 1080" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1920" height="1080">




<rect x="0" y="0" width="1920" height="1080" fill="url(#bg1)" />



</svg>



<div class="slide__images">




<div class="slide__image slide__image--left">





<svg viewBox="0 0 900 365" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px">






<path d="M 0 0 L 0 365 L 351.2382 365 L 562 0 L 0 0 Z" fill="url(#pattern1l)"/>





</svg>




</div>





<div class="slide__image slide__image--right">





<svg viewBox="0 0 900 365" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px">






<path d="M 900 365 L 900 0 L 548.7618 0 L 338 365 L 900 365 Z" fill="url(#pattern1r)"/>





</svg>




</div>



</div>


</div>



<div class="slide" id="slide-2">



<svg class="slide__bg" viewBox="0 0 1920 1080" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1920" height="1080">




<rect x="0" y="0" width="1920" height="1080" fill="url(#bg2)" />



</svg>



<div class="slide__images">




<div class="slide__image slide__image--left">





<svg viewBox="0 0 900 365" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px">






<path d="M 0 0 L 0 365 L 351.2382 365 L 562 0 L 0 0 Z" fill="url(#pattern2l)"/>





</svg>




</div>





<div class="slide__image slide__image--right">





<svg viewBox="0 0 900 365" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px">






<path d="M 900 365 L 900 0 L 548.7618 0 L 338 365 L 900 365 Z" fill="url(#pattern2r)"/>





</svg>




</div>



</div>


</div>



<div class="slider__pagination">



<a href="#slide-1" class="button">Slide 1</a>



<a href="#slide-2" class="button">Slide 2</a>


</div>

</div>
</div>

Los estilos CSS/CSS3 primarios para el deslizador de imagen.

.main {

position: relative;

min-height: 100vh;

overflow: hidden;

text-align: left;
}

.slider {

width: 100vw;

height: 100vh;
}

.slide {

display: -webkit-box;

display: -ms-flexbox;

display: flex;

-webkit-box-pack: center;

-ms-flex-pack: center;

justify-content: center;

-webkit-box-align: center;

-ms-flex-align: center;

align-items: center;

height: 100vh;

position: absolute;

width: 100%;
}

.slide:target .slide__bg { opacity: 1; }

.slide:target .slide__image {

-webkit-transform: translate(0);

transform: translate(0);

opacity: 1;

-webkit-transition-delay: 0.5s;

transition-delay: 0.5s;

-webkit-filter: blur(0) drop-shadow(0px 10px 30px rgba(0, 0, 0, 0.35));

filter: blur(0) drop-shadow(0px 10px 30px rgba(0, 0, 0, 0.35));
}

.slide__bg {

position: absolute;

z-index: 0;

top: 50%;

left: 50%;

-webkit-transform: translate(-50%, -50%) scale(2);

transform: translate(-50%, -50%) scale(2);

-webkit-filter: blur(50px);

filter: blur(50px);

opacity: 0;

-webkit-transition: opacity 1s ease;

transition: opacity 1s ease;

will-change: opacity;
}

.slide__images {

position: relative;

width: 100%;

max-width: 900px;

height: 365px;

margin: 0 20px;
}

.slide__image {

position: absolute;

width: 100%;

opacity: 0;

-webkit-transition: all 0.5s ease-in-out 0s;

transition: all 0.5s ease-in-out 0s;

-webkit-filter: blur(10px) drop-shadow(0px 10px 30px rgba(0, 0, 0, 0.35));

filter: blur(10px) drop-shadow(0px 10px 30px rgba(0, 0, 0, 0.35));

will-change: transform, opacity, filter;
}

.slide__image svg { display: block; }

.slide__image--left {

-webkit-transform: translate(0.75%, -10px);

transform: translate(0.75%, -10px);
}

.slide__image--right {

top: 5vmin;

-webkit-transform: translate(-0.75%, 10px);

transform: translate(-0.75%, 10px);
}

El estilo & colocar los botones de paginación.

.slider__pagination {

position: absolute;

bottom: 7vh;

width: 100%;

text-align: center;
}

.button {

position: relative;

display: inline-block;

padding: 20px 40px;

border: 2px solid #fff;

line-height: 1;

text-align: center;

text-decoration: none;

text-transform: uppercase;

letter-spacing: 1.5px;

color: white;

-webkit-transition: all 0.25s ease;

transition: all 0.25s ease;

-webkit-appearance: none;

-moz-appearance: none;

appearance: none;
}

.button:hover {

color: #333;

background-color: white;
}

Fuerza redirigir al ancla:

window.location.href="#slide-1";

Te puede interesar: