Simulando position fixed no Internet Explorer (IE) - sem javascript
Bom, todo mundo sabe que a propriedade position igual a fixed faz com que o elemento fique fixo na janela do browser independente da movimentação da barra de rolagem.
Isto é uma verdade pra navegadores que seguem bem os padrões (OP, FF,etc) mas para o IE (Internet Explorer até o 7) isto não funciona. Simplesmente não funciona.
Como resolver isto SEM JAVASCRIPT só no CSS?
Primeiramente imagine duas divs dentro de um documento:
- Uma das divs tem dimensões de 400×400, tem um texto gigantesco como conteúdo, porém seu overflow é scroll, o que permite que seja possível ler o conteúdo gigantesco.
- A outra div é uma pequena imagem de 25×25 que está posicionada exatamente sobre a div do conteúdo anterior.
…
Bom, se eu mexer a barra de rolagem da div do conteúdo não irá interferir em nada na movimentação da div que tem a imagem. A imagem continuará quieta sobre o texto.
Bingo!! Agora é só aumentar o tamanho da div com conteúdo pra ocupar a janela inteira.
Pra você não ter que quebrar a cabeça eu já deixei o código prontim só pra você inserir no seu documento (e fazer adaptações se achar necessário).
O Exemplo: Simulando position fixed no Internet Explorer - IE
O código pronto
<style type="text/css">
/* FAZ OS POSITION FIXED NOS NAVEGADORES PADRÃO (não mexa) */
.fixed { position: fixed !important; }
</style>
<!--[if lt IE 7]>
<style type="text/css">
/* FAZ O POSITION FIXED PARA O IE (não mexa).
Para funcionar o DTD do documento deve estar correto. E não ser quirksMode
By Micox - micoxjcg@yahoo.com.br - elmicox.com - elmicox.blogspot.com
*/
.fixed { position: absolute !important; }
body { height: 100% !important; width: 100% !important;
margin: 0 !important; position: relative; }
html { overflow-y: hidden !important; }
#newbody { position: relative !important; overflow-y: scroll !important;
height: 100% !important; width: 100% !important; margin: 0 !important; }
</style>
<![endif]-->
<style type="text/css">
/* COLOQUE AQUI O RESTANTE DAS ESTILIZAÇÕES QUE NÃO TENHAM A VER COM POSITION FIXED
MAS NÃO DECLARE MARGINS, PADDINGS, POSITIONS, DIMENSÕES OU OVERFLOWS PARA HTML, BODY E NEWBODY
*/
</style>
Detalhes:
Da mesma forma que está no exemplo, deverá haver um elemento pai chamado newbody que conterá todo o conteúdo não-fixed e, fora deste, deverão estar todos os elementos que desejar que sejam fixed. Olha o exemplo lá que vai entender.
A página não pode ser renderizada no quirks mode, ou seja, deve estar com o document type definition (DTD) correto;
Pode dar boró se alterar margin, padding, posições, dimensões ou overflows para os elementos HTML, body e newbody.
Perceba que não é aproveitamento de bug do IE. É apenas uma técnica que também funcionaria em outros navegadores se fosse necessário usar.
Muitos gringos já falaram sobre a técnica, mas aqui no Brasol parece que ninguém falou ainda. Estranho…:
Comenta aí malucada. Ninguém comenta mais
Setembro 25th, 2007 11:46
e aí cara sempre mandando bem !
Setembro 25th, 2007 15:05
“O site esta de mudança”
Altera o feed ^^
Da hora o seu madruga na pagina hauhuhauehaue
Setembro 26th, 2007 00:51
interessante, estou rodando windows vista home premium, IE7 não vai fica tudo esquisito
Setembro 26th, 2007 08:08
@diego, não entendi: funfou ou não funfou no IE7? Outros caras que eu conversei disseram que funfou.
@danilo, Igor: valeu caras!
Setembro 26th, 2007 08:08
@diego, não entendi: funfou ou não funfou no IE7? Outros caras que eu conversei disseram que funfou.
@danilo, Igor: valeu caras!
Setembro 26th, 2007 18:58
Sempre salvando nossa pele, né macaco?
Vlw velhinho!
Outubro 8th, 2007 16:38
Olhe que legal não conhecia essa técnica antes, se eu fosse mais empenhado até iria colocá-la nos sistemas antigos onde eram necessários mas vou deixar eles la quietinhos e utilizar nos proximos ehehhehe
valeuuuuuuuuuu micao!
Novembro 13th, 2007 16:54
grande mico! muito bom!!
uma coisa, que to fazendo uma parada aqui, que a div vai mudando de tamanho e vai ficando com overflow, ai nao a barra de rolagem da div fixada nao estava indo pra baixo, dai pra resolver isso eu coloquei um z-index nessa div e funfou diboa!
valeu!!
Dezembro 19th, 2007 09:38
Isso não funcionou aki so funciona no firefox
Dezembro 19th, 2007 10:10
paladino, seu problema é no IE7?
Esse IE7 tá me dando trabalho ehheahe, uns falam que funfa, outros que não funfa..
Abril 4th, 2008 09:07
eu consegui fazer o position fixed no IE6 e 7 com outro metodo q eu achei num forum de jquery sobre um plugin maluco la q eu nao me lembro o nome.
nao eh javascript. eh css msm, utilizando expression.
sei q esse post ta meio atrasado, mass….
bom, deem uma olhada la.
http://www.gruporrp.com.br/versatylesports/teste.html
ta funcionando bonitinho!!!! vlws!
Abril 4th, 2008 09:23
OOooo,
Muito bom Julio.
O Expression tá sendo a salvação do IE6, já fiz uma solução pro hover no IE6.
O lance é muito divertido. Em breve vou fazer uma complilação.
Abril 18th, 2008 11:15
Ops!
Legal! Eu não conhecia essa fixed … legal mesmo!
Outubro 29th, 2008 15:51
Muito bom!
Parabéns…. da pra vê que usando a criatividade podemos fazer muitas coisas boas.