O leitor Marco lançou um desafio, utilizar a técnica de dois backgrounds de uma forma um pouco diferente, ao invés de um background p repetir em X e Y, e outro p repetir somente em x, ele quer dois backgrounds na vertical, sendo que ele testou da seguinte forma no css:
html, body {
height: 100%;
margin: 0;
padding: 0;
}
html {
background: transparent url(images/bg_02.gif) repeat-y 0 0;
}
body {
background: transparent url(images/bg_01.gif) repeat-y right 0;
}
E as palavras dele sobre o código:
Ao deslizar a barra de rolagem, observe que o background da tag body não segue até o final, pois este possui [height:100%], ou seja, 100% da área visÃvel do browser. E se colocar [height:auto], o background segue o tamanho do conteúdo inserido no documento, ou seja, se não houver conteúdo, não haverá background na tag body.”
Então quando temos um conteúdo maior do que a área util do browser, o bg do body não continua repetindo, segundo ele um pequeno bug no Firefox (não tenho uma opinião sobre ser ou não um bug do Firefox, pois eu tenho um pensamento um pouco radical, se ta diferente no IEca e no Firefox o IEca ta errado.) testei no Opera e aconteceu a mesma coisa que no Firefox, e que ao colocar height: auto, até funciona, mas caso nao tenha conteúdo o bg não aparece.
Eis que entra um pequeno truque, que fez funcionar no Firefox e no Opera, no IE já estava “funcionando”, então é só colocar um height: auto !important; e um min-height: 100%; no body, mas para não ter dúvidas colocamos no html também, mas só no body já resolve o problema…
[UPDATE]
O leitor percebeu uma falha minha, por pura preguiça minha, e talvez um pouco de organização demais, coloquei o height:auto !important; min-height: 100%; no html e no body, o que faz voltarmos ao erro de nao exibir o bg caso nao tenha conteudo.. Obrigado Marco ou Allan…
[/UPDATE]
html, body {
height:auto !important;
height: 100%;
min-height: 100%;
margin: 0;
padding: 0;
}
html {
background: transparent url(images/bg_02.gif) repeat-y 0 0;
}
body {
height:auto !important;
min-height: 100%;
background: transparent url(images/bg_01.gif) repeat-y right 0;
}
O height: auto !important é para os browsers que nao reconhecem o min-height, o IEca não precisa pois ele ignora sumariamente que tenha uma altura fixa, que não é este o caso, o min-height é para os browsers que interpretam e vão forçar para que eles tenham uma altura minima, no nosso caso 100%.
O exemplo funcionando pode ser visto aqui.
Então ai está, missão dada, é missão cumprida. Se aparecerem outras dúvidas mandem, quem sabe a sua dúvida não vira um ‘desafio do leitor‘.
Olá, estou tendo um problema parecido.
O repeat-y não está funcionando no IE, mas no FF funciona perfeitamente.
Comparem: http://meal.com.br/cms/2008/07/teste/
Vejam no FF e no IE pra ver o bg que não está repetindo…
Já tentei seguir diversos “fixes”, “hacks”, “workarounds”, os que envolvem o hasLayout do IE, mas não obtive exito!
Aceita o desafio número 2? hehehe
Alguém tem idéia?
Desde já muito obrigado!
@Luiz Filho
Cara o unico problema que vi de diferente entre o Ie e o FF foi uma div que ta com altura diferente no Ie, fora isso…
Cuidado com png transparent no ie6 que nao funciona e mesmo com scripts as vezes continuam nao funcionando
abçs
me ajudou muito, unico site em que achei essa informação só que tive mais dor de cabeça.
No ie6 e 7 funcionou muito bem com a explicação acima só que no ff 3.0 o problema continou, depois de muito quebrar a cabeça, tive uma “pequena luz”.
No ff 3.0 só funcionava se declarasse um valor fixo, em uma div container, caso o essa div tivesse o valor height: auto ou height:100%. O background do body continuaria até o meio.
Depois de quebrar a cabeça fiz o seguinte:
Fui lá na tag body e coloquei float: left;
Oo também fiquei surpreso quando vi o resultado, se puderem fazer uma análise sobre isso.
O problema depois disso foi colocar o layout centralizado, acabei colocando o margin: 0px auto, com isso não resolveu, mas depois de brigar um pouco, inseri width: 100%.
Deste modo funcionou muito bem, espero ajudar algumas pessoas com essa informação.
Até + e muito obrigado, pelo post.
Good, good, very good. 🙂
hahahaha Puxa Gabriel, muito obrigado pela ajuda, eu fiz o que voce sugeriu e tbm ficou perfeito aqui. O firefox repetiu o fundo hehehe
Brigadao
Abs
Raphael
E se eu quizesse colocar três…
Exemplo: Um “principal” repetindo para todos os lados (repeat)
Outro repetindo na vertical no lado esquerdo
e outro no lado direito…
Isso é possÃvel?
@Gabriel
Dá sim Gabriel, utilize a técnica e adicione uma div logo depois bo body para poder receber o terceiro bg..
Abçs
Hum…
Deu certim ^_^
vlw!
Cara, muito obrigado pela dica!!! eu estava com o mesmo problema do background não seguir até o fim do conteúdo. Com isso funcionou perfeitamente!!!
Obrigado!
E se eu quiser colocar uma no top e outro no rodape? Aqui nao esta dando certo =(
@Auro
ja experimentou mudar as propriedades do background para repeat-x ou no-repeat (vai depender da sua necessidade) e fixar um no top e outro no bottom?
fiz um teste rápido aqui e funcionou.
Abçs
Seu post mim salvou agradeço muito!
Anderson eu estou com esse mesmo problema, coloquei um bg fixo no top e outro fixo no bottom, porém eu queria que esse bg do bottom ficasse como bg do div rodapé, como eu faço?
@Debora,
acho que nao entendi seu problema.