Observad en el ejemplo de arriba que esto es solamente aplicable a los enlaces de tamaño conocido. Es decir, enlaces que tienen una anchura y una altura con sus respectivos valores en píxeles, en ems, porcentage etc.
La idea básica es incluir en el contenido del enlace un elemento adicional (<em> y <span> son aceptables) y, entonces, damos a cada enlace una posición relativa y el al elemento adicional una posición absoluta.
Cuando se clica en el enlace su tamaño se reduce a CERO. Esto hace que el borde punteado no se vea porque sólo se coloca alrededor del enlace, independientemente del contenido.
Como el elemento adicional tiene una posición absoluta, todavía será visible y puedes darle el estilo que quieras en el estado activo.
XHTML Esto es necesario para permitir que el enlace sea reducido al tamaño cero mientras que todavía muestra el texto clickable del enlace.
CSS Aquí va todo el código CSS necesario para que el método funcione con sus explicaciones:
Código :
/* Paso 1
La lista horizontal BÁSICA */
#navlist { /* Quitamos los círculos de la lista */ list-style-type:none; /* Quitamos el padding */ padding:0; /* Cambiamos la anchura total de los enlaces de la lista */ width:36em; /* Cambiamos el ancho */ height:5em; /* Centramos la lista */ margin:0 auto; } #navlist li { /* Cambiamos la anchura y la altura de los elementos de la lista */ display:block; width:7em; height:2em; /* Usamos float: para que queden en una línea horizontal */ float:left; /* Agregamos un espacio entre cada elemento de la lista */ margin-right:0.2em; } #navlist li em { /* Quitamos el estilo acentuado del texto */ font-style:normal; /* Que sea de color negro */ color:#000; }
/* Paso 2
Añadimos la seudo-clase :hover */
#navlist a { /* Cambiamos la anchura y la altura del enlace */ display:block; width:7em; height:2em; /* Damos a los enlaces una posición relativa de modo que el <em> pueda tener una posición absoluta dentro de cada enlace */ position:relative; /* Quitamos el subrayado del texto */ text-decoration:none; }
/* Damos estilo a <em> */ #navlist a em { font-style:normal; color:#000; /* Damos al texto del <em> el mismo tamaño total que el del enlace */ display:block; width:7em; height:1.5em; border-bottom:0.5em solid #000; /* Damos al texto del <em> una posición absoluta de modo que sea sacado del flujo normal y del control del enlace */ position:absolute; top:0; left:0; /* Hacemos que el cursor del enlace aparezca cuando el ratón está sobre el texto del <em> */ cursor:pointer; }
#navlist a:hover { /* Agregamos un :hover para los enlaces. Esto es necesario para que IE aplique el :hover al <em> */ color:#c00; }
#navlist a:hover em { /* Cambiamos el color del borde inferior de <em> en :hover */ border-bottom:0.5em solid #c00; }
/* Paso 3
Quitamos el active/focus dotted border (el borde punteado de cuando está activo) */
#navlist a:active, #navlist a:focus { /* Reducimos el tamaño del enlace a cero cuando el enlace está activo. ¡Esto quita literalmente el borde punteado que SOLAMENTE se aplica al enlace a sí mismo y no a ninguno de los elementos que contiene CUANDO ESOS ELEMENTOS TIENEN UNA POSICIÓN ABSOLUTA! */ width:0; height:0; outline:0; /* Para los navegadores que lo entienden */ }
/* Paso 4
Damos el estado activo */
#navlist a:active em, #navlist a:focus em { /* Cambiamos el borde inferior y el texto del <em> a azul en estado activo que da así un alternativa conveniente al borde punteado */ border-bottom:0.5em solid #00c; color:#00c;outline:0; /* Para los navegadores que lo entienden */ }
Este método para eliminar el borde punteado que aparece en el estado activo cuando usamos CSS está traducido del que Stu Nicholls nos ofrece en su web CCSplay.
Pero sólo hace la magia en FireFox en IE no hay ninguna magia. Por:ryuz
buen dato! Por:mx_blog
Como un experimento de css (digo de cssplay) me parece bien, pero en la practica y vida real [ins]virtual[/ins], no me parece nada practico ni usable, hacer todo un hack para quitar el outline de un enlace no le veo el sentido, en especial porque estos fueron creados para demostrar el foco del elemento en este caso nuestros enlaces.
outline:0; oculta el outline de forma muy sencilla, aunque solo Firefox (y creo que Safari también) lo soportan.
Concluyendo, es un buen experimento; pero desde mi punto de vista no es usable. Por:NEO_JP
Pues estoy absolutamente de acuerdo conmigo mismo. Por:Sisco
Esta bueno Por:Arturo_blog
Yo tambien estoy totalmente de acuerdo conmigo!!! gracias! Por:Forón_blog
...de acuerdo Por:asael2_blog
por que no se usa el text-decoration:none??? Por:estoy confundido..._blog
en ie no sirve el outline:none pues pq ie(6) no da esa propiedad a los links activos ;D Por:Rodrigo_blog
a { outline:none }
lo hace todo, le quita los bordes en navegadores gecko y en safari, no se si en opera, lo que no entiendo es porque das una explicacion tan grande cuando esas 3 lineas lo hacen todo. Por:Rodrigo_blog
Para el borde de los links con imágenes la mejor solución que he encontrado es agregar la propiedad border=0 en la imágen (En html, NO en CSS), aunque no sea lo recomendable... Por:Favio_blog
En pocas palabras el IE es un monumento a la porqueria Por:Sinai_blog
para sacar esos bordes molestos en ie, una manera que no es muy usable.. pero de ultima sirve sin tener que hacer tantas lineas de codigo es esta:
Me olvidé. El problema de eso, es que si alguien quiere seleccionar el link navegando los links de la página con la tecla TAB, ese link con va a ser seleccionable. Totalmente anti usabilidad.
De todas maneras lo puse, porque a veces se necesita para algun desarrollo especifico donde importa mas el look que la usabilidad, para un número limitado de personas.
No lo usaría en la web. Por:rulo_blog
No quiero quitar mérito a este artículo, es todo un reto y lo ha conseguido solventar estupendamente. Esto funciona en IE6 y firefox 1.5 (al menos):
a:focus { outline:none; }
un saludo! Por:div2_blog
div2_blog :
No quiero quitar mérito a este artículo, es todo un reto y lo ha conseguido solventar estupendamente. Esto funciona en IE6 y firefox 1.5 (al menos):
a:focus { outline:none; }
un saludo!
creo que deberían poner esto último allá arriba ...aunque sea como opción alternativa ...
muy buen aporte...de todas formas..sigo pensando que lo mejor es sugerirle a todos nuestros clientes y amgigo no usar mas iex firefox es gratis y por lo menos se tomaron un tiempo para probarlo opera tambien es gratuito...y por lo menos tubieron la responsabilida de que cumpla algunos estandares...yo propongo fomentar el uso de otros naveadores que no sean iex Por:zacarias_blog
excelente recurso, me sirvio de mucho, thank s Por:George_blog