Eu estou tentando dar a uma div (position: fixed) a largura de 100% (relativa à div principal). Mas eu tenho alguns problemas ...
Edição: O primeiro problema é resolvido usando herdar, mas ainda não funciona. Eu acho que o problema é que eu estou usando várias divs que levam a largura de 100% / herdar. Você pode encontrar o segundo problema na atualização do jsfiddle: http://jsfiddle.net/4bGqF/7/
Fox exemplo
#container {
width: 800px;
}
#fixed {
position: fixed;
width: 100%;
}
e o html
<div id="container">
<div id="fixed">Sitename</div>
<p>
blaat
</p>
</div>
Ou você pode experimentá-lo: http://jsfiddle.net/4bGqF/
Os problemas parecem ser que o elemento fixo está sempre ocupando a largura da janela / documento . Alguém sabe como corrigir isso?
Não posso fixar meu elemento fixo porque estou usando o plugin jScrollPane. Depende do conteúdo, se há uma barra de rolagem ou não.
Muito obrigado!
PS: O texto das 2 divs está em cima da outra. Este é apenas um exemplo para que realmente não importe.
fonte
inherit
e como usarmax-width:inherit
comwidth:inherit
mantém o recipiente / relação continha o mesmo enquanto ainda está sendo ágil e gerenciávelRespostas:
Não sei ao certo qual é o segundo problema (com base na sua edição), mas se você aplicar
width:inherit
a todas as divs internas, ele funcionará: http://jsfiddle.net/4bGqF/9/Você pode procurar uma solução javascript para navegadores que você precisa e que não oferece suporte
width:inherit
fonte
width: inherit
não é a primeira coisa que eu teria pensadoComo muitas pessoas comentaram, o design responsivo frequentemente define a largura em%
width:inherit
herdará a largura do CSS, NÃO a largura calculada - o que significa que o contêiner filho herdawidth:100%
Mas, penso eu, com a mesma frequência do design responsivo
max-width
também, portanto:Isso funcionou muito satisfatoriamente para resolver meu problema de fazer com que um menu fixo fosse restringido à largura original do pai sempre que ele "travava"
O pai e o filho aderem ao
width:100%
se a viewport for menor que a largura máxima. Da mesma forma, ambos irão aderir aomax-width:800px
quando a janela de visualização for mais ampla.Ele funciona com meu tema já responsivo de uma maneira que eu possa alterar o contêiner pai sem precisar também alterar o elemento filho fixo - elegante e flexível
ps: Eu pessoalmente acho que não importa nem um pouco que o IE6 / 7 não use
inherit
fonte
min-width: inherit
fez o truque.posição fixa é um pouco complicada (de fato impossível), mas posição: pegajosa está fazendo o truque lindamente:
veja a amostra codepen
fonte
Você também pode resolvê-lo usando o jQuery:
Isso foi muito útil para mim, porque meu layout era responsivo e a
inherit
solução não estava funcionando comigo!fonte
Use este CSS:
O elemento #fixed herdará sua largura pai, portanto será 100% disso.
fonte
inherit
. Não tenho certeza se esse mattesr.O posicionamento fixo deve definir tudo em relação à viewport, portanto,
position:fixed
sempre será feito. Tente usarposition:relative
a div filho em vez disso. (Sei que você pode precisar do posicionamento fixo por outros motivos, mas se assim for - você não pode realmente fazer a largura corresponder ao pai sem JS seminherit
)fonte
Aqui está um pequeno truque que encontramos ao corrigir alguns problemas de redesenho em um aplicativo grande.
Use
-webkit-transform: translateZ(0);
no pai. Claro que isso é específico para o Chrome.http://jsfiddle.net/senica/bCQEa/
fonte
Existe uma solução fácil para isso.
Eu usei uma posição fixa para div principal e uma largura máxima para o conteúdo.
Você não precisa pensar muito em outros contêineres porque posição fixa apenas em relação à janela do navegador.
fonte
Esta solução atende aos seguintes critérios
Tanto quanto sei, esse critério não pode ser atendido sem Javascript (infelizmente).
Esta solução usa jQuery, mas também pode ser facilmente convertida em JS vanilla:
fonte
Você precisa fornecer o mesmo estilo do elemento fixo e seu elemento pai. Um desses exemplos é criado com larguras máximas e, no outro exemplo, com preenchimentos.
fonte