CSS: Cursor

Con CSS es posible modificar el tipo de cursor (puntero del ratón) que debe mostrarse cuando se encuentre justo encima de un elemento HTML. Es habitual que con el cursor se informe al usuario de la operación que podrá realizar. Para ello se usa la propiedad cursor y puede tener varios tipos de valores.

Por ejemplo, con el valor wait (palabra clave) el puntero toma forma de temporizador, indicando al usuario que debe esperar.

Hay que tener en cuenta que los usuarios están acostumbrados al cursor habitual, por lo que cambiarlo a la ligera puede conducir a una mala experiencia de usuario. Se recomienda modificarlo de forma justificada por uno de los cursores predefinidos del sistema para mejorar la usabilidad.

Valores de uso general

Valores de uso general para la propiedad cursor:

Valor Descripción
auto El navegador web decide el cursor.
default El cursor tiene forma de flecha.
none No se muestra ningún cursor.

El valor por defecto es auto. Con este valor, el navegador web decide el puntero que debe mostrar en cada ocasión. Por ejemplo, si se coloca sobre un enlace se mostrará una mano con un dedo, indicando que se puede pulsar, y si hay texto se mostrará el cursor de selección, con forma de letra “I” mayúscula.

Con el valor default se fuerza el puntero que tiene forma de flecha cuando esté ubicado sobre un elemento HTML. En cambio, con el valor none se esconde el puntero del ratón, queda invisible sobre el elemento en cuestión.

Pon el cursor encima de los tres textos siguientes. En el primero es automático, por lo que se adaptará según convenga. En el segundo se fuerza el puntero en forma de flecha, y en el tercero es invisible (desaparece).

Cursor automático. El cursor cambia encima del enlace.

Puntero en forma de flecha. No sale el de selección.

Cursor invisible en todo el párrafo (hasta el final de línea).

Cursores para enlaces y estado

Los siguientes cursores son los más utilizados, ya que permiten indicar cuando una zona se puede clicar, cuando hay que esperar o si hay ayuda disponible. Son usados a nivel de sistema, por tanto los usuarios los tienen familiarizados a través de las aplicaciones instaladas y mediante las páginas web.

Valor Descripción
context-menu Indica que hay un menú contextual.
help Indica que la ayuda está disponible.
pointer Indica que hay un enlace, se puede clicar.
progress Indica que el programa está ocupado, pero el usuario todavía puede interactuar con la interfaz gráfica.
wait Indica que el programa está ocupado.

Es útil usar el valor context-menu para indicar que debajo del cursor hay un menú contextual, que aparece al hacer clic con el botón derecho del ratón.

Con el valor help se indica que el elemento de debajo ofrece información de ayuda para el usuario, que se mostrará al pulsar dicho elemento.

El valor pointer es usado por defecto en los enlaces: el puntero con forma de flecha cambia a una mano con un dedo que señala el enlace.

Usando el valor progress se indica al usuario que el programa está ocupando realizando una operación, sin embargo sigue mostrando un puntero, por lo que todavía se puede interactuar con otros elementos de la interfaz.

En cambio, el valor wait muestra un cronómetro que indica al usuario que debe esperar hasta que el programa termine la operación.

Pasa el cursor por encima de los siguientes párrafos.

Cursor de tipo context-menu.

Cursor de tipo help.

Cursor de tipo pointer.

Cursor de tipo progress.

Cursor de tipo wait.

Cursores de selección

Los cursores de selección también son muy usados, sobre todo cuando se navega a través de Internet. Es habitual seleccionar texto para copiarlo y pegarlo, por ejemplo para citarlo después en otro documento o para guardar anotaciones.

Valor Descripción
cell Indica que se puede seleccionar las celdas.
crosshair Indica que se puede seleccionar una región.
text Indica que se puede seleccionar el texto normal.
vertical-text Indica que se puede seleccionar el texto vertical.

El cursor con el valor cell es muy usado en hojas de cálculo. Tiene forma de cruceta e indica la posibilidad de seleccionar celdas.

El valor crosshair muestra una cruceta más fina, al estilo de los programas de dibujo técnico, para seleccionar una región con precisión.

Con el valor text se fuerza el cursor que tiene forma de letra “I” mayúscula, y es muy habitual. El que no es tan habitual es vertical-text, ya que se debe usar para seleccionar texto que esté dispuesto verticalmente.

Pasa el cursor por encima de los siguientes párrafos.

Cursor de tipo cell.

Cursor de tipo crosshair.

Cursor de tipo text.

Cursor de tipo vertical-text.

Cursores de interacción

Algunos cursores son de interacción, y se utilizan para indicar al usuario la acción que están realizando. En algunos casos también es posible indicar que una acción no puede realizarse cuando el cursor está sobre cierta región.

Valor Descripción
alias Indica que un enlace directo es creado.
copy Indica que algo puede ser copiado.
move Indica que algo puede ser movido.
no-drop Indica que no se puede soltar algo ahí.
not-allowed Indica que algo no se puede hacer.

El cursor con valor alias permite indicar que se está creando un enlace directo. Aparece una mano junto con el símbolo de una cadena.

Los valores copy y move sirven para indicar que algo puede ser copiado o movido. El de copiar tiene aspecto de mano con el símbolo de sumar, mientras que el de mover se representa con flechas hacia todos los lados.

En cambio, el valor no-drop indica que la acción que se intenta realizar no es posible en dicha región, por lo que aparece una mano con un símbolo de prohibido. Con not-allowed aparece el símbolo de prohibición en grande.

Pasa el cursor por encima de los siguientes párrafos.

Cursor de tipo alias.

Cursor de tipo copy.

Cursor de tipo move.

Cursor de tipo no-drop.

Cursor de tipo not-allowed.

Cursores de cambio de tamaño

Los cursores para indicar el cambio de tamaño también son muy usados. Permiten indicar que una ventana del sistema o una caja interactiva puede ser dimensionada hacia una dirección determinada. El cursor cambiará de aspecto dependiendo de la esquina o del vértice a partir del cual se pretende cambiar el tamaño.

Valor Descripción
col-resize Dimensiona columnas horizontalmente.
row-resize Dimensiona filas verticalmente.
ew-resize Dimensiona horizontalmente.
ns-resize Dimensiona verticalmente.
n-resize Dimensiona desde la arista superior.
s-resize Dimensiona desde la arista inferior.
e-resize Dimensiona desde la arista derecha.
w-resize Dimensiona desde la arista izquierda.
ne-resize Dimensiona desde la esquina superior derecha.
nw-resize Dimensiona desde la esquina superior izquierda.
se-resize Dimensiona desde la esquina inferior derecha.
sw-resize Dimensiona desde la esquina inferior izquierda.
nesw-resize Dimensiona en diagonal (NE-SO).
nwse-resize Dimensiona en diagonal (NO-SE).

En estos cursores se usa un prefijo equivalente a las iniciales de los puntos cardinales, facilitando el trabajo al diseñador. Por ejemplo, se entiende que n-resize dimensiona desde la arista superior, ya que «N» es la inicial de north (norte); de la misma forma se entiende que se-resize dimensiona desde la esquina inferior derecha, ya que «SE» significa south-est (suroeste).

Cursores personalizados

Con CSS también es posible modificar el cursor usando una imagen personalizada. En este caso el valor de la propiedad cursor será la función url() con un parámetro que será una dirección URL válida de la imagen deseada. También se puede indicar la posición y un puntero alternativo por si no carga la imagen indicada.

Los valores de posición se introducen justo después de la URL. Se trata de dos valores numéricos en píxeles, pero no se debe indicar la unidad. Primero se introduce el desplazamiento en el eje horizontal y luego en el eje vertical (X Y), separados por un espacio. Esa es la sintaxis que se debe usar:

selector {
  cursor: url() X Y, puntero;
}

Veamos un ejemplo indicando un cursor de color azul.

Código CSS:

.cursor-azul {
  cursor: url("/images/css/cursor.png") 7 5, pointer;
}

Resultado:

Pasa el cursor por encima del siguiente párrafo.

Cursor personalizado: puntero de color azul.

← Artículo anterior
Artículo siguiente →