28

CSS Cross "Bownser"

Embed Size (px)

DESCRIPTION

Apresentação sobre CSS cross browser, apresentado na WIneTechTalks 2, em 4 jan. 2013, na Wine. www.wine.com.br

Citation preview

Page 1: CSS Cross "Bownser"
Page 2: CSS Cross "Bownser"
Page 3: CSS Cross "Bownser"

Navegadores insuportados

IE 7–8 IE 9–10

IE 7+/- 5,34% visitas

Page 4: CSS Cross "Bownser"

Com CSS Sem CSS

Page 5: CSS Cross "Bownser"

Can I use?caniuse.com

• display: inline-block;• opacity + PNG semi-transparente• pseudo-classes• seletores avançados • pseudo-elementos

Page 6: CSS Cross "Bownser"

display: inline-block;

• Faz com que um elemento tenha propriedades de block – largura e altura, por exemplo – mas siga o fluxo do texto.

• Comportamento um pouco imprevisível.• No IE 7 só funciona em elementos inline por

padrão. Exemplo: um <span> pode ser inline-block mas um <div> não.

Page 7: CSS Cross "Bownser"

http://dabblet.com/gist/4234290

Page 8: CSS Cross "Bownser"

Opacity + PNG semi-transparente

• PNGs semi-transparentes funcionam bem no Internet Explorer 7 e 8…

• …exceto quando se usa a propriedade opacity ao mesmo tempo.

Page 9: CSS Cross "Bownser"

Correção:

.teste { background:url(ie8-logo.png) 0 0 no-repeat; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=#00FFFFFF, endColorstr=#00FFFFFF );}

Obs: funcionamento ainda precisa ser confirmado.

Page 10: CSS Cross "Bownser"

Algumas pseudo-classes

• IE 7 aceita :hover em todos os elementos, :active somente em links.

• IE 7 suporta :first-child mas não :last-child.• :first-letter e :first-line funcionam tranquilo.• :focus não funciona nos formulários do IE 7.

Page 11: CSS Cross "Bownser"

Seletores avançados

seletor [attr]permite estilizar elementos além de IDs e

classes, usando qualquer atributo.

Exemplos: input[type=button], a[href*="hotsite"], label[for=email]

Page 12: CSS Cross "Bownser"

Seletores avançados

seletor >seleciona o elemento filho direto de um outro

elemento.

Exemplo: ul > li, div > p

Page 13: CSS Cross "Bownser"

Seletores avançados(suportado pelo IE 8 com ressalvas)

seletor +Seleciona apenas o elemento adjacente ao

primeiro elemento

Exemplo: label + input, p + ul

Page 14: CSS Cross "Bownser"

Seletores avançados

seletor ~seleciona todos os próximos elementos irmãos

do primeiro

Exemplo: h2 ~ p, .destaque ~ div

Page 15: CSS Cross "Bownser"

:before / :after

• São pseudo-elementos.• Usados para adicionar conteúdo á pagina

através da propriedade content: "...";• Não suportado pelo IE 7 :(• Podem ser usados somente se não

comprometerem o funcionamento do site

Page 16: CSS Cross "Bownser"

DEBUG TIME

img:not([width]):not([height]),img[alt=""], img:not([alt]) {

outline: 2px solid red;}

a:not([title]) {background: red;color: white;

}

http://dabblet.com/gist/4278123

Page 17: CSS Cross "Bownser"
Page 18: CSS Cross "Bownser"

Mas primeiro…

BlockFormatting

Context(ou, simplificando, contextos)

Page 19: CSS Cross "Bownser"

Elementos que criam contextos

• Elemento raiz (<html>)• Elementos com float diferente de none• Elemento com overflow diferente de visible

• Elementos com position: absolute ou position: fixed

• Elementos inline-block• Células de tabela (display: table-cell)• Título de tabela (display: table-caption)

Page 20: CSS Cross "Bownser"
Page 21: CSS Cross "Bownser"
Page 22: CSS Cross "Bownser"

Quando um elemento cria um novo contexto, signfica que ele se torna

responsável pelos elementos dentro dele.

Ou seja, as margens e floats dos elementos filhos passam a ser contidos corretamente.

Page 23: CSS Cross "Bownser"

E falando em Internet Explorer…

O IE possui uma propriedade similar aos “contextos” chamada de hasLayout.

Uma forma trivial de ativar o hasLayout é adicionar o já conhecido zoom: 1; ao CSS.

Page 24: CSS Cross "Bownser"

O famoso clearfix.clearfix:before,.clearfix:after { content: " "; /* 1 */ display: table; /* 2 */}

.clearfix:after { clear: both;}

/** * Somente para IE 6/7 * Aciona hasLayout para conter floats. */.clearfix { *zoom: 1;}

Existem outros métodos para limpar floats.

Escolha sabiamente.

Page 25: CSS Cross "Bownser"

Enfim, floats…

• Usar com moderação• Limpar floats• Floats vs. inline-block• Empilhamento (z-index)• Menus horizontais

Page 26: CSS Cross "Bownser"

Perguntas?Sugestões?

Partiu Polezi?

Page 27: CSS Cross "Bownser"

Na próxima semana:

Layout digivolve para… HTML + CSS

Inscreva você também o seu tema!

Page 28: CSS Cross "Bownser"

Links e Referências• http://www.quirksmode.org/css/contents.html• http://caniuse.com/#cats=CSS• http://www.satzansatz.de/cssd/onhavinglayout.html• http://stackoverflow.com/a/6199172• http://nicolasgallagher.com/micro-clearfix-hack/• http://stackoverflow.com/a/1633170• http://www.quirksmode.org/css/clearing.html• http://www.css-101.org/articles/floats/• http://www.iecss.com/• http://docs.webplataform.org/wiki/css/