Potrzebuję rozciągnięcia następującego kodu z predefiniowaną wysokością
<style>
.title{
background: url(bg.gif) no-repeat bottom right;
height: 25px;
}
</style>
<span class="title">This is title</span>
Ale ponieważ span jest elementem wbudowanym, właściwość „height” nie będzie działać.
Próbowałem zamiast tego użyć div , ale rozszerzy się do szerokości górnego elementu. Szerokość powinna być elastyczna.
Czy ktoś może zaproponować jakieś dobre rozwiązanie na to?
Z góry dziękuję.
Odpowiedzi:
Daj mu
display:inline-block
w CSS - to powinno pozwolić mu robić to, co chcesz.Jeśli chodzi o kompatybilność: IE6 / 7 będzie z tym działać, jak sugeruje tryb dziwactw:
źródło
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
wtedy. Dzięki za informację, henasraf.Posługiwać się
.title{ display: inline-block; height: 25px; }
Jedyną sztuczką jest obsługa przeglądarki. Sprawdź, czy lista obsługiwanych przeglądarek obsługuje blokowanie inline-block tutaj .
źródło
ma to na celu zapewnienie działania display: inline-block we wszystkich przeglądarkach:
Co dziwne, w IE (6/7), jeśli wyzwolisz hasLayout za pomocą "zoom: 1", a następnie ustawisz wyświetlacz na inline, zachowuje się jak blok inline.
.inline-block { display: inline-block; zoom: 1; *display: inline; }
źródło
Zakładając, że nie chcesz, aby był to element blokowy, możesz spróbować:
.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; }
Ale najłatwiejszym rozwiązaniem jest po prostu potraktowanie elementu
.title
jako elementu blokowego i użycie odpowiednich tagów nagłówka<h1>
through<h6>
.źródło
Zakres
{ display: table-cell; height: (your-height + px); vertical-align: middle; }
Aby zakresy działały jak komórka tabeli (lub jakikolwiek inny element, jeśli o to chodzi), należy określić wysokość. Podałem wysokość przęseł i działają dobrze - ale musisz dodać wysokość, aby zrobiły to, co chcesz.
źródło
Inną opcją jest oczywiście użycie Javascript (tutaj Jquery):
$('.box1,.box2').each(function(){ $(this).height($(this).parent().height()); })
źródło
Dlaczego potrzebujesz rozpiętości w tym przypadku? Jeśli chcesz ustawić styl wysokości, możesz po prostu użyć elementu div? Możesz wypróbować element div z
display: inline
, chociaż może to mieć ten sam problem, ponieważ w rzeczywistości robisz to samo, co span.źródło