So legen Sie die Höheseigenschaft für SPAN fest

85

Ich muss den folgenden Code mit vordefinierter Höhe dehnbar machen

<style>
.title{
   background: url(bg.gif) no-repeat bottom right;
   height: 25px;
}
</style>

<span class="title">This is title</span>

Da span jedoch ein Inline-Element ist, funktioniert die Eigenschaft "height" nicht.

Ich habe stattdessen versucht, div zu verwenden, aber es wird bis zur Breite des oberen Elements erweitert. Und die Breite sollte flexibel sein.

Kann jemand eine gute Lösung dafür vorschlagen?

Danke im Voraus.

Kelvin
quelle
1
Sie sollten Überschriften-Tags (h1, h2, h3, ...) für Titel verwenden. Es ist semantisch korrekter.
Pickels
1
Ja, Sie haben Recht, Pickels. Vielen Dank an alle für Ihre Hilfe. Dies ist meine letzte CSS. Es funktioniert gut für mich: <style> h4 {display: inline-block; Zoom: 1; * Anzeige: Inline; Rand: 0px; Höhe: 25px; } </ style>
Kelvin

Antworten:

138

Geben Sie es display:inline-blockin CSS ein - das sollte es tun lassen, was Sie wollen.
Im Hinblick auf die Kompatibilität: IE6 / 7 wird mit dieser Arbeit, wie Quirks - Modus schlägt vor:

IE 6/7 akzeptiert den Wert nur für Elemente mit einer natürlichen Anzeige: Inline.

casraf
quelle
Für das, was es wert ist, unterstützt IE7 nicht inline-block.
Scott Cranfill
Np. @ Scott: Ich sehe das nicht auf W3 - hier ist, was sie sagen: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".
Casraf
2
@henasraf - @ Scott ist richtig, ich kann es auch wegen Quick nicht verwenden: quirksmode.org/css/display.html
Nick Craver
2
Zitat:IE 6/7 accepts the value only on elements with a natural display: inline.
Casraf
1
Ahah, ich denke, es wird funktionieren, wenn es auf ein spanDann angewendet wird . Danke für die Info, Henasraf.
Scott Cranfill
13

Damit soll display: inline-block in allen Browsern funktionieren:

Wenn Sie im IE (6/7) hasLayout mit "zoom: 1" auslösen und dann die Anzeige auf Inline setzen, verhält es sich merkwürdigerweise wie ein Inline-Block.

.inline-block {
    display: inline-block;
    zoom: 1;
    *display: inline;
}
I.devries
quelle
5

Angenommen, Sie möchten es nicht zu einem Blockelement machen, dann könnten Sie versuchen:

.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;
}

Aber die einfachste Lösung ist, einfach zu behandeln die .titleals Block-Level - Element, und mit den entsprechenden Überschriften - Tags <h1>durch <h6>.

David sagt, Monica wieder einsetzen
quelle
0

Spanne { display: table-cell; height: (your-height + px); vertical-align: middle; }

Damit Bereiche wie eine Tabellenzelle (oder ein anderes Element) funktionieren, muss die Höhe angegeben werden. Ich habe Spannweiten eine Höhe gegeben, und sie funktionieren einwandfrei - aber Sie müssen die Höhe hinzufügen, damit sie tun, was Sie wollen.

mike s
quelle
0

Eine andere Möglichkeit ist natürlich die Verwendung von Javascript (Jquery hier):

$('.box1,.box2').each(function(){
    $(this).height($(this).parent().height());
})
Ukuser32
quelle
-4

Warum brauchen Sie in diesem Fall eine Spanne? Wenn Sie die Höhe stylen möchten, können Sie einfach ein div verwenden? Sie könnten ein div mit versuchen display: inline, obwohl dies das gleiche Problem haben könnte, da Sie tatsächlich das gleiche tun würden wie eine Spanne.

Seth Petry-Johnson
quelle
3
Oder ignorieren Sie meine Streifzüge ganz und verwenden Sie Henasrafs Antwort :)
Seth Petry-Johnson
Down-Voting-Kommentare entmutigen nur diejenigen, die einen legitimen Beitrag leisten möchten. Hör auf! Geben Sie stattdessen einfach ein konstruktives Feedback oder wahrscheinlich mehr auf den Punkt, Ihre eigene Meinung zu diesem Thema.