css nth frage

D0bby

Cadet 3rd Year
Registriert
Aug. 2023
Beiträge
55
hi

bin gerade ein wenig am testen und üben - und versuche mich gerade an :nth.
Leider scheint da noch ein ? zu sein welches ich mir noch nicht erklären kann (macht googlen auch schwer).

Was aktuell funktioniert ist für ein Grid Layout:

HTML:
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="test4.css">
    <title>Test 4</title>
</head>

<body>

  
    <div class="wrapper">

        <div class="header">
            <a href="#"><img src="src/img/webdesign-logo.png" alt="Logo der Firma Webdesign"></a>
            <nav class="navbar">
                <ul>
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Über uns</a></li>
                    <li><a href="#">Facebook</a></li>
                    <li><a href="#">Impressum</a></li>
                </ul>
            </nav>
        </div>

        <div class="module1"><h2>Test1!</h2><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestias excepturi, dolore quidem cum similique, repellat unde ducimus vel soluta placeat dolores esse consequuntur architecto ratione earum error inventore, aliquid omnis.</p></div>
        <div class="module2"><h2>Test2</h2><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestias excepturi, dolore quidem cum similique, repellat unde ducimus vel soluta placeat dolores esse consequuntur architecto ratione earum error inventore, aliquid omnis.</p></div>
        <div class="module3"><h2>Test3</h2><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestias excepturi, dolore quidem cum similique, repellat unde ducimus vel soluta placeat dolores esse consequuntur architecto ratione earum error inventore, aliquid omnis.</p></div>


    <footer>
        <div class="footer"><ul>
            <li><a href="#">link1</a></li>
            <li><a href="#">link2</a></li>
            <li><a href="#">link3</a></li>
        </ul></div>
    </footer>
      
    </div>

</body>
</html>

CSS:
* {
    box-sizing: border-box;
}

html, body {
    margin: 0;
    padding: 0;
}

.module1 {
    grid-area: main1;
}

.module2 {
    grid-area: main2;
}

.module3 {
    grid-area: main3;
}

.wrapper {
    display: grid;
    grid-template-areas:
    "header header header"
    "main1 main2 main3"
    "footer footer footer";
    max-width: 1100px;
    margin: 0 auto;
}

.header {
    grid-area: header;
    height: 60px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: blueviolet;
}

.header > a > img {
    height: 60px;
    width: auto;
}

.navbar > ul > li {
    display: inline-block;
}

footer {
    grid-area: footer;
    justify-self: self-end;
}

.header > a > img {
    height: 40px;
    width: auto;
}




Wenn ich jetzt module1-3 nicht einzeln als Klasse deklarieren möchte sondern via :nth bekomme ich es nicht hin und er knallt mir alles in eine row (alle module).

Meine Idee war die module in ein div mit der Klasse test und dann die einzelnen module via .test:nth-child(1) usw auszuwählen.
Leider landet dann alles in main2 Grid
Code:
        <div class="test">
            <div class="module"><h2>Test1!</h2><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestias excepturi, dolore quidem cum similique, repellat unde ducimus vel soluta placeat dolores esse consequuntur architecto ratione earum error inventore, aliquid omnis.</p></div>
            <div class="module"><h2>Test2</h2><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestias excepturi, dolore quidem cum similique, repellat unde ducimus vel soluta placeat dolores esse consequuntur architecto ratione earum error inventore, aliquid omnis.</p></div>
            <div class="module"><h2>Test3</h2><p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Molestias excepturi, dolore quidem cum similique, repellat unde ducimus vel soluta placeat dolores esse consequuntur architecto ratione earum error inventore, aliquid omnis.</p></div>
        </div>








.test:nth-child(1) {
    grid-area: main1;
}

.test:nth-child(2) {
    grid-area: main2;
}

.test:nth-child(3) {
    grid-area: main3;
}
 
Zuletzt bearbeitet:
oh man.

VIELEN DANK! So lange nach gesucht :)
Ergänzung ()

zu früh gefreut ; bleibt alles im Main1 Grid

CSS:
.test .module:nth-child(1) {
    grid-area: main1;
}

.test .module:nth-child(2) {
    grid-area: main2;
}

.test .module:nth-child(3) {
    grid-area: main3;
}
Ergänzung ()

Der Selektor an sich funktioniert wohl, da ich mit diesen den background der einzelnen .module einfärben kann. Nur das einteilen in die grid-area will er dann nicht richtig machen :/
 
Zuletzt bearbeitet:
nein - der .wrapper hat das Layout Grid und in diesen versuch ich nun die module rein zu packen.
 
Ah, jetzt seh ich erst wie du das eigentlich implementieren willst. Die Selektion per :nth-child() kannst du nicht zusätzlich mit einer Klasse einschränken, die geht "global" über alle children. In dem .wrapper oben sind die .module Elemente jeweils das 2., 3. und 4. child.

edit: Und dem .test Element fehlt display grid, der default val ist bei divs immer block, so geht das natürlich nicht.
 
  • Gefällt mir
Reaktionen: D0bby
Ich danke dir für deine Geduld :)

Aber selbst so bekomme ich es nicht hin:
https://jsfiddle.net/7j3u80wx/
Ergänzung ()

habs - mit .wrapper .module.... ging es dann <3
 
  • Gefällt mir
Reaktionen: floq0r
Zurück
Oben