Truques CSS fronteira com caixas Colapsados

Março 8, 2011 em 3:23 pm por Thierry Koblentz | Em CSS 101 e Projeto e Desenvolvimento | 8 Comentários

Esses truques ajudarão você a alcançar projetos sem recorrer ao uso de imagens, CSS3 gradiente ou marcação estranha. Por desmoronar caixas com zero line-height e height valores, podemos exibir conteúdo fora da caixa de conteúdo, para além das fronteiras.

Bi-cor de fundo

Este exemplo não inclui IE 6/7 soluções alternativas (verificar o código fonte desta página de demonstração para correções do IE).

Bi-cor imagem de fundo
 .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> 

Pontos e tubulações entre os itens da lista

Este exemplo mostra corretamente em navegadores IE após algumas correções simples.

Pontos e tubos de tela
 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 esquerda e apontando para a direita

Este exemplo não inclui IE 6/7 soluções alternativas (verificar o código fonte desta página de demonstração para correções do IE).

Esquerda e direita apontando para a tela triângulos
 #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 e transparência fronteira

IE 6 não suporta a palavra-chave " transparent "para a cor da borda. Quando você usa esse valor, o IE 6 desenha uma borda preta.

A correcção para este é a utilização do filtro croma que exibe uma cor específica do conteúdo do objecto como transparente. Por exemplo, para criar uma seta para a direita apontando você poderia usar esta regra:

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

A declaração font-size é outra solução para o IE 6. É para garantir que este navegador não aumentar a altura da caixa.

Parem as prensas eu aprendi um truque novo (obrigado Chungho Fang):

A magia [para criar transparência na fronteira IE] é definir 'border-style', quer tracejada ou pontilhada


É isso aí! Este é apenas mais uma maneira de usar as fronteiras para alcançar-imagem menos design.

Leitura complementar

Sobre o autor: Thierry Koblentz é um engenheiro de front-end no Yahoo!
Ele é dono de TJK Projeto , ez-css.org e css-101.org . Você pode acompanhar Thierry no Twitter em @ thierrykoblentz .

Compartilhar e ampliar: Bookmark com del.icio.us | digg it! | reddit!

8 Comentários

  1. Great! Mas o que sobre Opera?

    Comentário por Cuprum - 09 de marco de 2011 #

  2. @ Cuprum

    Opera aparece para deslocar o texto. Colocá-lo ou acima da caixa de conteúdo se a altura da linha é definido como 0 ou abaixo dela, se o line-height não é zerado.

    Alguém deve arquivar um bug ;-)

    Como uma nota lateral, eu muitas vezes pode fazer as coisas funcionarem em todos os navegadores (incluindo IE6), mas eu bater em uma parede com o Opera.
    Este navegador é realmente uma dor. Ele tem problemas, mas não podemos corrigi-lo, como fazemos com IE6 / 7 (porque nós não podemos direcionar as versões). Em cima disso, ele não tem quota de mercado é assim por que deveríamos perder tempo?

    Obrigado por seus comentários

    Comentário por Thierry Koblentz - 09 de março de 2011 #

  3. Parece que o Opera não gosta do zero line-height. Eu substituiu um line-height de 0,1 que parece corrigir Opera. AFAICT isso só afeta o IE 8, que é mais fácil de resolver do que o Opera, methinks.
    Cordialmente, David

    Comentário por David Hucklesby - 14 março de 2011 #

  4. Oi David,

    Isso é um grande achado, muito obrigado por compartilhar.

    Comentário por Thierry Koblentz - 15 março de 2011 #

  5. Bom post, mas parar de fixação para o IE6.

    Comentário por Mike - 16 de março, 2011 #

  6. Oi David,

    O que isso significa a construção (de sua classe ul.two):

    display: inline-block;
    * Display: inline;

    Estou curioso sobre a palavra-chave estrela ... Obrigado!

    Comentário por Paul - 17 de março de 2011 #

  7. Oi Paulo,

    Nestas regras, há dois diferentes filtros CSS (CSS hacks), um é chamado o hack estrelas, o outro é chamado o sublinhado corte propriedade.

    Eles funcionam assim:

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

    Se colocá-los nesta ordem é para garantir que a segunda declaração substitui o valor dado para o IE7.

    Você poderia tentar isso:

    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 */

    Note que esses hacks são confiáveis, mas o validador CSS irá sinalizá-las como erros (porque esta não é a sintaxe correta CSS).

    Comentário por Thierry Koblentz - 17 março de 2011 #

  8. Eu encontrei um bug de renderização com triângulos CSS que eu não encontrei mencionado em outro lugar. Firefox 4 no XP fica estranho.

    Aqui está uma demonstração: http://zevbrokeit.posterous.com/nubs-problem

    Você tem alguma sugestão?

    Comentário por Zev Goldberg - 24 de março de 2011 #

Desculpe, o formulário de comentários está fechado no momento.

Hospedado por Yahoo!

Copyright © 2006-2012 Yahoo! Inc. Todos os direitos reservados. Política de Privacidade - Termos de Serviço

Alimentado por WordPress em Yahoo! Web Hosting .