CSS 2: Interface de usuario

La propiedad cursor

La propiedad cursor permite especificar el icono que se muestra al situar el cursor sobre un elemento. Los posibles valores son auto, crosshair, default, help, move, pointer, progress, n-resize, ne-resize, e-resize, se-resize, s-resize, sw-resize, w-resize, nw-resize, text y wait.

Los valores predefinidos son los siguientes:

p {
  cursor: auto;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: crosshair;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: default;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: help;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: move;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: pointer;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: progress;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: n-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: ne-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: e-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: se-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: s-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: sw-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: w-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: nw-resize;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: text;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p {
  cursor: wait;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

También pueden utilizarse cursores personalizados, indicando la dirección de la imagen que se quiera emplear. Se puede escribir una lista de cursores separados por comas para que el navegador utilice el primero disponible

Correcto en Chrome Correcto en Firefox Incorrecto en Edge
p {
  cursor: url("../img/exclamacion.png"), wait;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
Hueco
p {
  cursor: url("../img/exclamacion.cur"), wait;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
Hueco
p {
  cursor: url("../img/exclamacion.ico"), wait;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

Nota: Edge solamente admite cursores en formato ICO o CUR (ICO es el formato de los iconos de Windows y CUR es el formato de los cursores no animados de Windows, prácticamente idéntico al formato ICO), como se comenta en la página de diferencias entre navegadores.

Contornos

Un contorno es como un segundo borde, pero que no se tiene en cuenta al calcular el tamaño del elemento y que no tiene por qué ser rectangular.

La propiedad compuesta outline

La propiedad compuesta outline permite establecer un contorno a un elemento, indicando como en caso del borde, el color, el grosor y el estilo del contorno.

p {
  outline: red 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

Un elemento puede tener simultáneamente borde y contorno, como muestra el ejemplo siguiente:

p {
  outline: red 3px solid;
  border: black 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

El contorno se diferencia del borde en que el contorno no se tiene en cuenta al calcular el tamaño del elemento, mientras que el borde sí, como muestran los ejemplos siguientes:

p.con-border {
  border: black 10px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p.con-outline {
  outline: black 10px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

Esta diferencia es más evidente si el contorno se genera cuando el ratón pasa por encima del elemento. En el caso del borde, al añadirse el borde, los elementos siguientes se desplazan, pero en el caso del contorno, al generarse el contorno, los elementos siguientes no se desplazan.

p.con-border:hover {
  border: black 10px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
p.con-outline:hover {
  outline: black 10px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

El contorno se diferencia también del borde en que el borde es siempre rectangular, mientras que el contorno no tiene por qué serlo.

span.con-border {
  border: black 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
span.con-outline {
  outline: black 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

Nota: Firefox no muestra el contorno de un elemento en-línea de la misma manera que Chrome o Edge, como se comenta en la página de diferencias entre navegadores.


La propiedad outline admite como color el valor invert. Con este valor, el contorno toma el color opuesto al color de fondo del elemento.

Chrome y Firefox no muestran el valor invert, pero Edge sí que lo hace. Firefox dejó de hacerlo en la versión la versión FF3.0. En la página de bugs de Firefox se explica qué motivos dan los desarrolladores de Firefox para no hacerlo.

Incorrecto en Chrome Incorrecto en Firefox Correcto en Edge
body {
  background-color: white;
}

p {
  outline: invert 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
Incorrecto en Chrome Incorrecto en Firefox Correcto en Edge
body {
  background-color: black;
  color: white;
}

p {
  outline: invert 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo
Incorrecto en Chrome Incorrecto en Firefox Correcto en Edge
body {
  background-color: red;
  color: white;
}

p {
  outline: invert 3px solid;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

Las propiedades outline-color, outline-width y outline-style

Las propiedades outline-color, outline-width y outline-style permiten establecer, respectivamente, el color, el grosor y el estilo de los cuatro contornos de un elemento y se utilizan de la misma manera que las propiedades border-color, border-width y border-style.

p {
  outline-color: black;
  outline-style: solid;
  outline-width: 3px;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

La propiedad outline-color admite el valor invert. Con este valor, el contorno toma el color opuesto al color de fondo del elemento.

body {
  background-color: black;
  color: white;
}

p {
  outline-color: invert;
  outline-style: solid;
  outline-width: 3px;
}
ERROR (no puede mostrarse el objeto)
Enlace externo

Curiosamente, en este caso Firefox y Chrome sí que muestran el contorno, lo que no hacen con la propiedad compuesta outline.