Hallo Wishpacker,
das Grid-Layout operiert im Normalfall nur mit den direkten Kind-Elementen des Grid-Containers. Die Ausnahmen erzähle ich später.
D.h. wenn Du dieses HTML hast:
<div class="kategorie-header">
<h2 class="subheading-category">HowTo</h2>
<div class="category-desc">
<img src="howto.png">
<p>Other HowTo's</p>
</div>
</div>
und das kategorie-header DIV das Grid ist, dann kannst Du das h2 und das category-desc DIV im Grid positionieren - das sind direkte Kind-Elemente des grid-Containers. Das img und p Element dagegen nicht. Schau in mein HTML, das habe ich "flach" gemacht, d.h. h2, img und p sind alle direkte Kind-Elemente des kategorie-header DIV.
Deine grid-start/-end Angaben für's img sind schon richtig, aber weil das img ein Enkel des Grid ist, greift das nicht.
Zu den Ausnahmen:
-
display:contents. Wenn dein category-desc DIV die CSS Eigenschaft display:contents hätte, würde es gehen. Dann wird das DIV nämlich beim Layouten behandelt, als wäre es nicht da. Es ist zwar im DOM, aber nicht im Layout. Hätte es Rahmen oder Hintergrund, würden die nicht dargestellt. Sowas macht man aber nur, wenn es unbedingt nötig ist.
-
Subgrid - das kannst Du in unserem Wiki oder bei Mozilla nachlesen, das ist nicht produktionsreif, weil es nur im Firefox läuft.
Also - wenn es keinen zwingenden Grund gibt, das category-desc DIV zu verwenden, dann lass es weg.
Ein anderer Ansatz wäre, auf das Grid ganz zu verzichten und das Fragezeichenbild als background-img des kategorie-header zu setzen. Entweder über ein gefloatetes ::before-Element:
<header class="kategorie-header">
<h2>HowTo</h2>
<p>Other HowTos</p>
</header>
.kategorie-header {
overflow:hidden;
}
.kategorie-header::before {
content: "";
background-image: url(howto.png);
float: left;
width: 75px;
height: 75px;
margin-right: 0.5em;
}
Sowas ist nötig, wenn das Bild noch eine Hintergrundfarbe bekommen soll, aber wenn ich dein Zielbild anschaue, ist das nicht der Fall.
Alternativ geht auch ein background-image des .kategorie-header selbst. Gleiches HTML, und dieses CSS:
.kategorie-header {
background: url(howto.png) no-repeat left center;
padding-left: 85px;
min-height: 75px;
}
Wenn Du die Bildgröße nicht in CSS meißeln willst, dann setze eine Hintergrundgröße, z.B. diese:
background: url(howto.png) no-repeat left center / 4em auto;
und dann kannst Du min-height und padding-left guten Gewissens in em angeben.
Rolf
--
sumpsi - posui - obstruxi