Desarrollo de aplicaciones WEB

CSS avanzado

Departamento Informática y Sistemas

CSS avanzado

Introducción

CSS avanzado

¿Qué es CSS?

CSS avanzado

Aplicación de estilos

CSS avanzado

Aplicación de estilos

CSS3 permite la combinación de igual con otros para lograr una selección más específica:


p[ɲombre^="te"] { font-size: 1cm }

p[ɲombre$="te"] { font-size: 1cm }

p[ɲombre*="te"] { font-size: 1cm }


Ejemplos:

^= asigna a todo elemento p que empieza por "te"

$= asigna a todo elemento p que termina en "te"

*= asigna a todo elemento p que contiene "te"

CSS avanzado

Aplicación de estilos

Pseudoclases


CSS3 incorpora pseudoclases que hacen la selección más específica

<!DOCTYPE html>
 <html lang="es">
 <head> <meta charset="utf-8"> <title>Pseudoclases</title>
 <link rel="stylesheet" href="estilos.css"> </head>
 <body> <div id="ejemplo">
 <p class="texto1">Mi texto1</p> 
 <p class="texto2">Mi texto2</p> 
 <p class="texto3">Mi texto3</p> 
 <p class="texto4">Mi texto4</p>
 </div> </body>
 </html>

CSS avanzado

Pseudoclases


El ejemplo anterior incluye cuatro elementos <p> que son hermanos entre sí e hijos del mismo elemento

Mediante pseudoclases de puede aprovechar esta organización y referenciar un elemento específico sin importar cuánto conocemos sobre sus atributos y valor

Una pseudoclase se agrega añadiendo : (dos puntos) detrás de la referencia y antes de su nombre


Ejemplo:

p:nth-child(2){ background: #999999; }

CSS avanzado

Pseudoclases


Esta regla puede incluir otras referencias. Ej.:

.miclase:nth-child(2){ background: #999999; }
La pseudoclase nth-child(2) permite encontrar un hijo específico, es como buscar el hijo en una posición dada, en el ejemplo previo

Se puede crear estilos para todos los elementos

p:nth-child(1){ background: #999999; }
p:nth-child(2){ background: #CCCCCC; }
p:nth-child(3){ background: #999999; }
p:nth-child(4){ background: #CCCCCC; }

CSS avanzado

Pseudoclases


Es posible incorporar nuevos elementos <p> y nuevas reglas, mediante odd y even

Así se puede dar distinto formato a los hijos pares e impares. Ej.:

p:nth-child(odd){ background: #999999; }
p:nth-child(even){ background: #CCCCCC; }

CSS avanzado

Pseudoclases


Ejemplo de :nth-child para tablas

span:nth-child(2n+1)
{
    background-color: red;
}
<div>
    <span>Este span es rojo</span>
    <span>Este span no lo es.</span>
    <span>Pero este si lo es</span>
    <span>Este no lo es...</span>
  </div>

Se verá alternativamente cada frase con fondo rojo y blanco


CSS avanzado

Pseudoclases


:first-child selecciona el primer elemento hijo de un elemento. Ej.:

p em:first-child {
  color: red;
}

El selector p em:first-child selecciona el primer elemento <em> que sea hijo de un elemento y que se encuentre dentro de un elemento <p>

CSS avanzado

Pseudoclases


Ejemplo de :first-child

span:first-child {
    background-color: navy;
}
<div>
  <span>Este span es azul marino</span>
  <span>Este span no lo es</span>
</div>


Se mostraría la primera frase con fondo azul y la segunda con el color por defecto

CSS avanzado

Pseudoclases


:last-child selecciona el último elemento hijo. Ej.:

li:last-child {
  background-color: lime;
}
<ul>
  <li>Este elemento no es de color lima</li>
  <li>Este otro tampoco</li>
  <li>Este lo es</li>
</ul>


Se mostraría el tercer párrafo con fondo color lima

CSS avanzado

Pseudoclases


:only-child selecciona el único elemento hijo de su padre. Ej.:

span:only-child {
  color: red;
}
<div>
  <span>Este span es el único hijo de su padre</span>
</div>
<div>
  <span>Este span es uno de los dos hijos de su padre</span>
  <span>Este span es uno de los dos hijos de su padre</span>
</div>


Se mostraría el primer párrafo en rojo. Los dos siguientes en negro, formando otro párrafo

CSS avanzado

Pseudoclases


:not(X) (negación), es una notación funcional que toma un selector simple X como argumento

Coincide con un elemento que no está representado por el argumento

X no debe contener otro selector de negación

Selecciona el único elemento hijo de su padre

Ej.:

p:not(.clasi) { color: red; }
body :not(p) { color: green; }
<p>Algún texto.</p>
<p class="clasi">Algún otro texto.</p>
<span>Más texto<span>


Se mostraría el primer párrafo en rojo, el siguiente en negro y el último en verde

CSS avanzado

Pseudoclases


Pseudoclases :link y :visited: sirven para aplicar diferentes estilos a los enlaces de una misma página


:link se aplica a todos los enlaces que todavía no han sido visitados

:visited se aplica a todos los enlaces que han sido visitados al menos una vez


Ejemplo:

a:link    { color: red; }
a:visited { color: navy; }

CSS avanzado

Pseudoclases


Pseudoclases :hover, :active y :focus permiten variar los estilos de un elemento en respuesta a las acciones del usuario

CSS avanzado

Pseudoclases


Un mismo elemento puede verse afectado por varias pseudoclases de forma simultánea. Al pulsar un enlace que fue visitado previamente, al enlace le afectan las pseudo-clases :visited, :hover y :active

Es importante cuidar el orden en el que se establecen las diferentes pseudo-clases

El único orden correcto para establecer las cuatro pseudoclases principales en un enlace es:


a:link { ... } a:visited { ... } a:hover { ... } a:active { ... }

CSS avanzado

Pseudoclases


Pseudoclase :lang se emplea para seleccionar elementos en función de su lengua

p { color: blue; }
p:lang(es) { color: red; }
Los párrafos del ejemplo se ven de color azul, salvo los párrafos cuyo contenido esté escrito en español, que se ven de color rojo

CSS básico

Selectores, propiedades, valores y unidades


Selector de hijos

CSS avanzado

Selectores


<html>
<header>
<style type="text/css">
#tipo_selector > li {font-color: navy; font-size: 16pt ; }
</style>
</header>
<body>
<ul id=”tipo_selector”>
<li>Selector hijo
<ul>Selector descendente</ul>
<ul>Selector adyacente</ul>
</li>
</body><footer></footer>
</html>

CSS avanzado

Selectores, propiedades, valores y unidades


Selector adyacente


Selecciona elementos que se encuentran justo a continuación de otros

Emplea el signo + para separar los dos elementos


Los elementos que forman el selector adyacente deben cumplir las siguientes condiciones:

CSS avanzado

Selectores, propiedades, valores y unidades


En el ejemplo el título y el primer párrafo se muestran en rojo


<header>
<style>h1 + p {font-color: red ; }</style>
</header>
<body>
<h1>Texto padre del selector, con H1</h1>
<p>Formato de acuerdo al selector adyacente</p>
<p>Párrafo sin color rojo</p>
</body>
<footer></footer>
</html>

CSS avanzado

Selectores, propiedades, valores y unidades


Selector de hijos


Similar al selector descendente, diferente en su funcionamiento

Seleccionar un elemento que es hijo de otro, se indica mediante >

p > span { color: blue; }
<p>
  <span>Texto1</span>
</p>
<p>
  <a href="#">
    <span>Texto2</span>
  </a>
</p>


Texto1 aparecerá en azul

CSS avanzado

Selectores, propiedades, valores y unidades


Selector de hermanos generales


Separa dos selectores y selecciona el segundo elemento sólo si está precedido por el primero y ambos comparten un padre común. Se indica mediante ~

p ~ span {
  color: red;
}
<span>Este span no es rojo.</span>
<p>Aquí hay un párrafo.</p>
<code>Aquí hay algo de código.</code>
<span>Aquí hay un span. Es rojo porque va precedido de un párrafo y ambos comparten el mismo padre.</span>


Se mostrarán tres párrafos, el último presenta la segunda frase en rojo

CSS avanzado

Unidades de medida


Las medidas en CSS se emplean para definir la altura, anchura y márgenes de los elementos y para establecer el tamaño de letra del texto

Las medidas se indican como un valor numérico seguido de la unidad

Dos tipos: absolutas y relativas

Si no se indica ninguna unidad, la medida se ignora


Unidades absolutas:


in, pulgadas (inches). in = 2.54 cm

cm, centímetros y mm, milímetros (SI)

pt, puntos. pt = 1 pulgada/72, 0.35 mm

pc, picas. pc = 12 puntos, es decir, 4.23 mm


CSS avanzado

Unidades de medida


Ejemplos:


/* El cuerpo de la página debe mostrar un margen de media pulgada */

body { margin: 0.5in; }


/* Los elementos <h1> deben mostrar un interlineado de 2 cm */

h1 { line-height: 2cm; }


/* Las palabras de todos los párrafos deben estar separadas 4 mm */

p { word-spacing: 4mm; }


/* Los enlaces se deben mostrar con un tamaño de letra de 12 puntos */

a { font-size: 12pt }


/* Los elementos <span> deben tener un tamaño de letra de 1 pica */

span { font-size: 1pc }

CSS avanzado

Unidades de medida


Unidades relativas:


em, (no confundir con la etiqueta <em>) relativa respecto del tamaño de letra del elemento

ex, relativa respecto de la altura de la letra x del tipo y tamaño de letra del elemento

px, (píxel) relativa respecto de la resolución de la pantalla del dispositivo en el que se visualiza la página


em y ex no han sido creadas por CSS, llevan décadas utilizándose en la tipografía

La unidad 1em equivale a la anchura de la letra M del tipo y tamaño de letra del elemento

La unidad em hace referencia al tamaño en puntos de la letra que se está utilizando

Si se utiliza una tipografía de 12 puntos, 1em equivale a 12 puntos

El valor de 1ex se puede aproximar por 0.5 em

CSS avanzado

Unidades de medida


La proliferación de sitios con diseño adaptable (responsive) ha dado lugar al uso de unidades relativas

Consiguen una mejor visualización en dispositivos móviles

Dan problemas por el efecto “cascada”. Ej.:

<style>
body  { font-size: 100%; }
p, li { font-size: 0.75em; }
</style>
<p> soy un texto de 12px </p>
<ul>
<li> yo también soy un texto de 12px
<ul><li> Yo tengo 9 px </li></ul>
</li>
</ul>

CSS avanzado

Unidades de medida


CSS3 propone nuevas unidades


rem a diferencia de em, está referido al elemento raíz de la página en lugar del contenedor

vw % de la anchura de la ventana del dispositivo

vh % de la altura de la ventana del dispositivo

vim % de la dimensión, altura o anchura, más pequeña del dispositivo


Ejemplo: suponiendo un tamaño de ventana del navegador de 1000×800, establecer el texto en 1.8vw equivale a 18 px , 2vh serían 16px y 1.5vmin = 12px

CSS avanzado

Otras instrucciones


Float


Simple pero útil para que el diseño de la página se adapte al dispositivo de visualización

Modifica el flujo normal de la página y lo ubica a izquierda o derecha del resto del contenido de su elemento padre

Tres posibilidades: none, left, right


img {
  float: right;
  margin: 0 0 1em 1em;
}

CSS avanzado

Otras instrucciones


<!DOCTYPE html>

<html lang="es">
<head>
<title>float</title>

<style type="text/css">
p.derecha {
	border: 1px dotted black;
	float: right;
	width: 10em;
	padding: 0.25em;
	margin: 1em 1em 1em;
}
p.izquierda {
	border: 4px dotted black;
	float: left;
	width: 10em;
	padding: 0.25em;
	margin: 0 1em 1em;
}
div {
	width: 50%;
}

</style>
</head>

CSS avanzado

<body>

<h1>CSS float</h1>

<h2>Ejemplo</h2>
<div>
<p class="derecha">Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.</p>
<p class="izquierda">Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.</p>
<p> Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.
    Esto es texto. Esto es texto. Esto es texto.</p>
</div>

</body>
</html>

CSS avanzado

Otras instrucciones


Clear


Complementa a float

Especifica que un elemento no admite un flotante a su izquierda, derecha o a ambos lados

Se puede usar en un elemento flotante para impedir que otros flotantes puedan quedar sobre algunos de sus lados


CSS avanzado

<!DOCTYPE html>

<html lang="es">
<head>
<title>clear</title>

<style type="text/css">
.wrapper {
  border: 1px solid black;
  padding: 10px;
}

.izda {
  border: 1px solid black;
  clear: left;
}

.negro {
  float: left;
  margin: 0;
  background-color: black;
  color: #fff;
  width: 20%;
}

CSS avanzado

.rojo {
  float: left;
  margin: 0;
  background-color: red;
  width: 20%;
}

p {
  width: 50%;
}

</style>
</head>

<body>
<h1>CSS float</h1>
<h2>Ejemplo</h2>
<div class="wrapper">
    <p class="negro">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus sit amet diam. Duis mattis varius dui. Suspendisse eget dolor.</p>
    <p class="rojo">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
    <p class="izda">Este es con con clear</p>
</div>

</body>
</html>

CSS avanzado

Otras instrucciones


z-index


Indica el orden en el eje z de un elemento y sus descendientes

Cuando varios elementos se superponen, determina cuales tapan a otros


Para una caja posicionada, la propiedad z-index indica:


El nivel de apilamiento en el actual contexto de apilado

Si la caja establece un contexto de apilamiento

CSS avanzado

Ejemplo


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h2 id="Ejemplos">Ejemplo</h2>
<div style="border: dashed; position: relative; height: 8em; margin-bottom: 1em; margin-top: 2em;">position:relative; z-index:1; <span style="background: gold; left: 60px; position: absolute; top: 3em;">position:absolute; z-index:2; left:60px; top:3em;</span> <span style="background: lightgreen; height: 7em; left: 20em; opacity: 0.9; position: absolute; top: -25px;">position:absolute; z-index:3;<br>
left:20em; top:-25px; opacity:0.9</span></div>
</body>
</html>

CSS avanzado

Otras instrucciones


/