CSS sólo sensible deslizador horizontal

Tiempo de ejecución: 30 minutos. Empezar

Autor: OlgaMendenhall
Views Total: 2,912
Sitio oficial: Ir a la web
Actualizado: December 23, 2016
Licencia: MIT

Vista prévia

CSS sólo sensible deslizador horizontal

Descripción

Un control deslizante horizontal, de pantalla completa y adaptable que permite al usuario alternar entre diapositivas de página mediante transiciones y transformaciones CSS3.

Funcionamiento

Cree el encabezado del deslizador que contiene nuestros elementos de navegación:

<header>

 <!-- slide-1-trigger -is the id name of our first radio button-->

<label for="slide-1-trigger">Slide One</label>


 <label for="slide-2-trigger">Slide Two</label>

<label for="slide-3-trigger">Slide Three</label>

<label for="slide-4-trigger">Slide Four</label>
</header>

Cree las secciones de la página como sigue:

<input id="slide-1-trigger" type="radio" name="slides" checked>
<!-- this is our radio slider section combinations here -->
<section class="slide slide-one">

<h1>Headline One</h1>
</section>

<input id="slide-2-trigger" type="radio" name="slides">
 <section class="slide slide-two">

<h1>Headline Two</h1>
</section>

<input id="slide-3-trigger" type="radio" name="slides">
<section class="slide slide-three">

<h1>Headline Three</h1>
</section>

<input id="slide-4-trigger" type="radio" name="slides">
<section class="slide slide-four">

<h1>Headline Four</h1>
</section>

Envuélvalo en un contenedor DIV:

<div class="wrap">

<header>
 <!-- header contains our navigation elements -->


<label for="slide-1-trigger">Slide One</label>
 <!-- slide-1-trigger -is the id name of our first radio button-->


<label for="slide-2-trigger">Slide Two</label>


<label for="slide-3-trigger">Slide Three</label>


<label for="slide-4-trigger">Slide Four</label>

</header>



<input id="slide-1-trigger" type="radio" name="slides" checked>
<!-- this is our radio slider section combinations here -->

<section class="slide slide-one">


<h1>Headline One</h1>

</section>


<input id="slide-2-trigger" type="radio" name="slides">

 <section class="slide slide-two">


<h1>Headline Two</h1>

</section>


<input id="slide-3-trigger" type="radio" name="slides">

<section class="slide slide-three">


<h1>Headline Three</h1>

</section>


<input id="slide-4-trigger" type="radio" name="slides">

<section class="slide slide-four">


<h1>Headline Four</h1>

</section>


</div>

El CSS principal para el estilo del deslizador.

.wrap {

width: 100%;

height: 100%;

position: relative;

overflow: hidden;


 /* This is so we can position our slides absolutely off screen and we won't get any horizontal scroll bars */

background: #120103;

color: #fff;

text-align: center;
}

header {

background: #3E474F;

box-shadow: 0 .5em 1em #111;

position: absolute;

/* We position it absolutely to the top-left corner */

top: 0;

left: 0;

z-index: 900;
 /*And give it a z-index of 900 so that we are sure that's on top of the rest of the content.*/

width: 100%;
}

header label {

color: #788188;

cursor: pointer;

display: inline-block;
 /* This way our labels will be side-by-side and centered in the middle of our header. Inline-block also allows for our line-height to be respected */

line-height: 4.25em;

/* This gives us a larger clickable area*/

font-size: .667em;

font-weight: bold;

padding: 0 1em;
}

header label:hover {

background: #2e353b;
}

.slide {

width: 100%;

height: 100%;

position:absolute;

top: 0;

left: 100%;

 /* With these styles, we are pushing all of our slides off to the side of the window. */

z-index: 10;

padding: 8em 1em 0;

background-color: #120103;

background-position: 50% 50%;

background-size:cover;

 /* now our images fill up the entire slide */

transition: left 0s .75s;
 /* duration to 0.
delay it by 0.75 seconds. So these transition styles have the new slide coming in and afterwards our old slides, slides back out.*/
}

Vamos a usar un selector de atributos para seleccionar cualquier entrada que tenga un ID que empiece por Slide. A continuación, vamos a calificar el selector añadiendo la pseudo-clase de "Checked". Esto apuntará a cualquiera de nuestras entradas de radio, ya que todos comienzan con "Slide" entonces mediante el uso del combinador hermano adyacente que es el signo "+", finalmente podemos apuntar a nuestra diapositiva.

[id^="slide"]:checked + .slide {

left: 0;


 /* When our radio element is checked, we want to position our slide back on the left corner of our wrapper, so we will set left to zero */

z-index: 100;
 /* we wanna raise the z-index to 100, to be sure our slide is on top of the previous one. */

transition: left .65s ease-out;
}

.slide h1 {

opacity: 0;

transform: translateY(100%);

transition: transform .5s .5s, opacity .5s;

/* This transition will allow us to see the opacity go down to zero, but it will delay the transform until the next slide is already covering it.*/
}

[id^="slide"]:checked + .slide h1 {
/* Now we target our headline when our input is in its checked state */

opacity: 1;

transform: translateY(0);

transition: all .5s .5s;
 /* This will have our headline appearing and rising as the slide is coming onto the screen. */
}

Añada imágenes de fondo a las diapositivas.

.slide-one {

background-image: url('1.jpg');
}

.slide-two {

background-image: url('2.jpg');
}

.slide-three {

background-image: url('3.jpg');
}

.slide-four {

background-image: url('4.jpg');
}

 

Te puede interesar: