Menú animado con CSS3

5 - , , - 24/05/2012 18:26:20

El siguiente ejemplo nos vuelve a mostrar las posibilidades que nos ofrecen las transiciones
de CSS3.

HTML:

 <ul>
        <li>Botón 1</li>
        <li>Botón 2</li>
        <li>Botón 3</li>
        <li>Botón 4</li>
        <li>Botón 5</li>
</ul>

CSS:

ul {
  display: table;
  width: 400px;
}
li {
  display: table-cell;
  width: 20%;
  height: 50px;
  line-height: 50px;
  text-align: center;
  cursor: pointer;
  -webkit-transition: 0.3s ease-in-out;
  -moz-transition: 0.3s ease-in-out;
}
ul:hover li {
  width: 15%;
}
li:hover {
  width: 40% !important;
  opacity: 0.7;
}
ul li:nth-of-type(1) { background: #FF4C4C; }
ul li:nth-of-type(2) { background: #FFBF49; }
ul li:nth-of-type(3) { background: #444444; }
ul li:nth-of-type(4) { background: #6FDC6F; }
ul li:nth-of-type(5) { background: #3AADFE; }

Ver ejemplo en funcionamiento » »

Tabla con filas de colores alternos unicamente con CSS

2 - , - 20/05/2012 20:29:17

El siguiente ejemplo muestra una aplicación práctica de la pseudo-clase nth-child. CSS3 proporciona cuatro poderosas pseudo-clases que permiten al diseñador CSS seleccionar múltiples elementos según su posición en el DOM. La utilización de estas pseudo-clases puede ser un poco confusa al principio, pero es fácil una vez que se ha comprendido su funcionamiento. Las pseudoclases son:

:nth-child(N)
:nth-last-child(N)
:nth-of-type(N)
:nth-last-of-type(N)

El argumento N, puede ser una palabra clave, un número o una expresión numérica tipo an + b. Estas pseudo-clases aceptan la palabra clave "odd" para seleccionar elementos pares y "even" para seleccionar elementos impares. Si el argumento n es un número, representa la posición ordinal del elemento seleccionado. Por ejemplo, si el argumento es 5, se seleccionará el quinto elemento. El argumento N también puede darse como an + b, donde a y b son números enteros (por ejemplo, 3n + 1).

Veamos un ejemplo utilizando "odd" y "even" para dar un estilo cdistinto a las filas pares e impares de una tabla. Supongamos la siguiente tabla:

<table id="miTabla">
    <tr>
        <td>IE</td>
        <td>Download</td>
    </tr>
    <tr>
        <td>Firefox</td>
        <td>Download</td>
    </tr>
    <tr>
        <td>Chrome</td>
        <td>Download</td>
    </tr>
    <tr>
        <td>Safari</td>
        <td>Download</td>
    </tr>
    <tr>
        <td>Opera</td>
        <td>Download</td>
    </tr>
</table>

Para que las filas tengan un estilo "cebra" o de colores alternos tan sólo necesitaríamos el siguiente CSS:

#miTabla tr:nth-child(odd) {
   background-color: #DDD;
   color:#777
}

#miTabla tr:nth-child(even) {
   background-color: #666;
   color:#FFF;
}

Ver ejemplo en funcionamiento » »

Si el argumento N es dado mediante una expresión an+b, en esa expresión, el número b representa la posición ordinal del primer elemento que queremos hacer coincidir y el número a representa el número ordinal de cada elemento queremos hacer coincidir después de eso. Por ejemplo, la expresión 3n+1 hará coincidir el primer elemento despúes de cada tercer elemento: el primero, cuarto, séptimo, décimo y así sucesivamente. El valor de la palabra clave "odd" (impar) es equivalente a la expresión 2n+1.

Si a y b son iguales, o si b es cero, b puede omitirse. Por ejemplo, las expresiones 3n+3 y 3n+0 equivalen a 3n — se refieren a cada tercer elemento.

La pseudo-clase :nth-last-child busca coincidencias con elementos de acuerdo a sus posiciones dentro de la lista respecto a un elemento padre, empezando a contar desde el final. Es decir, selecciona el enésimo hijo de su elemento padre empezando a contar del último al primero.

Por ejemplo, este selector seleccionará el último párrafo contenido dentro de un elemento con identificador "micaja":

#miCaja p:nth-last-child(1) {

}

La pseudo-clase :nth-of-type busca elementos, del mismo tipo, de acuerdo a sus posiciones respecto a un elemento padre. En este ejemplo se seleccionará la primera imagen dentro de un párrafo:

p img:nth-of-type(1){

}

La pseudo-clase :nth-last-of-type selecciona el enésimo elemento de su tipo, empezando a contar del último al primero. El siguiente ejemplo busca las tres últimas imágenes que se encuentran dentro de un elemento cuyo identificador es "gallery":

#gallery>img:nth-last-of-type(-n+3){

}

HTML5: los atributos min, max y step

3 - , - 18/05/2012 20:15:21

Los atributos min, max y step se utilizan para especificar restricciones en la entrada de datos en un formularo. El atributo max especifica el valor máximo permitido para el campo de entrada. El atributo min especifica el valor mínimo permitido para el campo de entrada. El atributo step especifica los intervalos válidos para el campo de entrada (si step="3", los números válidos 3,6,9,12, etc.).

El siguiente ejemplo admite valores pares comprendidos entre 2 y 12.

<input type="number" min="2" max="12" step="2"  />

Estos atributos se pueden utilizar en los input de tipo: number, date pickers, number y range.

Ver ejemplo en funcionamiento » »

Tooltip animado en CSS3

3 - , - 16/05/2012 21:10:49

El siguiente ejemplo muestra cómo crear un tooltip animado con CSS3. Para la animación del tooltip se hace uso de las transiciones CSS, que ya han sido tratadas en este blog en el anterior post "CSS3 Transitions: Realizar transiciones con CSS".

HTML:

<a class="tooltip" href="#">webintenta <span>blog de desarrollo web</span></a>

CSS:

a.tooltip {
    position:relative;    
    color:#cf2c2c;
    text-decoration:none;
}

a.tooltip span {
    padding:5px 10px;
    background:#555;
    border:1px solid #555;
    min-width:140px;
    position:absolute;
    top:5px;
    left:5px;
    color:#FFF;
    text-align:center;
    opacity:0;
    -moz-transition: opacity 1s ease,top 1s ease;
    -webkit-transition: opacity 1s ease,top 1s ease;
    -o-transition:opacity 1s ease,top 1s ease;
    transition: opacity 1s ease,top 1s ease;
    font-family:Georgia, "Times New Roman", Times, serif;
    font-size:13px;
    font-weight:bold;

}

a.tooltip span:before {
    width: 0;
    height: 0;
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-bottom: 7px solid #555;
    z-index:5;
    content: " ";
    position:absolute;
    top:-7px;
    left:11%;
}

a.tooltip span:after {
    width: 0;
    height: 0;
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-bottom: 7px solid #555;
    display:block;
    content: " ";
    position:absolute;
    top:-8px;
    left:11%;
}

a.tooltip:hover span {
    opacity:1;
    top:25px;
}

Ver ejemplo en funcionamiento » »

CSS3 Transitions: Realizar transiciones con CSS

2 - , - 15/05/2012 18:25:02

Las transiciones en CSS3 funcionan de un modo similar a las animaciones, así que es recomendable leer previamente nuestro anterior tutorial "CSS3 Animations. Realizar animaciones con CSS". Realizar transiciones con CSS3 nos permite incorporar una animación al cambiar de un estilo a otro. Para ello deberemos especificar:
- La propiedad CSS a la que deseamos agregar un efecto.
- La duración del efecto.

Un ejemplo sencillo es realizar una transición entre dos estados de un link. El primer estado sería el estado digamos normal y el segundo cuando pasamos el puntero del ratón sobre él. Tendríamos un link:

<a href="#">Ver ejemplo</a>

Con la siguiente definición CSS:

a {
  padding: 5px 10px;
  background: #9c3;
  }
a:hover {
  background: #333;
  }

Para realizar la transición:

a {
  padding: 5px 10px;
  background: #9c3;
  -webkit-transition-property: background;
  -webkit-transition-duration: 1s;
  -webkit-transition-timing-function: ease;
  -moz-transition-property: background;
  -moz-transition-duration: 1s;
  -moz-transition-timing-function: ease;
  }
a:hover {
  background: #333;
  }

Ver ejemplo en funcionamiento » »

PROPIEDADES

  • transition-property: la utilizamos para listar las propiedades que se cambiarán, separadas por comas.
  • transition-duration: En esta propiedad especificamos el número de segundos o milisegundos que dura la transición.
  • transition-timing-function: En esta propiedad podemos definir el modo en que se ejecutará nuestra animación. La curva de tiempo que se usa para calcular los diferente estados entre el inicio y el final. La opción por defecto es ease. Las otras opciones son: "linear", "ease-in", "ease-out", "ease-in-out", y "cubic-bezier".
  • transition-delay determina el tiempo que transcurrirá antes de comenzar la transición. Su valor predeterminado es cero.

Podemos acortar significativamente la declaración utilizando una versión acortada de la misma:

a {
  padding: 5px 10px;
  background: #9c3;
  -webkit-transition: background 1s ease;
  -moz-transition: background 1s ease;
  }
a:hover {
  background: #333;
  }

Las transiciones fueron desarrolladas inicialmente por los navegadores con motores WebKit (Safari y Chrome), pero en la actualidad también son soportadas por Firefox y Opera. He aquí una declaración revisada, añadiendo que el prefijo -o- para Opera, así como la propiedad real de CSS3. Esta última declaración es la que deberán ir asumiendo los navegadores en el futuro. Por ello la colocaremos en último lugar; para asegurarnos de que la implementación final triunfará sobre las demás.

a {
  padding: 5px 10px;
  background: #9c3;
  -webkit-transition: background 1 ease;
  -moz-transition: background 1 ease;
  -o-transition: background 1 ease;
  transition: background 1 ease;
  }
a:hover {
  background: #333;
  }

El siguiente ejemplo es más complejo y vamos a animar varias propiedades

.caja1{
    margin:10px;
    border:1px solid #CCC;
    /* Propiedades a animar */
    width:100px;
    height:100px;
    background-color:#FF0000;
    /* Final propiedades */
   -webkit-transition-property: width, height, background-color; 
   -webkit-transition-duration: 0.5s, 1s, 1s; 
   -webkit-transition-timing-function: ease, ease-out, ease;
   -webkit-transition-delay:0s ,0.5s, 1.5s;
   -moz-transition-property: width, height, background-color; 
   -moz-transition-duration: 0.5s, 1s, 1s; 
   -moz-transition-timing-function: ease, ease-out, ease;
   -moz-transition-delay:0s ,0.5s, 1.5s;
   -o-transition-property: width, height, background-color; 
   -o-transition-duration: 0.5s, 1s, 1s; 
   -o-transition-timing-function: ease, ease-out, ease;
   -o-transition-delay:0s ,0.5s, 1.5s;
   transition-property: width, height, background-color; 
   transition-duration: 0.5s, 1s, 1s; 
   transition-timing-function: ease, ease-out, ease;
   transition-delay:0s ,0.5s, 1.5s;
}
 
.caja1:hover{
    width:400px;
    height:200px;
    background-color:#95d2ea;
}

Ver ejemplo en funcionamiento » »

Cuya versión reducida sería:


.caja1{
    margin:10px;
    border:1px solid #CCC;
    /* Propiedades a animar */
    width:100px;
    height:100px;
    background-color:#FF0000;
    /* fin propiedades */
	-webkit-transition: width 0.5s ease 0s, height 1s ease-out 0.5s, background-color 1s ease 1.5s;
	-moz-transition: width 0.5s ease 0s, height 1s ease-out 0.5s, background-color 1s ease 1.5s;
	-o-transition: width 0.5s ease 0s, height 1s ease-out 0.5s, background-color 1s ease 1.5s;
	transition: width 0.5s ease 0s, height 1s ease-out 0.5s, background-color 1s ease 1.5s;
}
 
.caja1:hover{
    width:400px;
    height:200px;
    background-color:#95d2ea;

}

Ver ejemplo en funcionamiento » »