Lmsgi Ut03 Teoria CSS3
Lmsgi Ut03 Teoria CSS3
CSS
Página 1/42
Lenguajes de marcas Tema 3. CSS
En los entornos científicos en que la Web fue concebida, la gente estaba más preocupada
por el contenido de sus páginas que por su presentación. A medida que laWeb era
descubierta por un espectro mayor de personas de distintas procedencias, las limitaciones
del HTML se convirtieron en fuente de continua frustración, y los autores se vieron forzados
a superar las limitaciones estilísticas del HTML. Las hojas de estilo resuelven estos
problemas al mismo tiempo que reemplazan al limitado rango de mecanismos de
presentación del HTML.
Con las hojas de estilo es más fácil especificar la cantidad de espacio entre líneas, el
sangrado de las líneas, los colores a utilizar para el texto y el fondo, el tamaño y estilo
de las fuentes, y otros muchos detalles.
Las hojas de estilo representan, por tanto, un avance importante para los diseñadores
de páginas web, al darles un mayor rango de posibilidades para mejorar la apariencia de
sus páginas. Además, si queremos generar documentos con un aspecto idéntico para dar
un aspecto más robusto y claro a nuestros documentos nos vemos obligados a señalar,
para cada elemento de nuestras páginas, el formato que queremos. Con las hojas de
estilo definimos las características comunes a todas nuestras páginas una sola vez,
lo que facilita mucho nuestro trabajo cuando tenemos muchas páginas en el servidor.
Las Hojas de Estilo o CSS (Cascading Style Sheets - Hojas de Estilo en Cascada)
son un mecanismo que permite aplicar formato a los documentos escritos en
HTML (y en otros lenguajes estructurados, como XML) separando el contenido de las
páginas de su apariencia:
- la información estará contenida en la página HTML, pero este archivo no debe definir
cómo será visualizada esa información
- las indicaciones acerca de la composición visual del documento estaránespecificadas
en el archivo de la CSS.
Sólo con código HTML encontraremos Con CSS nos valemos de HTML para
tanto las etiquetas para la información definir la estructura de la información (el
como para la presentación. contenido), y el aspecto se proporciona
mediante CSS.
Página 2/42
Lenguajes de marcas Tema 3. CSS
Veamos un ejemplo de código CSS que indica que los encabezados h1 deben mostrarse
con tipografía Arial, de 19 puntos, en color azul y alineación central:
El archivo css contiene reglas que constan de un selector (en este ejemplo, h1) y una
o más declaraciones (en el ejemplo tenemos cuatro declaraciones).
Cada declaración tiene dos partes: una propiedad (por ejemplo, font-size) y un valor
(en este caso, 19pt).
Estas reglas son las que determinan cómo deberá mostrarse la página.
Selector { declaraciones }
Salvamos el fichero anterior, por ejemplo como “estilos1.css”. Luego, en cada página HTML
de nuestro sitio agregamos la etiqueta link indicando el fichero que contiene nuestra hoja
de estilo (el archivo con extensión .css):
estilos1.css
h1 { font-family: Arial, Sans-serif;
font-size: 19pt;
color: #0000FF;
text-align: center;
}
indice.html
<html lang="es">
<head> <title>Título</title>
<link rel="stylesheet" href="estilos1.css" type="text/css">
</head>
<body>
...
<p>Este párrafo es normal</p>
<h1> Este texto aparecerá con fuente arial de 19 puntos,
en color azul y alineación central.</h1>
…
</body>
</html>
Página 3/42
Lenguajes de marcas Tema 3. CSS
Ahora, todos los encabezados h1 de las páginas que contienen la referencia al archivo
de la CSS tendrán el aspecto que hemos definido.
Hemos visto cómo se especifican las reglas de estilo en un archivo externo, pero
también existe la posibilidad de poner la hoja de estilo dentro de una página HTML
usando el elemento style en el interior del documento al que se le quiere dar estilo, en
la sección <head>. De esta forma los estilos serán reconocidos antes de que la página
se cargue por completo.
<html lang="es">
<head>
<title>CSS incrustada</title>
<style type="text/css">
h1 { color: blue; }
</style>
</head>
<body>
<h1>Título color azul</h1>
<p>Un párrafo cualquiera...</p>
</body>
</html>
<style type="text/css">
h1 { color: blue; }
p { color: red; }
... (aquí se agregan todas las reglas de estilo) ...
</style>
Este método permite aplicar la hoja de estilo sólo a la página que la contiene.
Si bien no es tan práctico como usar una CSS externa, resulta útil cuando en nuestro
sitio tenemos algunas pocas páginas que usan un formato distinto al resto.
Página 4/42
Lenguajes de marcas Tema 3. CSS
Por las leyes de cascada de las CSS, en caso de existir una misma regla (una en la
hoja externa, otra en la hoja incrustada) con distintos valores, tiene preponderancia la
definida en último lugar.
Por ejemplo:
Por supuesto, la definición del estilo dentro de la propia etiqueta no es la manera más
eficaz de utilizar las hojas de estilo, pero pueden existir casos que lo justifiquen. La
existencia de una regla como la del último ejemplo constituye por sí misma una hoja de
estilo por lo que debemos declarar en el encabezado de la página el tipo de CSS que
estamos usando.
<style type="text/css"></style>
Esta definición en línea sólo afecta a la etiqueta donde se ha definido, al cerrarla dejan
de tener validez las especificaciones.
5. Normas básicas:
Página 5/42
Lenguajes de marcas Tema 3. CSS
Agrupamiento:
o lo que es lo mismo
h1 {color: red;}
h2 {color: red;}
h3 {color: red;}
La propiedad, que en este caso sería color, especifica qué aspecto se va a cambiar. Las
propiedades que se desean modificar en una CSS para un mismo selector pueden
agruparse, pero será necesario separar cada una de ellas con un punto y coma:
p {text-align:center; color:red; }
h1 {padding-left: 11em;
font-family: Georgia, "Times New Roman", Times, serif;
color: red;
background-color: #d8da3d;
}
Comentarios:
/* Esto es un comentario */
Página 6/42
Lenguajes de marcas Tema 3. CSS
6. El “Modelo de caja”:
El modelo de caja de CSS describe las cajas rectangulares que son generadas por los
elementos. El elemento raíz del documento (<html> o, mejor aún, <body>) genera una
caja que actúa como bloque de contención de las cajas generadas subsecuentemente. A
su vez, cada caja puede actuar como bloque de contención de otras cajas generadas por
sus elementos descendientes.
Cada una de las cajas puede separarse en cuatro áreas distintas que definen
su aspecto:
- Contenido: es el área que contiene la información representable del elemento
(textos, imágenes, objetos... ).
- Relleno (padding): esta área es el espacio existente entre el rectángulo del
contenido y el borde definible para cada una de las cajas.
- Borde (border): el elemento puede presentar un borde con un grosor, una forma
y un color que delimitan las áreas anteriores.
- Margen (margin): la parte más externa de cada caja de elemento es el margen. Este
proporciona el espacio que separa una caja de las generadas por los elementos
anterior y siguiente.
Top
Left Righ
t
Bottom
Página 7/42
Lenguajes de marcas Tema 3. CSS
<html lang="es">
<head>
<title>Ejemplo 1 de hojas de estilos</title>
<style type="text/css">
p { font-family: "trebuchet ms";
font-weight: bold;
line-height: 20pt;
}
</style>
</head>
<body>
<p>Primer párrafo de texto</p>
<p style="margin: 20pt;
background-color: #2E9AFE;
border-width: thick;
border-color: red;
border-style: dotted;
text-indent: 20pt;
line-height: 44pt;">Segundo párrafo de texto</p>
<p>Tercer párrafo de texto</p>
</body>
</html>
Si una caja define tanto un color como una imagen de fondo, la imagen tiene más
prioridad y es la que se visualiza. No obstante, si la imagen de fondo no cubre
totalmente la caja del elemento o si la imagen tiene zonas transparentes, también se
visualiza el color de fondo. Combinando imágenes transparentes y colores de fondo se
pueden lograr efectos gráficos muy interesantes.
Todo esto es muy técnico, pero ¿para qué sirve?: fundamentalmente para tener elcontrol
no sólo de las propiedades del elemento en sí (su color, la fuente usada para el texto, etc.),
sino también de las propiedades de esa caja generada por el elemento (sus
Página 8/42
Lenguajes de marcas Tema 3. CSS
márgenes, sus bordes, la posición dentro del documento) que será lo que nos permita
componer visualmente la página de un modo mucho más rico y flexible que
con HTML.
Este modelo de caja es el que permite, por ejemplo, que cualquier elemento de la
página pueda recibir todas de las propiedades definidas en CSS. Por eso, a diferencia de
lo que sucede con HTML, todos los elementos pueden tener una imagen de fondo o un
borde (sin necesidad de usar una tabla para eso).
También es posible darle una ubicación precisa a cualquier elemento dentro de lapágina,
ya sea con respecto a la pantalla o a otros elementos.
Mejor aún, nos da la posibilidad de usar un lenguaje como, por ejemplo JavaScript para
conseguir efectos muy interesantes modificando las propiedades de las cajas (moverlas de
su posición, mostrarlas o esconderlas, cambiar su tamaño, etc.).
Cada etiqueta HTML va a generar una caja según el tipo al que pertenezca,
pero la descripción anterior se aplica a todas ellas. La clasificación del tipo de etiquetas
es la siguiente:
- Etiquetas de bloque: este tipo de etiquetas son aquellas que fuerzan un salto de
línea antes y después del elemento. Por ejemplo, las etiquetas <div> y <p> son
de este tipo.
- Etiquetas en línea: son las etiquetas que se incluyen dentro de otro elemento, y
que no generarán saltos de línea, de modo que su anchura será la necesaria para
mostrar su contenido. Por ejemplo, las etiquetas <span>, <code> y <b>
pertenecen a este tipo.
7. Propiedades
Existen una serie de convenciones en estos apuntes que debemos tener en cuenta:
Página 9/42
Lenguajes de marcas Tema 3. CSS
Ejemplos:
[<family-name> , ]* indica que el valor de tipo <family_name> seguido por una coma
se puede incluir cero o más veces.
Por último, el valor [<medida> | thick | thin] {1,4} indica que se pueden escribir
entre 1 y 4 veces un valor que sea o una medida o la palabra thick o la palabra thin.
Las propiedades que podemos usar dentro de una hoja de estilo son:
font genérico para definir los anteriores en una sola propiedad sin
necesidad de
indicar el nombre de la propiedad individual. Sintaxis:
[font-style || font-variant || font-weight]? font-size
[/line-height]? font-family]
Página 10/42
Lenguajes de marcas Tema 3. CSS
Ejemplo 1:
<style type="text/css">
h1 {font-family: "Verdana";
font-style: italic;
font-weight: 600;
}
/* las cabeceras h1 aparecerán con una fuente de la familia Verdana, pero si no
se encuentra esa familia, el navegador utilizará la que haya por defecto. */
<body>
<h1>Este es un texto de cabecera H1 con fuente verdana</h1>
<h2>Este otro texto, de cabecera H2, utiliza times new roman</h2>
<p>Este párrafo aparece con fuente arial </p>
</body>
Página 11/42
Lenguajes de marcas Tema 3. CSS
Ejemplo 2:
<style type="text/css">
body { background-image: url("imagenes/buzon_cerrado.jpg");
background-repeat: repeat-y;
background-position: left top;
}
p { font: 14pt Verdana;
}
</style>
...
<body>
<p>En este documento hemos incluido una imagen de fondo de un archivo
.jpg, hemos indicado que se repita verticalmente, y cuya primera
aparición estará alineada con la esquina superior izquierda.</p>
</body>
Propiedades de texto:
Ejemplo 3:
<style type="text/css">
h1 { text-transform: uppercase;
}
h2 { text-decoration: underline;
text-align: right;
}
Página 12/42
Lenguajes de marcas Tema 3. CSS
</style>
...
<body>
<h1>este es un texto cabecera h1 en mayúsculas</h1>
<h2> texto subrayado y alineado a la derecha</h2>
</body>
Las propiedades del borde especifican el ancho, color y estilo del borde de una caja. Estas
propiedades se aplican a todos los elementos. Vamos a ver las resumidas, pero igual que
anteriormente, se puede aplicar un estilo diferente a cada uno de los 4 bordes de la caja(ej:
border-right-style).
Página 13/42
Lenguajes de marcas Tema 3. CSS
Página 14/42
Lenguajes de marcas Tema 3. CSS
Ejemplo 4:
<style type="text/css">
h1 { border-width: thick;
border-color: red;
border-style: dotted;
}
h2 { border-style: solid;
margin: 10px;
}
/* margen de 10 píxeles en todas las direcciones. */
h3 { border-style: solid;
margin: 0.1cm auto auto 0.75in;
}
/* 0.1 cm para el margen superior y 0.75 pulgadas para el izquierdo,
mientras que para los márgenes derecho e inferior se ajustará
automáticamente. */
h4 { border-bottom: thick solid red;
}
/* La regla anterior define un borde inferior para las cabeceras de
tipo h4 (una línea gruesa entera de color rojo). */
</style>
A diferencia de las propiedades del margen, los valores para el relleno no pueden
ser negativos.
padding
La propiedad 'padding' es una propiedad resumida que se utiliza para definir los
cuatro rellenos a la vez. Pueden especificarse de uno a cuatro valores para el
ancho del relleno:
• Si hay sólo un valor: se aplica a todos los lados.
• Si hay dos valores: los rellenos superior e inferior son determinados por el
primer valor y los rellenos derecho e izquierdo son determinados por el
segundo.
• Si hay tres valores: el superior es definido por el primer valor, el izquierdo y
el derecho son definidos por el segundo, y el inferior es definido por el
tercero.
• Si hay cuatro valores: se aplican al relleno superior, derecho, inferior e
izquierdo, respectivamente.
Página 15/42
Lenguajes de marcas Tema 3. CSS
Ejemplo 5:
<html lang="es">
<head>
...
<title>Ejemplo estilos</title>
<style type="text/css">
.Parrafo1 { padding-left: 50%; padding-right: 20px;
padding-top: 1em; padding-bottom: 6pt;
background-color: yellow;
border: 1px solid;
}
.Parrafo2 { margin: 1.5cm;
border: solid red thin;
padding-left: 25%; padding-right: 25%;
padding-top: 0.5cm; padding-bottom: 1cm;
background-color: blue;
}
b { margin: 2cm;
border: solid red thin;
background-color: green;
}
</style>
</head>
<body>
<p> Este párrafo no tiene estilo </p>
<p class="Parrafo1">A este párrafo le hemos aplicado las cuatro
propiedades individuales para el relleno y para cada lado hemos usado
una unidad de medida distinta. Cuando se usa un porcentaje (como en
<code>padding-left</code>) éste se refiere al ancho del bloque
de contención, es decir, a la caja del elemento padre (en este
ejemplo, es <code><BODY></code>). Como el color de fondo del
relleno es igual a la propiedad "<code>background</code>"
del elemento, hemos usado esta propiedad para definir un color
amarillo de fondo.</p>
<p> Este párrafo no tiene estilo </p>
<p class="Parrafo2">Este párrafo tiene un estilo diferente</p>
<p> Este párrafo no tiene estilo pero <b>este texto en negrita</b>
sí<b>y este también</b> ¿lo ves?.</p>
</body>
</html>
Página 16/42
Lenguajes de marcas Tema 3. CSS
El resultado es el siguiente:
4) Unidades de medida:
Las unidades de medida absoluta son útiles solamente cuando las propiedades físicas
del medio de salida son conocidas. Las unidades absolutas son:
Página 17/42
Lenguajes de marcas Tema 3. CSS
8. Selectores:
Los selectores identifican a un elemento dentro de la página Web para luego poder
definir sus propiedades. Los distintos tipos de selectores abarcan desde el simple
nombre de las etiquetas usadas en HTML (BODY, P, TABLE, UL, etc.) hasta complejas
combinaciones que permiten un juego muy amplio de selecciones dentro dela página.
Existen muchos editores de páginas Web que facilitan la labor de crear y aplicar Hojas
de Estilo, pero los selectores que se pueden definir con estos programas son sólo los
más elementales. La complejidad que pueden alcanzar los selectores contextuales escapa
a las posibilidades de cualquier herramienta y es ahí donde los diseñadores deberán apelar
a sus propios recursos.
Son los que identifican a un tipo de elemento dentro de los que conforman el
código HTML. Es decir, usan la misma palabra que la etiqueta (tag) sin los signos < y
>. Por ejemplo, TABLE selecciona todos los elementos <TABLE> de la página. La
siguiente regla identifica a los elementos <H1> de la página y los alinea centralmente:
h1 {text-align: center;}
Los selectores de tipo tienen la ventaja de que, con un simple cambio en la Hoja
de Estilo, podemos modificar el aspecto de todos los elementos de esetipo en
todas las páginas de nuestro sitio. Esa es también su limitación: su utilidadse limita
al caso en que todos los elementos de un tipo tengan la misma apariencia encada una
de nuestras páginas. ¿Qué sucede si en ciertos casos queremos usar un párrafo con
características diferenciadas?.
Ahora, a los párrafos que corresponden a las preguntas del entrevistador en el supuesto
reportaje les agregamos el atributo CLASS dentro de la etiqueta de la página HTML:
Todos los párrafos de la clase "pregunta" aparecerán con texto en itálicas negritas para
diferenciarlos de los párrafos normales.
Página 18/42
Lenguajes de marcas Tema 3. CSS
Ejemplo 6:
Página 19/42
Lenguajes de marcas Tema 3. CSS
</body>
</html>
Página 20/42
Lenguajes de marcas Tema 3. CSS
Los selectores de id se parecen a los selectores de clases, pero sólo pueden aplicarse
a un elemento de la página. Esto se hace con el atributo id: no pueden existir dos
elementos dentro del mismo documento con el mismo id. Cada id tiene que ser único.
En cualquier otro caso, se debería usar el atributo class en su lugar.
Sintaxis: en vez de usar un punto se utiliza el carácter # y en lugar de class se pone id.
<html lang="es">
<head>
<style type="text/css">
#elemento1 { declaración de estilo }
...
</style>
</head>
<body>
<p id="elemento1"> Párrafo que aplica el estilo. </p>
...
</body>
</html>
Página 21/42
Lenguajes de marcas Tema 3. CSS
Por ejemplo:
<html lang="es">
<head>
<style type="text/css">
h1#titulo1 {text-align: center;}
#inclinada {font-style: italic;}
</style>
</head>
<body>
<h1 id="titulo1">Título centrado</h1>
<p id="inclinada">Párrafo en cursiva</p>
</body>
</html>
Los selectores de id no tienen la flexibilidad de los de clases, pero son una opción
para aquellos casos en que se necesite identificar de modo exclusivo un
determinado elemento de la página.
Veamos un ejemplo:
<h1>Capítulo 1</h1>
...
<h2>Capítulo 1.1</h2>
...
<h2>Capítulo 1.2</h2>
...
<h1>Capítulo 2</h1>
...
<h2>Capítulo 2.1</h2>
...
<h3>Capítulo 2.1.2</h3>
...
El código anterior podría hacer referencia a encabezados de cualquier documento
dividido en capítulos y párrafos. Sería normal asignar un id a cada capítulo de la
siguiente manera:
<html lang="es">
<head>
<style type="text/css">
h1#capitulo1 {color:red; font-size: 150%; text-align: center;}
h2#capitulo1-1 {color:blue; font-size: 120%; font-style: italic;}
h2#capitulo1-2 {color:green; font-size: 115%; font-style: italic;}
h1#capitulo2 {color:yellow; font-size: 125%; text-align: center;}
h2#capitulo2-1 {color:orange; font-size: 90%; font-style: italic;}
h3#capitulo2-1-2 {font-size: 80%; font-style: italic;}
</style>
</head>
<body>
<h1 id="capitulo1">Capítulo 1</h1>
...
<h2 id="capitulo1-1">Capítulo 1.1</h2>
...
<h2 id="capitulo1-2">Capítulo 1.2</h2>
...
<h1 id="capitulo2">Capítulo 2</h1>
...
<h2 id="capitulo2-1">Capítulo 2.1</h2>
...
<h3 id="capitulo2-1-2">Capítulo 2.1.2</h3>
Página 22/42
Lenguajes de marcas Tema 3. CSS
...
</body>
</html>
Veamos ahora un ejemplo genérico que combina los distintos selectores vistos
hasta ahora:
Ejemplo 7:
<html lang="es">
<head>
<title>Ejemplo estilos</title>
<style type="text/css">
<body>
<h1>Cabecera de tipo 1 sin estilo </h1>
<h1 id="indent1">Cabecera de tipo 1 con el estilo único para este elemento (verde
y centrado)</h1>
<h2 class="clase2">Cabecera de tipo 2 con el estilo de clase2 (rojo y a la dcha)</h2>
<p>Párrafo sin ningún estilo</p>
<p class="clase1">Párrafo con el estilo de la clase1 (azul y al centro)</p>
</body>
</html>
span puede usarse como un selector en una hoja de estilo, y también acepta los
atributos style, class e id.
Ejemplo:
<style type=”text/css”>
.clase1 { color:red; }
</style>
...
<p>En un lugar de <span class=”clase1”>La Mancha</span> de cuyo nombre
no quiero acordarme, no ha mucho que vivía...</p>
Página 23/42
Lenguajes de marcas Tema 3. CSS
Un div puede contener párrafos, encabezados, tablas, y aun otras divisiones (otros div).
Esto lo hace ideal para hacer diferentes clases de contenedores.
Todos los elementos de la página tendrán como color de primer plano el rojo.
Resulta de utilidad cuando queremos inicializar todos los elementos de nuestra página
con determinadas propiedades generales.
<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
descendiente, un elemento no tiene que ser "hijo directo" de otro. La única condición es
que un elemento debe estar dentro de otro elemento, sin importar lo profundo que se
encuentre.
Al resto de elementos <span> de la página que no están dentro de un elemento <p>,
no se les aplica la regla CSS anterior.
Página 24/42
Lenguajes de marcas Tema 3. CSS
los elementos del mismo tipo. El siguiente ejemplo amplía el anterior y muestra de color
azul todo el texto de los <span> contenidos dentro de un <h1>:
Los selectores descendientes 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.
En el siguiente ejemplo, el selector descendiente se compone de cuatro selectores:
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>.
No debe confundirse el selector descendiente con la combinación de selectores:
/* El estilo es SOLO para los elementos "em" que están dentro de "p a span" */
p a span em { text-decoration: underline; }
p a { color: red; }
<p><a href="#">Enlace</a></p>
<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
Página 25/42
Lenguajes de marcas Tema 3. CSS
<style type="text/css">
ul.vacio {
list-style-type:none;
}
ul.circulorelleno {
list-style-type:disc;
}
</style>
<body>
…
<ul class="vacio">
<li>Brasil</li>
<li>Uruguay</li>
<li>Argentina</li>
</ul>
<ul class="circulorelleno">
<li>Brasil</li>
<li>Uruguay</li>
<li>Argentina</li>
</ul>
…
</body>
• collapse: con este valor las celdas se colapsan completamente, tanto entre unas y
otras como con el borde de la tabla. La única separación que habrá será ladefinida
por la anchura de los bordes de celdas.
Página 26/42
Lenguajes de marcas Tema 3. CSS
• separate: este valor indica que las medidas de border-spacing y de rellenos serán
aplicadas a las celdas de la tabla. Es el valor por defecto.
Prueba este ejemplo con una tabla y después quita la línea de border-collapse y vuelve a
probarlo:
table {
border-collapse: collapse; /* probar separate para ver la diferencia */
border-spacing: 10px;
border: red 5px dotted;
background-color: #FDD;
padding: 15px;
}
td, th {
border: 10px solid navy;
padding: 10px;
background-color: #DDF;
}
11.1. Pseudoelementos
Por ejemplo:
<style type="text/css">
body { font: 12pt Arial; }
p { color: red; }
p:first-line { color: blue; }
</style>
...
<p>Este es el primer párrafo del texto sobre el que hemos definido
un estilo para la primera línea mediante un pseudo-elemento.</p>
<p>Este es el segundo párrafo <br/>del texto sobre el que hemos
definido un estilo para la primera línea mediante un pseudo-
elemento.</p>
Página 27/42
Lenguajes de marcas Tema 3. CSS
- text-shadow
- clear
Página 28/42
Lenguajes de marcas Tema 3. CSS
<style type="text/css">
body { font-family: Arial; }
p { font-size: 12pt;
line-height: 12pt;
color: red; }
p:first-letter { font-size: 250%;
font-weight: bold;
color: maroon;
background: salmon;
float: left; }
</style>
...
<p>Este párrafo de texto tiene definido un estilo para la primera
letra para que parezca una capitular caída. El tamaño es del
250%, con color marrón y fondo color salmón.</p>
11.2. Pseudoclases
Las pseudoclases son unas clases especiales, que se refieren a algunos estados
especiales del elemento HTML. Las pseudoclases más utilizadas son las que se aplican a
la marca <a> (ancla). La sintaxis varía con respecto al concepto de clase visto
anteriormente:
a:pseudoclase {
propiedad: valor;
}
Las aplicaciones del usuario normalmente muestran los vínculos no visitados de un modo
diferenciado de aquellos previamente visitados. CSS proporciona las pseudo- clases ':link'
y ':visited' para distinguirlos:
• La pseudo-clase :link se aplica a los vínculos que aún no han sido visitados.
• La pseudo-clase :visited se aplica una vez que el vínculo ha sido visitado por el
usuario.
Página 29/42
Lenguajes de marcas Tema 3. CSS
Página 30/42
Lenguajes de marcas Tema 3. CSS
Un mismo elemento puede verse afectado por varias pseudo-clases diferentes de forma
simultánea: cuando se pulsa por ejemplo un enlace que fue visitado previamente, al enlace
le afectan las pseudo-clases :visited, :hover y :active. Debido a estacaracterística y al
comportamiento en cascada de los estilos CSS, el orden en quedefinimos las pseudoclases
es fundamental para su correcto funcionamiento (debe respetarse el orden: link-visited-
hover-active). El siguiente ejemplo muestra el único orden correcto para establecer las
cuatro pseudo-clases principales en un enlace:
a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:underline;}
a:active {text-decoration:underline;}
Ejemplo 8:
Este ejemplo es muy sencillo para ver el paso en los distintos estados que puede tener
un enlace:
<html lang="es">
<head>
<title>Problema</title>
<link rel="StyleSheet" href="estilos.css" type="text/css">
</head>
<body>
<a href="http://www.google.com">Google</a>
<a href="http://www.yahoo.com">Yahoo</a>
<a href="http://www.msn.com">Msn</a>
</body>
</html>
a:link { background-color:#00ff00;
color:#ff0000; }
a:visited { background-color:#000000;
color:#ffffff; }
a:hover { background-color:#ff00ff;
color:#fffff; }
a:active{ background-color:#ff0000;
Página 31/42
Lenguajes de marcas Tema 3. CSS
color:#ffff00; }
Apenas ejecute la página los tres enlaces deben aparecer de color rojo con fondo verde:
a:link { background-color:#00ff00;
color:#ff0000;
}
Si presionamos la tecla tab podremos ver que el enlace que tiene foco aparece de color
amarillo con fondo rojo:
a:active { background-color:#ff0000;
color:#ffff00;
}
Al pasar la flecha del ratón sobre algún enlace veremos que aparece de color blanco con
fondo lila:
a:hover { background-color:#ff00ff;
color:#fffff;
}
Por último todos los enlaces que hayamos hecho click deberán aparecer de color blanco
con fondo negro:
a:visited { background-color:#000000;
color:#ffffff;
}
Ejemplo 9:
<html lang="es">
<head>
<title>Problema</title>
<link rel="StyleSheet" href="estilos.css" type="text/css">
</head>
<body>
<a href="http://www.google.com">Google</a>
<a href="http://www.yahoo.com">Yahoo</a>
<a href="http://www.msn.com">Msn</a>
</body>
</html>
Es decir, configuramos la propiedad text-decoration con el valor none, por defecto está
configurada con el valor underline.
Página 32/42
Lenguajes de marcas Tema 3. CSS
Página 33/42
Lenguajes de marcas Tema 3. CSS
Hemos visto hasta ahora algunas propiedades (bordes, márgenes, rellenos) que pueden
aplicarse a las cajas y también las propiedades que definen su color/imagen de fondo.
Ahora vamos a ver cómo se puede definir el tipo y dimensiones de esas cajas, su
comportamiento y relación con las otras cajas en la estructura del documento.
Con HTML si, por ejemplo, una cabecera H1 va antes que una imagen, nunca vamos a poder
intercambiar sus posiciones y colocar la imagen detrás del H1 que le sigue en el código. Sin
embargo, en CSS sí puede modificarse el flujo normal del HTML. Por ejemploel valor
absolute del atributo position rompe el flujo de la página (saca del flujo de la página el
elemento).
inline
Este valor provoca que un elemento genere una o más cajas de línea
<div style="display: inline;"> Este div ahora funciona en línea </div>
list-item
Provoca que un elemento genere una caja de bloque principal y una caja de línea
list-item
marker
Este valor declara que el contenido generado antes o después de una caja será un
marcador
none
Este valor provoca que un elemento no genere ninguna caja (es decir, el
elemento no tiene ningún efecto sobre la composición) y los elementos
descendientes tampoco generan cajas. Hay que destacar que este valor no crea
una caja invisible sino que hace que el elemento desaparezca por completo. Esa
es la diferencia con las propiedades sobre visibilidad que provocan que un
elemento pueda ser invisible pero siga ocupando un espacio en la página.
Página 34/42
Lenguajes de marcas Tema 3. CSS
run-in y compact
Estos valores crean cajas de bloque o de línea según el contexto y tienen un
comportamiento como el que conocemos para las listas de definiciones
table, inline-table, table-row-group, table-column, table-column-group,
table-header-group, table-footer-group, table-row, table-cell y table-
caption
Estos valores provocan que un elemento se comporte como un elemento tabla.
p { display: inline; }
Luego si en la página HTML imprimimos dos párrafos, los mismos deberían aparecer en
la misma línea.
p { display: block }
em { display: inline }
li { display: list-item }
img { display: none } /* no muestra imágenes */
Con CSS los autores pueden ubicar los elementos de la página usando uno de estos
valores:
static
relative
Este valor indica que la posición de la caja se ajusta en relación a su posición normal
dentro de la página (su posición dependerá del lugar donde esté en el código HTML).
Las capas con posicionamiento relative, admiten los valores top, left, bottom y right
para definir la distancia a la que se colocan con respecto al punto donde esté en ese
momento el flujo normal del HTML. Como afectan al mencionado flujo del HTML, los
elementos colocados después de las capas relative, tendrán en cuenta sus
dimensiones para continuar el flujo y saber dónde colocarse, sin embargo, no se
tendrá en cuenta los top, left, bottom o right configurados. Esto es: cuando una
caja X se posiciona relativamente, la caja
Página 35/42
Lenguajes de marcas Tema 3. CSS
absolute
Los valores top, left, bottom y right se expresan con unidades css y son una
distancia con respecto al primer elemento contenedor que tenga un valor de
position distinto de static. Si todos los contenedores donde esté la capa
posicionada con position absolute (todos sus padres hasta llegar a BODY) son
static, simplemente se posiciona con respecto al lado superior de la página, para
el caso de top, el inferior para bottom, del lado izquierdo para left o el derecho, en
el caso de utilizar right.
fixed
Hay que tener en cuenta que el atributo fixed en el navegador Internet Explorer sólo
funciona en la versión 7 y superiores.
Cada caja pertenece a un contexto de apilamiento, en el cual tiene un entero como nivel
de pila (es su posición en el eje z en relación a otras cajas en el mismo contexto de
apilamiento).
Página 36/42
Lenguajes de marcas Tema 3. CSS
Las cajas creadas con niveles de pila mayores son siempre procesadas encima de las
cajas con niveles de pila menores.
Las cajas con el mismo nivel de pila en un contexto de apilamiento son apiladas de abajo
hacia arriba de acuerdo al orden en la estructura del documento.
Se dice que un elemento establece un contexto de pila al cual pertenecen todos sus
descendientes. En cada uno de esos contextos se establece un nuevo nivel de pila para
los elementos descendientes. Y aquí lo importante: el contexto de pila (¡no la propiedad z-
index!) es heredado y los elementos pertenecientes a distintos contextos no pueden
"mezclarse".
Página 37/42
Lenguajes de marcas Tema 3. CSS
Ejemplo: si en una página encontramos dos elementos (A y B), uno con z-index=5 (A) y
el otro con z-index=3 (B), A será procesado encima de B. Supongamos ahora que A tiene
un descendiente (C) con z-index=0: el elemento C, por pertenecer al contexto depila del
elemento ubicado más arriba, también será procesado por encima de B (aunqueB tenga
z-index=3). Todos los elementos descendientes de A se ubicarán por encima de B (y
también por encima de todos los descendientes de B).
<entero>
Este número es el nivel de pila de la caja. La caja también establece un contexto
de pila local en el cual su nivel de pila es '0'. Se pueden usar valores negativos.
auto
El nivel de pila de la caja generada es el mismo que el de la caja de su padre. La
caja no establece un nuevo contexto de pila local.
inherit Indica que hereda el de su elemento padre.
left
El elemento genera una caja de bloque que flota a la izquierda. El contenido fluye
sobre el costado derecho de la caja, comenzando en la parte superior.
right
Igual que 'left', pero el contenido fluye sobre el costado izquierdo de la caja,
comenzando en la parte superior.
none
La caja no es flotante.
Ejemplo: los elementos de las listas aparecen siempre uno debajo de otro, en líneas
consecutivas. Pero podríamos cambiar ese comportamiento definiendo el siguiente estilo:
li { float: right; }
Página 38/42
Lenguajes de marcas Tema 3. CSS
Ahora al aplicar el estilo el primer elemento aparece a la derecha del todo y los otros
elementos van colocándose en la misma línea en el siguiente espacio libre que haya.
Así, el segundo elemento se colocaría en la misma línea, todo a la derecha que se puede,
conforme al espacio que se tenga en el contenedor donde estén colocados.
<html lang="es">
<head>
<style type="text/css">
li { float: right; }
</style>
</head>
<body>
<ul>
<li>Texto1</li>
<li>Texto2</li>
<li>Texto3</li>
</ul>
</body>
</html>
Además de las propiedades que controlan el posicionamiento de los elementos, CSS define
otras propiedades para controlar su visualización. Entre ellas se encuentra la propiedad
visibility:
Inicialmente todas las cajas que componen la página son visibles. Empleando el valor
hidden es posible convertir una caja en invisible para que no muestre sus contenidos. El
resto de elementos de la página se muestran como si la caja todavía fuera visible,
por lo que en el lugar donde originalmente se mostraba la caja invisible, ahora se
muestra un hueco vacío.
Mediante esta propiedad podremos especificar el ancho del contenido de los elementos
a nivel de bloque o de los elementos reemplazados (imágenes, controles de formularios
y objetos).
• auto: El valor para el ancho del elemento se ajustará al espacio horizontal disponible
y a los valores de bordes, márgenes y rellenos laterales que se hayan establecido. Es
el valor por defecto.
Se aplica a: todos los elementos, excepto los elementos de línea no reemplazados y las
filas de las tablas.
Página 39/42
Lenguajes de marcas Tema 3. CSS
No se hereda.
Este efecto puede controlarse mediante la propiedad overflow, que estudiaremos más
adelante. Pero si no aplicamos esta propiedad, el contenido desbordado se superpone
sobre el siguiente elemento.
Como ya hemos visto, es posible definir unas dimensiones para la caja de un elemento
mediante las propiedades height y width.
Pero el tamaño que tendrá la caja mediante estas propiedades puede no ser suficiente para
mostrar el contenido del elemento. En estos casos se dice que el contenido "desborda" la
caja. El control de este desbordamiento se realiza mediante la propiedad overflow (si no
aplicamos esta propiedad, dependiendo del navegador, se respetará en todo momento el
tamaño especificado -el contenido desbordado se superpone sobre el siguiente elemento-
o se modificará el tamaño de caja ampliándola para mostrar completamente el contenido,
sin desbordamientos).
• scroll: este valor también impide que el contenido aparezca fuera de las dimensiones
de la caja, pero facilita la barra de deslizamiento para permitir al usuario acceder
al contenido desbordado (la barra de scroll o deslizamiento horizontal y vertical
aparecerán esté o no el contenido desbordado).
Página 40/42
Lenguajes de marcas Tema 3. CSS
Página 41/42
Lenguajes de marcas Tema 3. CSS
Ejemplo 10:
<h1>Título de la Página</h1>
<p style="width: 50%; height: 80px; background: skyblue; color: green; overflow:
visible;">visible En un lugar de la Mancha, <br/> de cuyo nombre no quiero acordarme, no ha
mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco
y galgo corredor. Una olla de algo más vaca que carnero, salpicón las más noches, duelos y
quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos,
consumían las tres partes de su hacienda. El resto della concluían sayo de velarte, calzas
de velludo para las fiestas con sus pantuflos de lo mismo</p> <br />
<p style="width: 50%; height: 80px; background: pink; color: green; overflow:
hidden;">hidden En un lugar de la Mancha, <br/> de cuyo nombre no quiero acordarme, no ha
mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco
y galgo corredor. Una olla de algo más vaca que carnero, salpicón las más noches, duelos y
quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos,
consumían las tres partes de su hacienda. El resto della concluían sayo de velarte, calzas
de velludo para las fiestas con sus pantuflos de lo mismo</p> <br />
<p style="width: 50%; height: 80px; background: yellow; color: green; overflow:
scroll;">scroll En un lugar de la Mancha, <br/> de cuyo nombre no quiero acordarme, no ha
mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco
y galgo corredor. Una olla de algo más vaca que carnero, salpicón las más noches, duelos y
quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos,
consumían las tres partes de su hacienda. El resto della concluían sayo de velarte, calzas
de velludo para las fiestas con sus pantuflos de lo mismo</p> <br />
<p style="width: 50%; height: 80px; background: grey; color: green; overflow:
auto;">auto En un lugar de la Mancha, <br/> de cuyo nombre no quiero acordarme, no ha mucho
tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y
galgo corredor. Una olla de algo más vaca que carnero, salpicón las más noches, duelos y
quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos,
consumían las tres partes de su hacienda. El resto della concluían sayo de velarte, calzas
de velludo para las fiestas con sus pantuflos de lo mismo</p> <br />
<p>Tenía en su casa una ama que pasaba de los cuarenta, y una sobrina que no
llegaba a los veinte, y un mozo de campo y plaza, que así ensillaba el rocín como tomaba la
podadera. Frisaba la edad de nuestro hidalgo con los cincuenta años, era de complexión
recia, seco de carnes, enjuto de rostro; gran madrugador y amigo de la caza.</p> <br />
Página 42/42