Task 1

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Grid: task 1</title>
    <style>
        body {
            background-color: #fff;
            color: #333;
            font: 1.2em / 1.5 Helvetica Neue, Helvetica, Arial, sans-serif;
            padding: 1em;
            margin: 0;
        }

        .grid > * {
            background-color: #4D7298;
            border: 2px solid #77A6B6;
            border-radius: 0.5em;
            color: #fff;
            padding: 0.5em;
        }
        .grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 20px;
        }
    </style>

</head>
<body>
    <div class="grid">
        <div>One</div>
        <div>Two</div>
        <div>Three</div>
        <div>Four</div>
    </div>
</body>
</html>

 

 

Task 2

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Grid: task 2</title>    
    <style>
        body {
            background-color: #fff;
            color: #333;
            font: 1.2em / 1.5 Helvetica Neue, Helvetica, Arial, sans-serif;
            padding: 1em;
            margin: 0;
        }

        .grid > * {
            border-radius: .5em;
            color: #fff;
            padding: .5em;
        }

        .grid {
            display: grid;
            grid-template-columns: 1fr 1fr 1fr 1fr;
            grid-template-rows: 100px 100px 100px;
            gap: 10px;
        }

        .item1 {
            background-color: rgba(74, 102, 112, .7);
            border: 5px solid rgba(74, 102, 112, 1);
            grid-column: 1 / 4;
            grid-row: 1 / 3;
        }

        .item2 {
            background-color: rgba(214, 162, 173, .7);
            border: 5px solid rgba(214, 162, 173, 1);
            grid-column: 2 / 5;
            grid-row:  2 / 4;
        }

        /* Additional question */

        .item1 {
            order: 1;
        }
    </style>
</head>

<body>
    <div class="grid">
        <div class="item1">One</div>
        <div class="item2">Two</div>
    </div>
</body>
</html>

 

 

Task 3

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Grid: task 3</title>
    <link rel="stylesheet" href="../styles.css">
    <style>
        body {
            background-color: #fff;
            color: #333;
            font: 1.2em / 1.5 Helvetica Neue, Helvetica, Arial, sans-serif;
            padding: 1em;
            margin: 0;
        }

        .grid > * {
            background-color: #4D7298;
            border: 2px solid #77A6B6;
            border-radius: .5em;
            color: #fff;
            padding: .5em;
        }

        .grid {
            display: grid;
            gap: 20px;
            grid-template-columns: 1fr 2fr;
            grid-template-areas: 
                "one one"
                "two three"
                ". four";
        }

        .one {
            grid-area: one;
        }

        .two {
            grid-area: two;
        }

        .Three {
            grid-area: three;
        }

        .four {
            grid-area: four;
        }
        </style>
</head>

<body>
    <div class="grid">
        <div class="one">One</div>
        <div class="two">Two</div>
        <div class="three">Three</div>
        <div class="four">Four</div>
    </div>
</body>
</html>

 

 

Task 4

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Grid and Flex: task 4</title>
    <style>
        body {
            background-color: #fff;
            color: #333;
            font: 1.2em / 1.5 Helvetica Neue, Helvetica, Arial, sans-serif;
            padding: 1em;
            margin: 0;
        }

        .card {
            display: grid;
            grid-template-rows: 200px min-content;
        }

        .card > img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .tags {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        .tags > * {
            background-color: #999;
            color: #fff;
            padding: 0.2em 0.8em;
            border-radius: 0.2em;
            font-size: 80%;
            margin: 5px;
        }

        .container {
            display: grid;
            gap: 10px;
            grid-template-columns: repeat(3, 1fr);
        }

        .tags {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="card">
            <img src="balloons1.jpg" 
                alt="a single red balloon">
            <ul class="tags">
                <li>balloon</li>
                <li>red</li>
                <li>sky</li>
                <li>blue</li>
                <li>Hot air balloon</li>
            </ul>
        </div>
        <div class="card">
            <img src="balloons2.jpg" 
                alt="balloons over some houses">
            <ul class="tags">
                <li>balloons</li>
                <li>houses</li>
                <li>train</li>
                <li>harborside</li>
            </ul>
        </div>
        <div class="card">
            <img src="balloons3.jpg" 
                alt="close-up of balloons inflating">
            <ul class="tags">
                <li>balloons</li>
                <li>inflating</li>
                <li>green</li>
                <li>blue</li>
            </ul>
        </div>
        <div class="card">
            <img src="balloons4.jpg" 
                alt="a balloon in the sun">
            <ul class="tags">
                <li>balloon</li>
                <li>sun</li>
                <li>sky</li>
                <li>summer</li>
                <li>bright</li>
            </ul>
        </div>
    </div>
</body>
</html>

 

도움 받은 곳

https://github.com/mdn/css-examples/blob/main/learn/tasks/grid/marking.md

 

 

깨달은 것

min-content 사이즈 키워드는 본질적인 최소 너비를 나타낸다. Task 4의 경우, div.card의 직계 자식이 <img>와 <ul> 두개이다. <img>의 row 사이즈는 200px로 설정하고 ul의 사이즈를 min-width로 설정하여 ul의 텍스트를 최소 너비로 나타내는 것이다. 

 

min-width를 설정하지 않았을 경우 display:grid로 설정된 부모 요소에 따라서 세번째 <ul>의 row 사이즈가 나머지 <ul>의 사이즈에 맞게 커진다.

출처 : https://developer.mozilla.org/en-US/docs/Web/CSS/min-content#specifications

 

 

 

'CSS > MDN 문제 풀이' 카테고리의 다른 글

Test your skills: Positioning  (0) 2022.11.15
Test your skills: Floats  (0) 2022.11.15
Test your skills: Flexbox  (0) 2022.11.14
Test your skills: Tables  (0) 2022.11.09
Test your skills: Images and form elements  (0) 2022.11.08

+ Recent posts