Ver Mensaje Individual
  #10 (permalink)  
Antiguo 03/05/2011, 14:25
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: Necesito un empujoncito conm unas pestañas

Buenas,

siento llegar tarde y encima con malas noticias. Lamentablemente chrome y creo que safari también no se comportan de la misma manera que el resto de navegadores con la pseudoclase focus. Sólo funcionan con eventos de teclado y en elementos de formulario y no creo que esto sea por error sino mas bien porque piensan que es el comportamiento correcto ya que es conocido hace tiempo y no lo han cambiado todavía. Y en cierto modo tiene sentido que no funcione con un enlace porque al dar el foco a un elemento lo que se espera es una acción por parte del usuario y si esta acción es un click en él, además de darle el foco, el comportamiento predeterminado del enlace sería seguir el enlace, es decir llevarnos a otra página con lo que el enlace ya no tendría el foco. Pero si que se tiene que poder dar el foco con el teclado para que la página sea accesible en dispositivos sin ratón y en elementos de formularios en los que se espera que el usuario introduzca datos y son los únicos que se nombran en la especificación 2.1. La única solución que se me ocurre para que funcione en todos igual sería usar javascript.

Por otro lado, aunque supongo que ya lo has averiguado, para poder aplicar la propiedad z-index a un elemento tiene que estar posicionado. Y el borde si que se ve pero al ser de un pixel casi no se aprecia. Aprovecho para decirte que en lugar de repetir la misma propiedad varias veces puedes agrupar los selectores separándolos por comas y así el código será más corto. También puedes eliminar el div con id Pestanas y aplicar los estilos de éste al ul directamente y la class button que no la estás usando para nada. El div Pestanasline supongo que no lo usarás solo para dibujar la línea de separación porque no se deben usar elementos vacios sólo para efectos estéticos, podrías poner en él el contenido.
Sería mejor usar display block para los elementos <li> y así podrías dar a todas las pestañas el mismo tamaño. Los elementos inline tienen el tamaño de lo que tienen dentro y en este caso como los enlaces están flotados se salen del flujo del documento y los <li> se quedan vacios y sin tamaño, unicamente el padding y el line-height, puedes comprobarlo con firebug poniendo un color de fondo al li. Además al flotar los enlaces se transforman en elementos en bloque y no es correcto poner elementos en bloque dentro de elementos en línea. Lo he probado en varios navegadores y en cada uno se veía diferente. Te he hecho un ejemplo que se ve igual en todos excepto el focus con el ratón en chrome:

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="es">
  2. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  3. <meta name="Language" content="Spanish">
  4. <link rel="stylesheet" href="fichero.css" type="text/css">
  5. <title>menu de pesta&ntilde;as con :focus</title>
  6. </head>
  7.     <ul>
  8.         <li ><a href="#" rel="1">Perfil</a></li>
  9.         <li ><a href="#" rel="2">Referencias</a></li>
  10.         <li ><a href="#" rel="3">Documentos</a></li>
  11.        
  12.     </ul>
  13.     <div id="contenido"><p>el contenido</p></div>
  14. </body>
  15. </html>

Código CSS:
Ver original
  1. /******** menu de pestañas con :focus *******/
  2. * {
  3.     margin: 0;
  4.     padding: 0;
  5.     outline: none;
  6. }
  7.  
  8. ul, li, a { display: block; }
  9.  
  10. a, #contenido {
  11.     border: 1px solid #000;
  12.     text-align: center;
  13.     height: 40px;  
  14.     line-height: 40px;
  15. }
  16.  
  17. ul {
  18.     list-style-type: none;
  19.     height: 42px;
  20.     z-index: 2;
  21.     position: relative;
  22.     top: 10px; 
  23. }
  24.  
  25. li {
  26.     float: left;
  27.     margin-left: 10px;
  28. }
  29.  
  30. a {
  31.     width: 125px;
  32.     background: #ff0;
  33.     text-decoration: none;
  34. }
  35.  
  36. li a:focus {
  37.     background: #0ff;
  38.     border-bottom: none;
  39.     height: 52px;
  40. }
  41.  
  42. #contenido
  43. {
  44.     background: #0ff;
  45.     margin-top: 20px;
  46.     height: 300px;
  47. }
  48. /** fin **/