CSS Tricks frontera con cajas colapsadas

08 de marzo 2011 a las 3:23 pm por Thierry Koblentz | En CSS 101 , Diseño , Desarrollo | 8 Comentarios

Estos trucos te ayudarán a lograr los diseños sin necesidad de recurrir al uso de imágenes, el gradiente de CSS3 o marcas extrañas. Por el colapso de las cajas con cero line-height y height los valores, se puede mostrar el contenido fuera de la caja de contenido, a lo largo de las fronteras.

Bi-color de fondo

Este ejemplo no incluye Internet Explorer 7.6 soluciones (ver el código fuente de esta página de demostración para los arreglos de IE).

Bi-color de fondo de pantalla
 .parent { display:inline-block; text-align: center; border: 1px solid #cecece; } .child { display:inline-block; line-height: 0; height: 0; border-top: 1em solid #ffc; border-bottom: 1em solid #fdcf46; padding:0 .6em; vertical-align:bottom; } <ul id="menuBar-A"> <li><a href="#">About Us</a></li> <li class="selected"><a href="#">Contact Us</a></li> <li><a href="#">Services</a></li> <li><a href="#">Products</a></li> </ul> 

Los puntos y las tuberías entre elementos de la lista

En este ejemplo se muestra correctamente en navegadores IE después de algunas correcciones de simple.

Puntos y captura de pantalla y tuberías
 ul.one, ul.two { margin-left:0; display:inline-block; *display:inline; zoom:1; height:12px; line-height:12px; padding:0; } li { float:left; display:inline; height:2px; line-height:2px; position:relative; top:.3em; } ul.two {border-left:1px solid #333;} ul.one li {border-left:2px solid #333;} ul.two li {border-right:2px solid #333;} ul.one li.first-child, ul.two li.last-child { border:0; } a { color:#000; padding:.4em .9em; *position:relative; } <div id="menuBar-B"> <ul class="us"> <li><a href="#">About Us</a></li> <li class="selected"><a href="#">Contact Us</a></li> </ul> <ul class="ourOffer"> <li class="services"><a href="#">Services</a></li> <li><a href="#">Products</a></li> </ul> </div> 

Triángulos izquierdo y derecho de puntero

Este ejemplo no incluye Internet Explorer 7.6 soluciones (ver el código fuente de esta página de demostración para los arreglos de IE).

Izquierda y derecha que apunta-triángulos de pantalla
 #box { line-height: 0; height: 0; border: .4em solid transparent; border-left-color: #333; border-right-color: #333; padding: 0 .3em; display: inline-block; } <ul id="menuBar-C"> <li><a href="#">About Us</a></li> <li class="selected"><a href="#">Contact Us</a></li> <li><a href="#">Services</a></li> <li><a href="#">Products</a></li> </ul> 

IE 6 y la transparencia de la frontera

IE 6 no es compatible con la palabra clave " transparent "para el color del borde. Cuando se utiliza este valor, es decir 6 dibuja un borde negro.

La solución a esto es utilizar el filtro de croma que muestra un color específico del contenido del objeto de la mayor transparencia. Por ejemplo, para crear una flecha hacia la derecha señalando que puede utilizar esta regla:

 #Box { height: 0; width: 0; border: 10px solid transparent; font-size: 0; _border-color: pink; _filter: chroma(color="pink"); border-left-color: #333; } 

La declaración de font-size es otra solución para IE 6. Es para asegurarse de que este navegador no aumentar la altura de la caja.

Parar las prensas que acabo de aprender un nuevo truco (gracias Chungho Fang)!

La magia [para crear transparencia en la frontera IE] es establecer 'border-style' a cualquiera de guiones o de puntos


Eso es todo! Esto es sólo una forma más de utilizar los bordes para lograr la imagen-less.

Para leer más

Sobre el autor: Thierry Koblentz es un ingeniero de front-end en Yahoo
Él es dueño de TJK Diseño , ez css.org- y -css 101.org . Usted puede seguir en Twitter en Thierry @ thierrykoblentz .

Compartir y ampliar: Marcar con del.icio.us | Digg it! | reddit!

8 Comentarios »

RSS feed para los comentarios de esta entrada.

  1. Genial! Pero ¿qué pasa con Opera?

    Comentario por Cuprum - 09 de marzo 2011 #

  2. @ Cuprum

    Opera parece perder el texto. Poniendo por encima de la caja de contenido si el line-height se establece en 0 o por debajo si el line-height no es llevado a cero.

    Alguien debe presentar un error ;-)

    Como nota al margen, a menudo puede hacer que las cosas funcionen en todos los navegadores (incluyendo IE6), pero me golpeó una pared con Opera.
    Este navegador es realmente un dolor. Tiene problemas, pero no se puede arreglar como lo hacemos con IE6 / 7 (ya que no pueden dirigirse a las versiones). Además de eso, no tiene cuota de mercado es así, ¿por qué debemos perder el tiempo?

    Gracias por su colaboración

    Comentario por Thierry Koblentz - 09 de marzo 2011 #

  3. Parece que Opera no le gusta el cero line-height. Me sustituyó un line-height de 0,1, que parece solucionar Opera. AFAICT esto sólo afecta a Internet Explorer 8, que es más fácil de corregir que Opera, me parece.
    Cordialmente, David

    Comentario por David Hucklesby - 14 de marzo 2011 #

  4. Hola David,

    Eso es un gran descubrimiento, muchas gracias por compartir.

    Comentario por Thierry Koblentz - 15 de marzo 2011 #

  5. Buen post, pero dejar de fijación para IE6.

    Comentario por Mike - 16 de marzo 2011 #

  6. Hola David,

    ¿Qué significa esto de la construcción (de su clase ul.two):

    display: inline-block;
    * Display: inline;

    Tengo curiosidad por la palabra clave estrella ... ¡Gracias!

    Comentario por Pablo - 17 de marzo 2011 #

  7. Hola Pablo,

    En estas reglas, hay dos diferentes filtros de CSS (hacks CSS), uno se llama el hack de estrellas, el otro se llama el subrayado hackear propiedad.

    Ellos trabajan de esta manera:

    *property:value; /* IE5/6/7 see this */
    _property:value; /* IE5/6 see this */

    Si los ponemos en este orden es para asegurarse de que la segunda declaración sobrescribe el valor dado a IE7.

    Usted podría intentar lo siguiente:

    color:blue; /* blue in all browsers */
    *color:yellow; /* switching to yellow for IE less than 8 */
    _color:green; /* switching to green for IE less than 7 */

    Tenga en cuenta que estos ataques son confiables, pero el validador de CSS se les marca como errores (porque esto no es propio de la sintaxis de CSS).

    Comentario por Thierry Koblentz - 17 de marzo 2011 #

  8. He encontrado un fallo de renderizado con triángulos CSS que no he encontrado en otra parte. Firefox 4 en XP se extraña.

    Aquí hay una demo: http://zevbrokeit.posterous.com/nubs-problem

    ¿Tiene alguna sugerencia?

    Comentario por Zev Goldberg - 24 de marzo 2011 #

Deja un comentario

Nota: Los comentarios son moderados, por primera vez. Spam eliminado.

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Organizado por Yahoo!

Copyright © 2006-2011 Yahoo! Inc. Todos los derechos reservados. Política de privacidad - Condiciones del servicio

Desarrollado por WordPress en Yahoo! Web Hosting .