Un método simple para quitar el borde punteado en estado activo de los enlaces de tu menú o cualquier tipo de link, usando CSS.
Ejemplo
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.
Código :
<ul id="navlist"> <li><a href="#nogo"><em>Opción Uno</em></a></li> <li><a href="#nogo"><em>Opción Dos</em></a></li> <li><a href="#nogo"><em>Opción Tres</em></a></li> <li><a href="#nogo"><em>Opción Cuatro</em></a></li> <li><a href="#nogo"><em>Opción Cinco</em></a></li> </ul>
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.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por linda el 18 de Octubre de 2006
Por el_itur el 18 de Octubre de 2006
outline:none;
}
Eso hace magia
Por Camuss el 19 de Octubre de 2006
Muy buen aporte...
Por ryuz el 19 de Octubre de 2006
el_itur :
outline:none;
}
Eso hace magia
Pero sólo hace la magia en FireFox en IE no hay ninguna magia.
Por mx el 19 de Octubre de 2006
Por NEO_JP el 20 de Octubre de 2006
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 Sisco el 24 de Octubre de 2006
Por Arturo el 24 de Octubre de 2006
Por Forón el 17 de Enero de 2007
Por asael2 el 31 de Enero de 2007
Por estoy confundido... el 05 de Febrero de 2007
Por Rodrigo el 17 de Marzo de 2007
Por Rodrigo el 17 de Marzo de 2007
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 Favio el 23 de Marzo de 2007
Por Sinai el 07 de Mayo de 2007
Por rulo el 24 de Mayo de 2007
<a href="#" onfocus="this.blur();">hola</a>
Por rulo el 24 de Mayo de 2007
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 div2 el 31 de Mayo de 2007
a:focus
{
outline:none;
}
un saludo!
Por Osukaru el 15 de Junio de 2007
div2_blog :
a:focus
{
outline:none;
}
un saludo!
creo que deberían poner esto último allá arriba ...aunque sea como opción alternativa ...
PD:gracias por el codigo
Por manolo el 25 de Octubre de 2007
.img{
cursor: pointer;
margin: 0px;
border: 0px;
outline: hidden;
}
Por jripper el 25 de Octubre de 2007
Por zacarias el 25 de Enero de 2008
Por George el 06 de Febrero de 2008
Por Carla el 28 de Febrero de 2008
{
outline:none;
}
Gracias por el dato!!!!!!!!!!
Por luysx el 10 de Noviembre de 2008
Gracias a todos!!!!
Por :) el 30 de Diciembre de 2008
Por omar el 19 de Febrero de 2009
{
outline:none;
}
exelente !!
gracias
Por Carlangas el 24 de Febrero de 2009
Gracias por el concejo
es una buena opcion
Favio_blog
Por jose el 02 de Marzo de 2010
Por Altemi el 15 de Marzo de 2010
<a href="#" onfocus="this.blur();">hola</a>
fue el único código que me funciono para ie, un poco engorroso pero de que funciona, funciona... Gracias
Por ññ el 19 de Noviembre de 2010
Por Sketch el 19 de Enero de 2011
Por Portafolioweb el 31 de Mayo de 2011
Por Jesusmac el 28 de Julio de 2011