Modulo 2 - CSS
Modulo 2 - CSS
Modulo 2 - CSS
Datos de contacto:
E-Mail: bilib@bilib.es
Página Web: www.bilib.es
Teléfono: 967 555 311
Reconocimiento. Debe reconocer los créditos de la obra de la manera especificada por el autor
o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que
hace de su obra).
Compartir bajo la misma licencia. Si transforma o modifica esta obra para crear una obra
derivada, sólo puede distribuir la obra resultante bajo la misma licencia, una similar o una
compatible.
Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta
obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los
derechos de autor.
Nada en esta licencia menoscaba o restringe los derechos morales del autor.
Los logos y marcas anunciados o referidos en este documento son propiedad de sus
respectivos dueños, todos o algunos derechos reservados dependiendo de su Licencia.
2 Introducción a CSS 6
Índice
Índice ............................................................................................................................... 2
2. CSS y HTML.............................................................................................................. 5
2 Introducción a CSS 6
4.7 Nuevos selectores ........................................................................................... 36
5. Propiedades CSS.................................................................................................... 37
2 Introducción a CSS 6
6.3.5 Organización ............................................................................................. 60
8. Bibliografía ............................................................................................................ 66
9. Casos prácticos...................................................................................................... 66
2 Introducción a CSS 6
1. Introducción del módulo
CSS es un lenguaje que trabaja junto con HTML para proveer estilos visuales a los
elementos del documento, como tamaño, color, fondo, bordes, etc…
En este capítulo, vamos a estudiar conceptos básicos de CSS y las nuevas técnicas de
CSS3 ya disponibles para presentación y estructuración.
También aprenderemos cómo utilizar los nuevos selectores y pseudo clases que hacen
más fácil la selección e identificación de elementos HTML.
Vamos a revisar estilos CSS y explicar algunas técnicas básicas para definir la estructura
de un documento. Si usted ya se encuentra familiarizado con estos conceptos, siéntase
libre de obviar las partes que ya conoce.
2. CSS y HTML
Como aclaramos anteriormente, la nueva especificación de HTML (HTML5) no describe
solo los nuevos elementos HTML o el lenguaje mismo. La web demanda diseño y
funcionalidad, no solo organización estructural o definición de secciones. En este
nuevo paradigma, HTML se presenta junto con CSS y Javascript como un único
instrumento integrado.
La función de cada tecnología ya ha sido explicada en capítulos previos, así como los
nuevos elementos HTML responsables de la estructura del documento. Ahora es
momento de analizar CSS, su relevancia dentro de esta unión estratégica y su influencia
sobre la presentación de documentos HTML.
2 Introducción a CSS 6
Oficialmente CSS nada tiene que ver con HTML5. CSS no es parte de la especificación y
nunca lo fue. Este lenguaje es, de hecho, un complemento desarrollado para superar
las limitaciones y reducir la complejidad de HTML. Al comienzo, atributos dentro de las
etiquetas HTML proveían estilos esenciales para cada elemento, pero a medida que el
lenguaje evolucionó, la escritura de códigos se volvió más compleja y HTML por sí
mismo no pudo más satisfacer las demandas de diseñadores. En consecuencia, CSS
pronto fue adoptado como la forma de separar la estructura de la presentación. Desde
entonces, CSS ha crecido y ganado importancia, pero siempre desarrollado en paralelo,
enfocado en las necesidades de los diseñadores y apartado del proceso de evolución
de HTML.
La versión 3 de CSS sigue el mismo camino, pero esta vez con un mayor compromiso.
La especificación de HTML5 fue desarrollada considerando CSS a cargo del diseño.
Debido a esta consideración, la integración entre HTML y CSS es ahora vital para el
desarrollo web y esta es la razón por la que cada vez que mencionamos HTML5 también
estamos haciendo referencia a CSS3, aunque oficialmente se trate de dos tecnologías
completamente separadas.
2 Introducción a CSS 6
En este momento las nuevas características incorporadas en CSS3 están siendo
implementadas e incluidas junto al resto de la especificación en navegadores
compatibles con HTML5.
3. Estilos y estructura
A pesar de que cada navegador garantiza estilos por defecto para cada uno de los
elementos HTML, estos estilos no necesariamente satisfacen los requerimientos de
cada diseñador. Normalmente se encuentran muy distanciados de lo que queremos
para nuestros sitios webs. Diseñadores y desarrolladores a menudo deben aplicar sus
propios estilos para obtener la organización y el efecto visual que realmente desean.
Con respecto a la estructura, básicamente cada navegador ordena los elementos por
defecto de acuerdo a su tipo: block (bloque) o inline (en línea). Esta clasificación está
asociada con la forma en que los elementos son mostrados en pantalla.
• Elementos block son posicionados uno sobre otro hacia abajo en la página.
• Elementos inline son posicionados lado a lado, uno al lado del otro en la misma
línea, sin ningún salto de línea a menos que ya no haya más espacio horizontal
para ubicarlos.
Casi todos los elementos estructurales en nuestros documentos serán tratados por los
navegadores como elementos block por defecto. Esto significa que cada elemento
HTML que representa una parte de la organización visual (por ejemplo, <section>,
<nav>, <header>, <footer>, <div>) será posicionado debajo del anterior.
2 Introducción a CSS 6
En el Capítulo 1 creamos un documento HTML con la intención de reproducir un sitio
web tradicional. El diseño incluyó barras horizontales y dos columnas en el medio.
Debido a la forma en que los navegadores muestran estos elementos por defecto, el
resultado en la pantalla está muy lejos de nuestras expectativas. Tan pronto como ese
archivo HTML es abierto en el navegador, la posición errónea en la pantalla de las dos
columnas definidas por los elementos <section> y <aside> es claramente visible. Una
columna está debajo de la otra en lugar de estar a su lado, como correspondería.
Cada bloque (block) es mostrado por defecto tan ancho como sea posible, tan
alto como la información que contiene y uno sobre otro, como se muestra en la
Ilustración 1.
Ilustración 1 - Representación visual de una página web mostrada con estilos por defecto
Para aprender cómo podemos crear nuestra propia organización de los elementos en
pantalla, debemos primero entender cómo los navegadores procesan el código HTML.
2 Introducción a CSS 6
Los navegadores consideran cada elemento HTML como una caja. Una página web es
en realidad un grupo de cajas ordenadas siguiendo ciertas reglas. Estas reglas son
establecidas por estilos provistos por los navegadores o por los diseñadores usando
CSS.
Existe solo un modelo de caja que es considerado estándar estos días, y muchos otros
que aún se encuentran en estado experimental. El modelo válido y ampliamente
2 Introducción a CSS 6
adoptado es el llamado Modelo de Caja Tradicional, el cual ha sido usado desde la
primera versión de CSS.
Aplicar estilos a los elementos HTML cambia la forma en que estos son presentados en
pantalla. Como explicamos anteriormente, los navegadores proveen estilos por
defecto que en la mayoría de los casos no son suficientes para satisfacer las
necesidades de los diseñadores. Para cambiar esto, podemos sobrescribir estos estilos
con los nuestros usando diferentes técnicas.
Al definir un estilo se utilizan reglas de texto simples para describir el aspecto de los
elementos de la página. Una regla CSS se caracteriza por dos elementos principales: un
selector de tipo para especificar a qué etiquetas del documento se aplica el estilo y una
declaración de estilo, que se define entre paréntesis, para especificar qué estilo aplicar
a las etiquetas seleccionadas. A su vez, la declaración está compuesta por una o más
propiedades, seguidas por el carácter ":" (dos puntos), uno o más valores asociados a
2 Introducción a CSS 6
cada propiedad, entre comillas y separados por comas si hay múltiples valores, y todos
seguidos por un punto y coma. La sintaxis es la siguiente:
A {
font-family: Verdana;
font-size: 18px;
font-style: bold;
color: yellow
}
4.2 Selectores
* {
margin: 0;
2 Introducción a CSS 6
padding: 0;
}
No obstante, sí que se suele combinar con otros selectores y además, forma parte de
algunos hacks muy utilizados, como se verá más adelante.
p {
...
}
Para utilizar este selector, solamente es necesario indicar el nombre de una etiqueta
HTML (sin los caracteres < y >) correspondiente a los elementos que se quieren
seleccionar.
El siguiente ejemplo aplica diferentes estilos a los titulares y a los párrafos de una
página HTML:
h1 {
color: red;
}
h2 {
color: blue;
}
2 Introducción a CSS 6
p {
color: black;
}
Si se quiere aplicar los mismos estilos a dos etiquetas diferentes, se pueden encadenar
los selectores. En el siguiente ejemplo, los títulos de sección h1, h2 y h3 comparten los
mismos estilos:
h1 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h2 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h3 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
En este caso, CSS permite agrupar todas las reglas individuales en una sola regla con
un selector múltiple. Para ello, se incluyen todos los selectores separados por una
coma (,) y el resultado es que la siguiente regla CSS es equivalente a las tres reglas
anteriores:
2 Introducción a CSS 6
h1, h2, h3 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
En las hojas de estilo complejas, es habitual agrupar las propiedades comunes de varios
elementos en una única regla CSS y posteriormente definir las propiedades específicas
de esos mismos elementos. El siguiente ejemplo establece en primer lugar las
propiedades comunes de los títulos de sección (color y tipo de letra) y a continuación,
establece el tamaño de letra de cada uno de ellos:
h1, h2, h3 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h1 { font-size: 2em; }
h2 { font-size: 1.5em; }
El selector del siguiente ejemplo selecciona todos los elementos <span> de la página
que se encuentren dentro de un elemento <p>:
2 Introducción a CSS 6
<p>
...
<span>texto1</span>
...
<a href="">...<span>texto2</span></a>
...
</p>
El selector p span selecciona tanto texto1 como texto2. El motivo es que, en el selector
descendente, un elemento no tiene que ser descendiente directo del otro. La única
condición es que un elemento debe estar dentro de otro elemento, sin importar el
nivel de profundidad en el que se encuentre.
2 Introducción a CSS 6
El resto de elementos <span> de la página, se muestran con el color por defecto
aplicado por el navegador.
Los selectores descendentes siempre están formados por dos o más selectores
separados entre sí por espacios en blanco. El último selector indica el elemento sobre
el que se aplican los estilos y todos los selectores anteriores indican el lugar en el que
se debe encontrar ese elemento.
Los estilos de la regla anterior se aplican a los elementos de tipo <em> que se
encuentren dentro de elementos de tipo <span>, que a su vez se encuentren dentro
de elementos de tipo <a> que se encuentren dentro de elementos de tipo <p>.
p a { color: red; }
<p><a href="#">Enlace</a></p>
2 Introducción a CSS 6
<p><span><a href="#">Enlace</a></span></p>
p * a { color: red; }
<p><a href="#">Enlace</a></p>
<p><span><a href="#">Enlace</a></span></p>
La razón es que el selector p * a se interpreta como todos los elementos de tipo <a>
que se encuentren dentro de cualquier elemento que, a su vez, se encuentre dentro
de un elemento de tipo <p>. Como el primer elemento <a> se encuentra directamente
bajo un elemento <p>, no se cumple la condición del selector p * a.
<body>
<p>Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et est adipiscing accumsan...</p>
<p>Class aptent taciti sociosqu ad litora...</p>
</body>
¿Cómo se pueden aplicar estilos CSS sólo al primer párrafo? El selector universal (*) no
se puede utilizar porque selecciona todos los elementos de la página. El selector de
tipo o etiqueta (p) tampoco se puede utilizar porque seleccionaría todos los párrafos.
Por último, el selector descendente (body p) tampoco se puede utilizar porque todos
los párrafos se encuentran en el mismo sitio.
2 Introducción a CSS 6
Una de las soluciones más sencillas para aplicar estilos a un solo elemento de la página
consiste en utilizar el atributo class de HTML sobre ese elemento para indicar
directamente la regla CSS que se le debe aplicar:
<body>
<p class="destacado">Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et est adipiscing accumsan...</p>
<p>Class aptent taciti sociosqu ad litora...</p>
</body>
A continuación, se crea en el archivo CSS una nueva regla llamada destacado con todos
los estilos que se van a aplicar al elemento. Para que el navegador no confunda este
selector con los otros tipos de selectores, se prefija el valor del atributo class con un
punto (.) tal y como muestra el siguiente ejemplo:
Este tipo de selectores se llaman selectores de clase y son los más utilizados junto con
los selectores de ID que se verán a continuación. La principal característica de este
selector es que en una misma página HTML varios elementos diferentes pueden utilizar
el mismo valor en el atributo class:
<body>
<p class="destacado">Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et <a href="#" class="destacado">est
adipiscing</a> accumsan...</p>
2 Introducción a CSS 6
<p>Class aptent taciti <em class="destacado">sociosqu
ad</em> litora...</p>
</body>
Los selectores de clase son imprescindibles para diseñar páginas web complejas, ya
que permiten disponer de una precisión total al seleccionar los elementos. Además,
estos selectores permiten reutilizar los mismos estilos para varios elementos
diferentes.
.aviso {
padding: 0.5em;
border: 1px solid #98be10;
background: #f6feda;
}
.error {
color: #930;
font-weight: bold;
}
<span class="error">...</span>
<div class="aviso">...</div>
El elemento <span> tiene un atributo class="error", por lo que se le aplican las reglas
CSS indicadas por el selector .error. Por su parte, el elemento <div> tiene un atributo
class="aviso", por lo que su estilo es el que definen las reglas CSS del selector .aviso.
<body>
2 Introducción a CSS 6
<p class="destacado">Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et <a href="#" class="destacado">est
adipiscing</a> accumsan...</p>
<p>Class aptent taciti <em class="destacado">sociosqu
ad</em> litora...</p>
</body>
¿Cómo es posible aplicar estilos solamente al párrafo cuyo atributo class sea igual a
destacado? Combinando el selector de tipo y el selector de clase, se obtiene un selector
mucho más específico:
2 Introducción a CSS 6
Por último, es posible aplicar los estilos de varias clases CSS sobre un mismo elemento.
La sintaxis es similar, pero los diferentes valores del atributo class se separan con
espacios en blanco. En el siguiente ejemplo:
Al párrafo anterior se le aplican los estilos definidos en las reglas .especial, .destacado
y .error, por lo que en el siguiente ejemplo, el texto del párrafo se vería de color rojo,
en negrita y con un tamaño de letra de 15 píxel:
En el ejemplo anterior, el color de la letra del texto es azul y no rojo. El motivo es que
se ha utilizado un selector de clase múltiple .error.destacado, que se interpreta como
"aquellos elementos de la página que dispongan de un atributo class con al menos los
valores error y destacado".
2 Introducción a CSS 6
4.2.5 Selectores de ID
En ocasiones, es necesario aplicar estilos CSS a un único elemento de la página. Aunque
puede utilizarse un selector de clase para aplicar estilos a un único elemento, existe
otro selector más eficiente en este caso.
La principal diferencia entre este tipo de selector y el selector de clase tiene que ver
con HTML y no con CSS. Como se sabe, en una misma página, el valor del atributo id
debe ser único, de forma que dos elementos diferentes no pueden tener el mismo
valor de id. Sin embargo, el atributo class no es obligatorio que sea único, de forma
que muchos elementos HTML diferentes pueden compartir el mismo valor para su
atributo class.
2 Introducción a CSS 6
De esta forma, la recomendación general es la de utilizar el selector de ID cuando se
quiere aplicar un estilo a un solo elemento específico de la página y utilizar el selector
de clase cuando se quiere aplicar un estilo a varios elementos diferentes de la página
HTML.
Al igual que los selectores de clase, en este caso también se puede restringir el alcance
del selector mediante la combinación con otros selectores. El siguiente ejemplo aplica
la regla CSS solamente al elemento de tipo <p> que tenga un atributo id igual al
indicado:
En este caso, algunas páginas pueden disponer de elementos con un atributo id igual
a aviso y que no sean párrafos, por lo que la regla anterior no se aplica sobre esos
elementos.
2 Introducción a CSS 6
4.2.6 Combinación de selectores básicos
CSS permite la combinación de uno o más tipos de selectores para restringir el alcance
de las reglas CSS. A continuación se muestran algunos ejemplos habituales de
combinación de selectores.
La combinación de selectores puede llegar a ser todo lo compleja que sea necesario:
El anterior selector hace referencia al enlace con un atributo id igual a inicio que se
encuentra dentro de un elemento de tipo <li> con un atributo class igual a destacado,
que forma parte de una lista <ul> con un atributo id igual a menuPrincipal.
Una de las técnicas más simples para incorporar estilos CSS a un documento HTML es
la de asignar los estilos dentro de las etiquetas por medio del atributo style.
El siguiente código muestra un documento HTML simple que contiene el elemento <p>
modificado por el atributo style con el valor font-size: 20px. Este estilo cambia el
2 Introducción a CSS 6
tamaño por defecto del texto dentro del elemento <p> a un nuevo tamaño de 20
pixeles.
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este es el título del documento</title>
</head>
<body>
<p style=”font-size: 20px”>Mi texto</p>
</body>
</html>
Solo imagine lo que ocurriría si decide que en lugar de 20 pixeles el tamaño de cada
uno de los elementos <p> debería ser de 24 pixeles. Tendría que modificar cada estilo
en cada etiqueta <p> en el documento completo.
Una mejor alternativa es insertar los estilos en la cabecera del documento y luego usar
referencias para afectar los elementos HTML correspondientes:
<!DOCTYPE html>
2 Introducción a CSS 6
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
<style>
p { font-size: 20px }
</style>
</head>
<body>
<p>Mi texto</p>
</body>
</html>
El elemento <style> permite a los desarrolladores agrupar estilos CSS dentro del
documento. En versiones previas de HTML era necesario especificar qué tipo de estilos
serían insertados. En HTML5 los estilos por defecto son CSS, por lo tanto, no
necesitamos agregar ningún atributo en la etiqueta de apertura <style>.
El código resaltado tiene la misma función que la línea de código del punto anterior,
pero en este caso no tuvimos que escribir el estilo dentro de cada etiqueta <p> porque
todos los elementos <p> ya fueron afectados.
Con este método, reducimos nuestro código y asignamos los estilos que queremos a
elementos específicos utilizando referencias.
Declarar los estilos en la cabecera del documento ahorra espacio y vuelve al código
más consistente y actualizable, pero nos requiere hacer una copia de cada grupo de
estilos en todos los documentos de nuestro sitio web. La solución es mover todos los
2 Introducción a CSS 6
estilos a un archivo externo y luego utilizar el elemento <link> para insertar este
archivo dentro de cada documento que los necesite. Este método nos permite cambiar
los estilos por completo simplemente incluyendo un archivo diferente. También nos
permite modificar o adaptar nuestros documentos a cada circunstancia o dispositivo.
Esta práctica fue ampliamente adoptada por diseñadores que ya están trabajando con
HTML5. La etiqueta <link> referenciando el archivo CSS será insertada en cada uno de
los documentos que requieren de esos estilos:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
<link rel="stylesheet" href="misestilos.css">
</head>
<body>
<p>Mi texto</p>
</body>
</html>
2 Introducción a CSS 6
4.6 Referencias
Almacenar todos nuestros estilos en un archivo externo e insertar este archivo dentro
de cada documento que lo necesite es muy conveniente, sin embargo, no podremos
hacerlo sin buenos mecanismos que nos ayuden a establecer una específica relación
entre estos estilos y los elementos del documento que van a ser afectados.
Existen varios métodos para seleccionar cuáles elementos HTML serán afectados por
las reglas CSS:
Al declarar las reglas CSS utilizando la palabra clave del elemento afectamos cada
elemento de la misma clase en el documento. Por ejemplo, la siguiente regla cambiará
los estilos de todos los elementos <p>:
2 Introducción a CSS 6
p { font-size: 20px }
¿Pero qué ocurre si solo necesitamos referenciar una etiqueta específica? ¿Debemos
usar nuevamente el atributo style dentro de esta etiqueta? La respuesta es no. Como
aprendimos anteriormente, el método de Estilos en Línea (usando el atributo style
dentro de etiquetas HTML) es una técnica en desuso y debería ser evitada.
Para seleccionar un elemento HTML específico desde las reglas de nuestro archivo CSS,
podemos usar dos atributos diferentes: id y class.
El atributo id es como un nombre que identifica al elemento. Esto significa que el valor
de este atributo no puede ser duplicado. Este nombre debe ser único en todo el
documento.
2 Introducción a CSS 6
La regla en el Listado 2-6 será aplicada al elemento HTML identificado con el atributo
id=”texto1”. Ahora nuestro código HTML lucirá de esta manera:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
<link rel="stylesheet" href="misestilos.css">
</head>
<body>
<p id=”texto1”>Mi texto</p>
</body>
</html>
Para trabajar con el atributo class, debemos declarar la regla CSS con un punto antes
del nombre. La ventaja de este método es que insertar el atributo class con el valor
texto1 será suficiente para asignar estos estilos a cualquier elemento que queramos:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
2 Introducción a CSS 6
<link rel="stylesheet" href="misestilos.css">
</head>
<body>
<p class=”texto1”>Mi texto</p>
<p class=”texto1”>Mi texto</p>
<p>Mi texto</p>
</body>
</html>
Los elementos <p> en las primeras dos líneas dentro del cuerpo del código tienen el
atributo class con el valor texto1. Como dijimos previamente, la misma regla puede ser
aplicada a diferentes elementos en el mismo documento. Por lo tanto, estos dos
primeros elementos comparten la misma regla y ambos serán afectados por el estilo
CSS. El último elemento <p> conserva los estilos por defecto otorgados por el
navegador.
La razón por la que debemos utilizar un punto delante del nombre de la regla es que
es posible construir referencias más complejas. Por ejemplo, se puede utilizar el mismo
valor para el atributo class en diferentes elementos pero asignar diferentes estilos para
cada tipo:
En este código creamos una regla que referencia la clase llamada texto1 pero solo para
los elementos de tipo <p>. Si cualquier otro elemento tiene el mismo valor en su
atributo class no será modificado por esta regla en particular.
2 Introducción a CSS 6
Aunque los métodos de referencia estudiados anteriormente cubren un variado
espectro de situaciones, a veces no son suficientes para encontrar el elemento exacto.
La última versión de CSS ha incorporado nuevas formas de referenciar elementos
HTML. Uno de ellas es el Selector de Atributo. Ahora podemos referenciar un elemento
no solo por los atributos id y class sino también a través de cualquier otro atributo:
Esta cambia solo elementos <p> que tienen un atributo llamado name. Para imitar lo
que hicimos previamente con los atributos id y class, podemos también especificar el
valor del atributo:
CSS3 permite combinar “=” con otros para hacer una selección más específica:
• La regla con el selector ^= será asignada a todo elemento <p> que contiene un
atributo name con un valor comenzado en “mi”.
• La regla con el selector $= será asignada a todo elemento <p> que contiene un
atributo name con un valor finalizado en “mi”.
• La regla con el selector *= será asignada a todo elemento <p> que contiene un
atributo name con un valor que incluye el texto “mi”.
En estos ejemplos usamos el elemento <p>, el atributo name, y una cadena de texto al
azar como “mi”, pero la misma técnica puede ser utilizada con cualquier atributo y
2 Introducción a CSS 6
valor que necesitemos. Solo tiene que escribir los corchetes e insertar entre ellos el
nombre del atributo y el valor que necesita para referenciar el elemento HTML
correcto.
CSS3 también incorpora nuevas pseudo clases que hacen la selección aún más
específica.
Miremos el siguiente código HTML. Contiene tres elementos <p> que, considerando la
estructura HTML, son hermanos entre sí e hijos del mismo elemento <div>.
<!DOCTYPE html>
<html lang="es">
<head>
<title>Este texto es el título del documento</title>
<link rel="stylesheet" href="misestilos.css">
</head>
<body>
<div id="wrapper">
<p class="mitexto1">Mi texto1</p>
<p class="mitexto2">Mi texto2</p>
<p class="mitexto3">Mi texto3</p>
</div>
</body>
</html>
2 Introducción a CSS 6
Usando pseudo clases podemos aprovechar esta organización y referenciar un
elemento específico sin importar cuánto conocemos sobre sus atributos y el valor de
los mismos:
p:nth-child(2){
background: #999999;
}
La pseudo clase es agregada usando dos puntos después de la referencia y antes del su
nombre. En la regla CSS anterior nos referenciamos solo al segundo hijo <p>.
Esta regla puede incluir otras referencias. Por ejemplo, podríamos escribirla como
.miclase:nth-child(2) para referenciar todo elemento que es hijo de otro elemento y
tiene el valor de su atributo class igual a miclase.
En concreto, la pseudo clase nth-child() nos permite encontrar un hijo específico. Como
ya explicamos, el código HTML anterior tiene tres elementos <p> que son hermanos.
Esto significa que todos ellos tienen el mismo padre que es el elemento <div>. Lo que
esta pseudo clase está realmente indicando es algo como: “el hijo en la posición…” por
lo que el número entre paréntesis será el número de la posición del hijo, o índice.
La palabra clave odd para la pseudo clase nth-child() afecta los elementos <p> que son
hijos de otro elemento y tienen un índice impar. La palabra clave even, por otro lado,
afecta a aquellos que tienen un índice par.
Existen otras importantes pseudo clases relacionadas con esta última, como son:
2 Introducción a CSS 6
• last-child referencia solo el último hijo
• only-child afecta un elemento siempre y cuando sea el único hijo disponible.
Estas pseudo clases en particular no requieren palabras clave o parámetros, y son
implementadas como en el siguiente ejemplo:
p:last-child{ }
Otra importante pseudo clase llamada not() es utilizada realizar una negación:
:not(p){
margin: 0px;
}
Esta regla asignará un margen de 0 pixeles a cada elemento del documento excepto
los elementos <p>. A diferencia del selector universal utilizado previamente, la pseudo
clase not() nos permite declarar una excepción. Los estilos en la regla creada con esta
pseudo clase serán asignados a todo elemento excepto aquellos incluidos en la
referencia entre paréntesis. En lugar de la palabra clave de un elemento podemos usar
cualquier otra referencia que deseemos. En el próximo listado, por ejemplo, todos los
elementos serán afectados excepto aquellos con el valor mitexto2 en el atributo class:
:not(.mitexto2){
margin: 0px;
}
Cuando aplicamos la última regla al código HTML del Listado 2-14 el navegador asigna
los estilos por defecto al elemento <p> identificado con el atributo class y el valor
mitexto2 y provee un margen de 0 pixeles al resto.
2 Introducción a CSS 6
Carácter especial Transcripción HTML Comentario
:link Enlace el valor del atributo href no está en el
histórico
:visited Enlace Visitado el valor del atributo href está en el histórico
:target Enlace Objetivo un enlace objetivo
:active Activo se ha hecho click sobre el elemento
:hover Sobre el cursor se encuentra sobre el elemento
:focus Foco el elemento captura el foco del documento
Hay algunos selectores más que fueron agregados o que ahora son considerados parte
de CSS3 y pueden ser útiles para nuestros diseños. Estos selectores usan los símbolos
>, + y ~ para especificar la relación entre elementos.
2 Introducción a CSS 6
El selector > está indicando que el elemento a ser afectado por la regla es el elemento
de la derecha cuando tiene al de la izquierda como su padre. El siguiente ejemplo
modifica los elementos <p> que son hijos de un elemento <div>. En este caso, fuimos
bien específicos y referenciamos solamente el elemento <p> con el valor mitexto2 en
su atributo class.
p.mitexto2 + p{
color: #990000;
}
p.mitexto2 ~ p{
color: #990000;
}
5. Propiedades CSS
La lista de propiedades CSS es muy extensa. Puedes encontrar la lista completa y sus
valores admitidos en los siguientes enlaces:
2 Introducción a CSS 6
• Propiedades de fuentes
• Propiedades de color y fondo
• Propiedades de texto
• Propiedades de cuadros
• Propiedades de clasificación
• Unidades
Con CSS3, las hojas de estilo han recibido una actualización importante, incluyendo
nuevas características tanto para aplicar aspecto avanzado en los elementos de una
página, como para ayudarnos a realizar una maquetación más precisa. De esta forma
podremos hacer webs más elaboradas y más dinámicas, con mayor separación entre
estilos y contenidos. Dará soporte a muchas necesidades de las webs actuales, sin
tener que recurrir a trucos de diseñadores o lenguajes de programación.
2 Introducción a CSS 6
5.1.1 Border-radius
Por muchos años diseñadores han sufrido intentando lograr el efecto de esquinas
redondeadas en las cajas de sus páginas web. El proceso era casi siempre frustrante y
extenuante. Todos lo padecieron alguna vez. Esquinas redondeadas eran esa clase de
cosas que nos hacían pensar: “debería ser fácil hacerlo”. Sin embargo, nunca lo fue.
Esta es la razón por la que, entre todas las nuevas posibilidades e increíbles
propiedades incorporadas en CSS3, la que exploraremos en primera instancia es
border- radius.
.borde-redondeado {
border-radius: 20px;
}
Con este código, se redondearán los bordes de todo elemento cuya clase se borde-
redondeado, con un diámetro de 20px en todas las esquinas.
2 Introducción a CSS 6
5.1.2 Border-shadow
Otro muy buen efecto que había sido extremadamente complicado de lograr hasta
este momento es sombras. Durante mucho tiempo, los diseñadores han combinado
imágenes, elementos y algunas propiedades CSS para generar sombras. Gracias a CSS3
y a la nueva propiedad box-shadow podremos aplicar sombras a nuestras cajas con
solo una simple línea de código:
.sombra {
box-shadow: rgb(150,150,150) 5px 5px;
}
2 Introducción a CSS 6
Los siguientes dos valores, expresados en pixeles, establecen el desplazamiento de la
sombra. Este desplazamiento puede ser positivo o negativo. Los valores indican,
respectivamente, la distancia horizontal y vertical desde la sombra al elemento.
Valores negativos posicionarán la sombra a la izquierda y arriba del elemento, mientras
que valores positivos crearán la sombra a la derecha y debajo del elemento. Valores
de 0 o nulos posicionarán la sombra exactamente detrás del elemento, permitiendo la
posibilidad de crear un efecto difuminado a todo su alrededor.
El último valor posible para box-shadow no es un número sino más bien una palabra
clave: inset. Esta palabra clave convierte a la sombra externa en una sombra interna,
lo cual provee un efecto de profundidad al elemento afectado.
2 Introducción a CSS 6
box-shadow: rgb(150,150,150) 5px 5px 10px inset;
5.1.3 Text-shadow
Los valores para text-shadow son similares a los usados para box-shadow. Podemos
declarar el color de la sombra, la distancia horizontal y vertical de la sombra con
respecto al objeto y el radio de difuminado.
5.1.4 @font-face
Obtener un texto con sombra es realmente un muy buen truco de diseño, imposible
de lograr con métodos previos, pero más que cambiar el texto en sí mismo solo provee
un efecto tridimensional. Una sombra, en este caso, es como pintar un viejo coche, al
final será el mismo coche. En este caso, será el mismo tipo de letra.
2 Introducción a CSS 6
El problema con las fuentes o tipos de letra es tan viejo como la web. Usuarios
regulares de la web a menudo tienen un número limitado de fuentes instaladas en sus
ordenadores, usualmente estas fuentes son diferentes de un usuario a otro, y la
mayoría de las veces muchos usuarios tendrán fuentes que otros no. Por años, los sitios
webs solo pudieron utilizar un limitado grupo de fuentes confiables (un grupo básico
que prácticamente todos los usuarios tienen instalados) y así presentar la información
en pantalla.
#titulo {
font: bold 36px MiNuevaFuente, verdana, sans-serif;
}
@font-face {
font-family: 'MiNuevaFuente';
src: url('font.ttf');
}
La propiedad @font-face necesita al menos dos estilos para declarar la fuente y cargar
el archivo. El estilo construido con la propiedad font-family especifica el nombre que
queremos otorgar a esta fuente en particular, y la propiedad src indica la URL del
archivo con el código correspondiente a esa fuente.
Una vez que la fuente es cargada, podemos comenzar a usarla en cualquier elemento
del documento simplemente escribiendo su nombre (MiNuevaFuente). En el estilo font
especificamos que el título será mostrado con la nueva fuente o las alternativas
2 Introducción a CSS 6
verdana y sans-serif en caso de que la fuente incorporada no sea cargada
apropiadamente.
Ahora ya no tenemos que pensar en cómo hacerlo. En su lugar, solo tenemos que
conocer cómo ajustar unos pocos parámetros y nuestro sitio web puede ser tan flexible
y dinámico como lo imaginamos.
Transform: scale
#principal {
2 Introducción a CSS 6
transform: scale(2, -2);
}
La función scale puede recibir hasta dos parámetros: el valor X para la escala horizontal
y el valor Y para la escala vertical. Si solo un valor es provisto el mismo valor es aplicado
a ambos parámetros.
Números enteros y decimales pueden ser declarados para la escala. Esta escala es
calculada por medio de una matriz. Los valores entre 0 y 1 reducirán el elemento, un
valor de 1 mantendrá las proporciones originales y valores mayores que 1 aumentarán
las dimensiones del elemento de manera incremental.
Transform: rotate
#principal {
transform: rotate(30deg);
}
Transform: skew
#principal {
transform: skew(20deg, 10deg);
}
La función skew puede usar hasta dos parámetros, pero a diferencia de otras
funciones, cada parámetro de esta función solo afecta a una dimensión (los
parámetros actúan de forma independiente). Si solo declaramos el primer parámetro,
2 Introducción a CSS 6
solo la dimensión horizontal de la caja será modificada. Si usamos los dos parámetros,
podemos alterar ambas dimensiones del objeto. Como alternativa podemos utilizar
funciones diferentes para cada una de ellas: skewX y skewY.
Transform: translate
Similar a las viejas propiedades top y left, la función translate mueve o desplaza el
elemento en la pantalla a una nueva posición.
#principal {
transform: translate(100px);
}
La función translate considera la pantalla como una grilla de pixeles, con la posición
original del elemento usada como un punto de referencia. La esquina superior
izquierda del elemento es la posición 0,0, por lo que valores negativos moverán al
objeto hacia la izquierda o hacia arriba de la posición original, y valores positivos lo
harán hacia la derecha o hacia abajo.
Transiciones
La propiedad transition fue incluida para suavizar los cambios, creando mágicamente
el resto de los pasos que se encuentran implícitos en el movimiento. Solo agregando
esta propiedad forzamos al navegador a tomar cartas en el asunto, crear para nosotros
todos esos pasos invisibles, y generar una transición suave desde un estado al otro.
#principal {
transition: transform 1s ease-in-out 0.5s;
}
#principal:hover{
transform: rotate(5deg);
2 Introducción a CSS 6
}
Como puede ver en el este ejemplo, la propiedad transition puede tomar hasta cuatro
parámetros separados por un espacio. El primer valor es la propiedad que será
considerada para hacer la transición (en nuestro ejemplo elegimos transform). Esto es
necesario debido a que varias propiedades pueden cambiar al mismo tiempo y
probablemente necesitemos crear los pasos del proceso de transición solo para una de
ellas.
El tercer parámetro puede ser cualquiera de las siguientes palabras clave: ease, linear,
ease-in, ease-out o ease-in-out. Estas palabras clave determinan cómo se realizará el
proceso de transición basado en una curva Bézier. Cada una de ellas representa
diferentes tipos de curva Bézier, y la mejor forma de saber cómo trabajan es viéndolas
funcionar en pantalla. El último parámetro para la propiedad transition es el retardo.
Este indica cuánto tiempo tardará la transición en comenzar.
Para producir una transición para todas las propiedades que están cambiando en un
objeto, la palabra clave all debe ser especificada. También podemos declarar varias
propiedades a la vez listándolas separadas por coma.
Cuando los navegadores muestran una página web, además de aplicar las hojas de
estilo de los diseñadores, siempre aplican otras dos hojas de estilos: la del navegador
y la del usuario.
2 Introducción a CSS 6
La hoja de estilos del navegador se utiliza para establecer el estilo inicial por defecto a
todos los elementos HTML: tamaños de letra, decoración del texto, márgenes, etc. Esta
hoja de estilos siempre se aplica a todas las páginas web, por lo que cuando una página
no incluye ninguna hoja de estilos propia, el aspecto con el que se muestra en el
navegador se debe a esta hoja de estilos del navegador.
Por su parte, la hoja de estilos del usuario es la que puede aplicar el usuario mediante
su navegador. Aunque la inmensa mayoría de usuarios no utiliza esta característica, en
teoría es posible que los usuarios establezcan el tipo de letra, color y tamaño de los
textos y cualquier otra propiedad CSS de los elementos de la página que muestra el
navegador.
Por tanto, las reglas que menos prioridad tienen son las del CSS de los navegadores, ya
que son las primeras que se aplican. A continuación, se aplican las reglas definidas por
los usuarios y por último se aplican las reglas CSS definidas por el diseñador, que por
tanto son las que más prioridad tienen.
2 Introducción a CSS 6
En caso de igualdad, las reglas !important de los usuarios son más importantes que las
reglas !important del diseñador. Gracias a esta característica, si un usuario sufre
deficiencias visuales, puede crear una hoja de estilos CSS con reglas de tipo !important
con la seguridad de que el navegador siempre aplicará esas reglas por encima de
cualquier otra regla definida por los diseñadores.
El principal problema de las hojas de estilo de los navegadores es que los valores que
aplican por defecto son diferentes en cada navegador. Aunque todos los navegadores
coinciden en algunos valores importantes (tipo de letra serif, color de letra negro, etc.)
presentan diferencias en valores tan importantes como los márgenes verticales
(margin-bottom y margin-top) de los títulos de sección (<h1>, ... <h6>), la tabulación
izquierda de los elementos de las listas (margin-left o padding-left según el navegador)
y el tamaño de línea del texto (line-height).
2 Introducción a CSS 6
<h2>Consectetuer adipiscing elit</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut consectetuer
adipiscing elit</p>
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ul>
<table summary="Lorem Ipsum">
<caption>Lorem Ipsum</caption>
<tr>
<th>Celda 1-1</th>
<th>Celda 1-2</th>
</tr>
<tr>
<td>Celda 2-1</td>
<td>Celda 2-2</td>
</tr>
</table>
</body>
</html>
2 Introducción a CSS 6
Como todas las hojas de estilo de los navegadores son diferentes, cuando un diseñador
prueba sus estilos sobre diferentes navegadores, es común encontrarse con
diferencias visuales apreciables. La solución a este problema es muy sencilla y consiste
en borrar o resetear los estilos que aplican por defecto los navegadores.
Una de las formas más sencillas de neutralizar algunos de los estilos de los navegadores
consiste en eliminar el margen y relleno a todos los elementos de la página para
establecerlos posteriormente de forma individual:
* {
margin: 0;
padding: 0;
}
Aunque la regla CSS anterior se ha utilizado desde hace muchos años, se trata de una
solución muy rudimentaria y limitada. La solución completa consiste en crear una hoja
de estilos CSS que neutralice todos los estilos que aplican por defecto los navegadores
2 Introducción a CSS 6
y que pueden afectar al aspecto visual de las páginas. Este tipo de hojas de estilos se
suelen llamar "reset CSS".
En primer lugar, los diseñadores web profesionales disponen de todos los navegadores
principales instalados en sus equipos de trabajo. Por lo tanto, si no lo has hecho ya,
descarga e instala los siguientes navegadores:
2 Introducción a CSS 6
Firefox: disponible para sistemas operativos Windows, Mac, Linux y en más de 45
idiomas.
Afortunadamente, existe una aplicación web gratuita que permite solucionar este
problema. La aplicación Browsershots prueba la página indicada en varias versiones
diferentes de cada navegador, crea una imagen de cómo se ve la página en cada uno
de ellos y nos muestra esa imagen.
2 Introducción a CSS 6
Aunque el proceso es lento y mucho menos flexible que probar la página en nuestros
propios navegadores, el resultado permite al diseñador comprobar si su trabajo se ve
correctamente en multitud de navegadores y sistemas operativos. En la actualidad,
Browsershots comprueba el aspecto de las páginas en 4 sistemas operativos y 72
navegadores diferentes.
IE Tab es una extensión que se instala en el navegador Firefox y hace que Internet
Explorer se integre en Firefox. Una vez instalada, esta extensión permite ver las páginas
con Internet Explorer dentro de Firefox.
Aunque resulta sorprendente, IE Tab hace que las páginas en Firefox se puedan ver
mediante Internet Explorer, de forma que los diseñadores no tienen que cambiar
constantemente de navegador y por tanto aumenta considerablemente su
productividad.
Aunque la empresa Microsoft, creadora de Internet Explorer, sigue sin resolver este
problema, se han publicado soluciones no oficiales para disponer de varias versiones
de Internet Explorer en el mismo sistema operativo.
2 Introducción a CSS 6
La primera solución propuesta fue el Browser Archive, un repositorio de navegadores
desde el que se pueden descargar versiones antiguas de decenas de navegadores
diferentes, entre ellos Internet Explorer. Lamentablemente hace mucho tiempo que
no se añaden nuevas versiones, por lo que la última versión disponible de Internet
Explorer es la 6.
Las hojas de estilos reales de los sitios web profesionales suelen contener cientos de
reglas y ocupan miles de líneas. Por este motivo, es imprescindible seguir unas buenas
prácticas al crear las hojas de estilos para mejorar la producitivdad y reducir los
posibles errores. A continuación, se muestran algunas de las recomendaciones más
útiles para crear hojas de estilos profesionales.
6.3.1 Llaves
Uno de los elementos básicos que los diseñadores web deben acordar es el tipo de
llaves que se utilizan para encerrar la declaración de cada regla CSS. Aunque se utilizan
muchos modelos diferentes, a continuación se muestran los más populares.
Llave de apertura en la misma línea del selector y llave de cierre en una nueva línea
para separar unas reglas de otras:
selector {
propiedad1: valor1;
2 Introducción a CSS 6
propiedad2: valor2;
}
Una variante del modelo anterior consiste en mostrar cada llave en su propia línea,
para separar aún más el selector de su declaración. Este modelo lo utilizan
normalmente los programadores web:
selector
{
propiedad1: valor1;
propiedad2: valor2;
}
Por último, existe un modelo compacto que no crea nuevas líneas para las llaves.
Aunque es mucho más compacto, normalmente es más difícil de leer:
selector {
propiedad1: valor1;
propiedad2: valor2; }
6.3.2 Tabulaciones
Tabular el código facilita significativamente su lectura, por lo que tabular las
propiedades CSS es una de las mejores prácticas de los diseñadores web profesionales.
Como conocen la mayoría de programadores, no es recomendable insertar
tabuladores en el código, sino que se deben emplear 2 o 4 espacios en blanco.
2 Introducción a CSS 6
/* Propiedades tabuladas con 2 espacios */
selector {
propiedad1: valor1;
propiedad2: valor2;
}
ul {
margin: 1em 0;
padding: 0;
}
ul li {
list-style-type: square;
}
ul li ul {
font-style: italic;
list-style-type: disc;
La recomendación consiste en tabular las reglas CSS que están relacionadas porque sus
selectores están anidados. Por tanto, la regla cuyo selector es ul li debería estar
tabulada respecto de la regla ul y de la misma forma la regla cuyo selector es ul li ul
debería estar tabulada respecto de ul li:
ul {
margin: 1em 0;
2 Introducción a CSS 6
padding: 0;
}
ul li {
list-style-type: square;
}
ul li ul {
font-style: italic;
list-style-type: disc;
}
6.3.3 Propiedades
Cuando se establece la misma propiedad en varios selectores diferentes pero
relacionados, se recomienda escribir las reglas CSS en una única línea, para facilitar su
lectura:
selector {
position: absolute; /* propiedades de posicionamiento */
right: 0;
bottom: 10px;
2 Introducción a CSS 6
color: #000; /* propiedades tipográficas */
font-size: 2em;
selector {
bottom: 10px;
color: #000;
font-size: 2em;
height: 250px;
position: absolute;
right: 0;
width: 300px;
}
6.3.4 Selectores
Los selectores deben ser descriptivos para facilitar la lectura de la hoja de estilos, por
lo que hay que poner especial cuidado en elegir el nombre de los atributos id y class.
Además, aunque aumenta el tamaño total de la hoja de estilos, se recomienda utilizar
selectores lo más específicos posible para facilitar el mantenimiento de la hoja de
estilos:
Por otra parte, cuando una regla CSS tiene varios selectores largos, es mejor colocar
cada selector en su propia línea:
2 Introducción a CSS 6
#contenedor h1,
#contenedor #principal h2,
#contenedor #lateral blockquote {
color: #000;
font-family: arial, sans-serif;
}
6.3.5 Organización
Cuando una hoja de estilos tiene cientos de reglas, es recomendable organizarla en
secciones para facilitar su mantenimiento. Aunque existen muchas posibles
organizaciones, en general se utilizan las siguientes secciones:
• Estilos básicos (estilos de <body>, tipo de letra por defecto, márgenes de <ul>,
<ol> y <li>, estilos de los enlaces, etc.)
• Estilos de la estructura o layout (anchura, altura y posición de la cabecera, pie
de página, zonas de contenidos, menús de navegación, etc.)
• Estilos del menú de navegación
• Estilos de cada una de las zonas (elementos de la cabecera, titulares y texto de
la zona de contenidos, enlaces, listas e imágenes de las zonas laterales, etc.)
/* TOC:
Random HTML Styles
Forms
General Structure
Navigation
2 Introducción a CSS 6
Quotations
Comments and Other Asides
Emphasis
Computers - General
Code
Examples and Figures
Q and A (FAQ)
Tables
Headers
Meta
Specific to Products Pages
*/
Algunos de los atributos id más utilizados en los diseños web son: cabecera, cuerpo,
pie, contenidos, principal, secundario, lateral, buscador, contacto, logo.
6.3.6 Comentarios
Separar las secciones de la hoja de estilos y otros bloques importantes es mucho más
fácil cuando se incluyen comentarios. Por este motivo se han definido decenas de tipos
diferentes de comentarios separadores.
El modelo básico sólo añade un comentario destacado para el inicio de cada sección
importante:
2 Introducción a CSS 6
/* ---------------------------------------*/
/* ---------->>> CONTENEDOR <<<-----------*/
/* ---------------------------------------*/
/* ---------------------------------------------------------
CABECERA
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Logotipo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* Buscador
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6.4 Rendimiento
Utilizar sprites CSS para reducir el número de imágenes de adorno a una única imagen.
2 Introducción a CSS 6
Enlazar hojas de estilos externas en vez de incluir los estilos en la propia página.
Enlazar las hojas de estilos mediante <link> en vez de @import (en Internet Explorer
las reglas @import tienen el mismo efecto que enlazar los archivos CSS al final de la
página).
Combinar si es posible todos los archivos CSS individuales en un único archivo CSS.
Reducir el tamaño de las hojas de estilos comprimiendo los archivos con las
herramientas disponibles (CSS Tidy, YUI Compressor).
2 Introducción a CSS 6
20% de las páginas vistas, los navegadores de los usuarios se descargan todos sus
elementos: imágenes, archivos JavaScript y hojas de estilos CSS.
Como demuestran los estudios realizados por Yahoo!, la descarga de las páginas web
se realiza a saltos, descargando cada vez 2, 4 o 6 elementos de la página. Por este
motivo es fundamental reducir el número de elementos de la página, entre ellos el
número de hojas de estilos CSS, para reducir el número de peticiones HTTP necesarias.
2 Introducción a CSS 6
El siguiente paso consiste en reducir el tamaño de esa única hoja de estilos grande.
Como los archivos CSS normales incluyen muchos espacios en blanco, nuevas líneas,
comentarios y propiedades no optimizadas, es muy sencillo reducir su tamaño de
forma considerable eliminando todos los elementos sobrantes.
Yahoo! ha desarrollado una herramienta llamada YUI compressor que permite reducir
de forma segura el tamaño de los archivos JavaScript y CSS. Su uso no es muy cómodo
para los diseñadores web, ya que requiere el uso de Java y la línea de comandos.
Otra herramienta similar a la anterior es CSSTidy, que permite reducir el tamaño de los
archivos CSS eliminando los elementos sobrantes (comentarios, espacios en blanco,
nuevas líneas) y optimizando las reglas CSS (sustituir propiedades individuales por
propiedades shorthand, utilizar la notación abreviada de números y colores, etc.) CSS
Tidy es una herramienta gratuita disponible para todos los sitemas operativos, se
puede utilizar mediante la línea de comandos y también se puede integrar con el
lenguaje de programación PHP.
box-shadow: Esta propiedad crea sombras para la caja formada por el elemento.
2 Introducción a CSS 6
@font-face: Esta regla nos permite cargar y usar cualquier fuente que necesitemos.
transition: Esta propiedad puede ser aplicada para crear una transición entre dos
estados de un elemento
8. Bibliografía
http://librosweb.es/libro/css/
https://www.manualdecss.com
http://aprende-web.net/css/
https://www.w3schools.com/css/
http://www.htmlhelp.com/es/reference/css/properties.html
9. Casos prácticos
9.1 Caso práctico 1
A partir del código HTML y CSS que se muestra, añadir los selectores CSS que faltan
para aplicar los estilos deseados. Cada regla CSS incluye un comentario en el que se
explica los elementos a los que debe aplicarse:
2 Introducción a CSS 6
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
<title>Ejercicio de selectores</title>
<style type="text/css">
/* Todos los elementos de la pagina */
{ font: 1em/1.3 Arial, Helvetica, sans-serif; }
2 Introducción a CSS 6
/* Elementos "span" contenidos en .normal */
{ font-weight: bold; }
</style>
</head>
<body>
<div id="primero">
<p>Lorem ipsum dolor sit amet, <a href="#">consectetuer
adipiscing elit</a>. Praesent blandit nibh at felis. Sed nec
diam in dolor vestibulum aliquet. Duis ullamcorper, nisi non
facilisis molestie, <em>lorem sem aliquam nulla</em>, id
lacinia velit mi vestibulum enim.</p>
</div>
<div class="normal">
<p>Phasellus eu velit sed lorem sodales egestas. Ut feugiat.
<span><a href="#">Donec porttitor</a>, magna eu varius
luctus,</span> metus massa tristique massa, in imperdiet est
velit vel magna. Phasellus erat. Duis risus. <a
href="#">Maecenas dictum</a>, nibh vitae pellentesque auctor,
tellus velit consectetuer tellus, tempor pretium felis tellus
at metus.</p>
<p>Cum sociis natoque <em class="especial">penatibus et
magnis</em> dis parturient montes, nascetur ridiculus mus.
Proin aliquam convallis ante. Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis
egestas. Nunc aliquet. Sed eu metus. Duis justo.</p>
<p>Donec facilisis blandit velit. Vestibulum nisi. Proin
volutpat, <em class="especial">enim id iaculis congue</em>,
orci justo ultrices tortor, <a href="#">quis lacinia eros
libero in eros</a>. Sed malesuada dui vel quam. Integer at
eros.</p>
</div>
</body>
</html>
2 Introducción a CSS 6
9.2 Caso práctico 2
A partir de la página web que se te proporciona, debes escribir las reglas CSS necesarias
para lograr una página web que tenga el siguiente funcionamiento:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Ejercicio de selectores</title>
</head>
<body>
<h1>Universidad de Alicante</h1>
<ul>
2 Introducción a CSS 6
<li><a href="">Presentación</a></li>
<li><a href="">Estudios</a></li>
<li><a href="">Alumnos</a></li>
<li><a href="">Deportes</a></li>
<li><a href="">Servicios</a></li>
</ul>
</body>
</html>
2 Introducción a CSS 6
a) Con el símbolo #
b) Con un punto
c) Poniendo únicamente la clase, sin símbolo
2 Introducción a CSS 6
a) Siempre se ha podido redondear esquinas
b) Desde CSS2
c) Desde CSS3
2 Introducción a CSS 6