Ich habe einen H1-Stil für meine Website:
.centercol h1 {
color: #006bb6;
font-weight: normal;
font-size: 18px;
padding:3px 3px 3px 6px;
border-left:3px solid #c6c1b8;
background:#f2efe9;
display:block;
}
Die Hintergrundfarbe erstreckt sich über die gesamte Breite des Centercols, 500px ...
Wie kann ich dafür sorgen, dass dieses H1 nur die Breite des Textes des H1 umfasst?
display:table;
diese Weise keinen Zeilenumbruch zu verwenden..h1 { width: -moz-fit-content; width: fit-content; // workaround for IE11 display: table; }
Alle modernen Browser unterstützen dies
width: fit-content
.Für IE11 könnten wir dieses Verhalten emulieren, mit
display: table
dem der Randkollaps nicht wiedisplay: inline-block
oder unterbrochen wirdfloat: left
.quelle
Sie können
display:inline-block
dieses Verhalten erzwingenquelle
Eine einfache Lösung hierfür besteht darin, das H1-Element nach links zu schweben:
.centercol h1{ background: #F2EFE9; border-left: 3px solid #C6C1B8; color: #006BB6; display: block; float: left; font-weight: normal; font-size: 18px; padding: 3px 3px 3px 6px; }
Ich habe ein einfaches jsfiddle-Beispiel zusammengestellt, das die Auswirkung des Stils "float: left" auf die Breite Ihres H1-Elements für alle zeigt, die nach einer allgemeineren Antwort suchen:
http://jsfiddle.net/zmEBt/1/
quelle
Dies liegt daran , Ihre
<h1>
ist die Breite des CenterCol. Geben Sie eine Breite an<h1>
und verwendenmargin: 0 auto;
Sie diese, wenn Sie sie zentrieren möchten.Alternativ können Sie das schweben lassen
<h1>
, wodurch es nur genau so breit wie der Text ist.quelle
Ich habe dieses Problem kürzlich mit Tabellenbeschriftungen gelöst, obwohl ich nicht sagen kann, ob es empfohlen wird. Die anderen Antworten schienen in meinem Fall nicht zu funktionieren.
h1 { display: table-caption; }
quelle
Ähnlich wie bei den anderen Vorschlägen können Sie den folgenden Code verwenden. Wenn Sie jedoch den Rand gehen: 0 auto; Route Ich würde empfehlen, den Rand für die Ober- und Unterseite eines H1 auf etwas anderes als 0 zu setzen. Also vielleicht Rand: 6px auto; oder so.
.centercol h1{ display: inline-block; color: #006bb6; font-weight: normal; font-size: 18px; padding:3px 3px 3px 6px; border-left:3px solid #c6c1b8; background:#f2efe9; display:block; }
quelle
Align-Self-Start, Align-Self-Center ... in der Flexbox
.centercol h1{ background: #F2EFE9; border-left: 3px solid #C6C1B8; color: #006BB6; display: block; align-self: center; font-weight: normal; font-size: 18px; padding: 3px 3px 3px 6px; }
quelle
Sie könnten ein
<span>
anstelle eines verwenden<h1>
.quelle
<h1>
mit CSS-Eigenschaft zu verwendendisplay: inline-block
.