Eu preciso tornar o seguinte código extensível com altura predefinida
<style>
.title{
background: url(bg.gif) no-repeat bottom right;
height: 25px;
}
</style>
<span class="title">This is title</span>
Mas como span é um elemento embutido, a propriedade "height" não funcionará.
Tentei usar div em vez disso, mas ele se expandirá até a largura do elemento superior. E a largura deve ser flexível.
Alguém pode sugerir alguma boa solução para isso?
Desde já, obrigado.
Respostas:
Dê um
display:inline-block
em CSS - isso deve permitir que ele faça o que você quiser.Em termos de compatibilidade: IE6 / 7 vai trabalhar com esta, como o modo de peculiaridades sugere:
fonte
inline-block
.Note: No versions of Internet Explorer (including IE8) support the property values "inline-table", "run-in", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-row", or "table-row-group".
IE 6/7 accepts the value only on elements with a natural display: inline.
span
then. Obrigado pela informação, henasraf.Usar
.title{ display: inline-block; height: 25px; }
O único truque é o suporte do navegador. Verifique se a sua lista de navegadores suportados lida com bloqueio embutido aqui .
fonte
isso é para fazer display: inline-block funcionar em todos os navegadores:
Curiosamente, no IE (6/7), se você acionar o hasLayout com "zoom: 1" e, em seguida, definir a exibição para embutir, ele se comportará como um bloco embutido.
.inline-block { display: inline-block; zoom: 1; *display: inline; }
fonte
Supondo que você não queira torná-lo um elemento de bloco, você pode tentar:
.title { display: inline-block; /* which allows you to set the height/width; but this isn't cross-browser, particularly as regards IE < 7 */ line-height: 2em; /* or */ padding-top: 1em; padding-bottom: 1em; }
Mas a solução mais fácil é simplesmente tratar o
.title
como um elemento de nível de bloco, e usando as tags título apropriado<h1>
através<h6>
.fonte
período
{ display: table-cell; height: (your-height + px); vertical-align: middle; }
Para que os spans funcionem como uma célula de tabela (ou qualquer outro elemento, nesse caso), a altura deve ser especificada. Eu dei uma altura aos vãos e eles funcionam bem - mas você deve adicionar altura para que eles façam o que você deseja.
fonte
Outra opção, claro, é usar Javascript (Jquery aqui):
$('.box1,.box2').each(function(){ $(this).height($(this).parent().height()); })
fonte
Por que você precisa de um intervalo neste caso? Se você quiser estilizar a altura, pode usar um div? Você pode tentar um div com
display: inline
, embora isso possa ter o mesmo problema, já que você estaria fazendo a mesma coisa que um span.fonte