본문 바로가기
이과/HTML,CSS,JS

CSS의혁명,FLEX

by 코딩초밥 2021. 5. 2.
반응형

안녕하세요 코딩초밥입니다 ㅇㅅㅇ

웹앱을 만들려고했을때 저는 처음에 배치를 하는 과정이

안드로이드스튜디오와 달라서 힘들었는데요!(사실 실력이 부족..)

CSS로 콘텐츠를 배치를 하려면 일일이 하나씩 배치를 하는 느낌이라서 꽤 힘들었습니다.

허나 이 FLEX 기능은 안드로이드스튜디오처럼

자식요소들의 배치를 부모요소가 결정을 합니다(한줄기의희망)

자 같이 알아보도록할까요?

안드로이드 스튜디오에서 작업하시다 오신분들에게 설명을 빠르게 드리기위해서는

방향지정에 관한 키워드입니다 눈에 익으시죠? 이렇게 생각하시면됩니다.

orientation=flexdirection

horizontal= row

vertical= colcumn

display의 한 요소인 flex는

자식요소들을 자동으로 inline-blox요소로 바꿉니다. inline인 요소들도 blox요소처럼되서

한칸을 먹는게아니라 옆으로 이동한다는 이야기입니다.

기본적으로 자식의 배치방향은 row입니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flexstyle</title>

    <style>
        body{
            margin: 0; padding: 0;
            font-family: Arial, Helvetica, sans-serif;
        }

        /* header요소 [클래스선택자를 사용함으로서 나중에
        다른요소에 같은 스타일 지정할떄 용이해짐] */
        .header{
            background-color: #1abc9c;
            height: 160px;
            display: flex;
            /* oreantation */
            flex-direction: column;
            /* 위아래중에 센터 */
            justify-content: center;
            /* 좌우로 센터 */
            align-items: center;
            /* justify-content: center;
            align-items: center; */
            color: white;
        }
        /* navbar style */
        .navbar{
            background-color: #333333;
            display: flex;
            
            /* flex를 display해놓으면 안에있는녀석들이
            inline으로 변해서 */
        }
        
        .navbar a{
            color: white;
            padding: 14px 20px;
            text-decoration: none;
            text-align: center;
        }
        .navbar a:hover{
            color: tomato;
            background-color: wheat;
        }

        /* 콘텐츠 영역(2개 영역: aside,section) */
        /* 좌우로 배치되도록 */
        .container{
            display: flex;
            /* 브라우저 사이즈가 작아지면 밖으로나갈수도있으니까 
            자동 줄바꿈*/
            flex-wrap: wrap;

        }
        /* 왼쪽사이드 */
        #side{
            flex-grow: 3;/*row방향으로 너비가 30%의비율*/
            background-color: seagreen;
            padding: 20px;
        }
        /* 본문영역 */
        .main{
            flex:7;
            padding: 20px;
            background-color: white;
        }
        .fackimg{
            background-color: turquoise;
            width: 100%;
            padding: 20px;
        }

        .footer{
            padding: 20px;
            background-color: tomato;
            text-align: center;
        }

        /* 화면너비가 700보다 작을때{}안의 스타일 적용 */
        @media screen and (max-width: 700px){
            .container,.navbar{
                flex-direction: column;
            }

        }     
        





    </style>
</head>
<body>
    <!-- 1.note:사이트를 열었을떄 알림사항들을 보여주는 영역 -->
    <div style="background-color: khaki; padding: 5px;">
        <h4 style="text-align: center;">브라우저 사이즈를 조절하면 반응형웹 효과있습니다</h4>
    </div>

    <header class="header">
        <h1>My Website</h1>
        <p>With a <strong>flexible</strong>layout</p>
    </header>

    <!-- Navigation bar -->
    <nav class="navbar">
        <a href="">link</a>|
        <a href="">link</a>|
        <a href="">link</a>|
        <a href="">link</a>|
    </nav>
    <!-- aside영역과 section영역 2개를 옆으로 배치하기 위해 -->
    <!-- flex스타일로 지정 row방향 -->
    <div class="container">
        <aside id="side">
            <h2>About Me</h2>
            <h5>photo of me:</h5>
            <div class="fackimg" style="height: 200px;">Img</div>
            <p>Some text about me</p>

            <h3>More Text</h3>
            <p>This is more text</p>
            <div class="fackimg" style="height: 60px;">image</div><br>
            <div class="fackimg" style="height: 60px;">image</div><br>
            <div class="fackimg" style="height: 60px;">image</div><br>
        </aside>


        <section class="main">
            <h2>TITLE HEADING</h2>
            <h5>title description, Dec 7, 2020</h5>
            <div class="fackimg" style="height: 200px;">image</div>
            <p>sometext..</p>
            <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Consequuntur unde beatae cupiditate maxime necessitatibus. Laudantium rerum perspiciatis, quaerat ipsa illum mollitia maxime vero voluptates nisi sed tenetur. Inventore, reprehenderit a.</p>
            
            <h2>TITLE HEADING</h2>
            <h5>title description, Dec 7, 2020</h5>
            <div class="fackimg" style="height: 200px;">image</div>
            <p>sometext..</p>
            <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Consequuntur unde beatae cupiditate maxime necessitatibus. Laudantium rerum perspiciatis, quaerat ipsa illum mollitia maxime vero voluptates nisi sed tenetur. Inventore, reprehenderit a.</p>
     
       
        </section>


    </div>
    <!-- footer -->
    <div class="footer">
        <h2>footer</h2>
    </div>
</body>
</html>

반응형

'이과 > HTML,CSS,JS' 카테고리의 다른 글

HTML_오디오,비디오 div, span  (2) 2021.05.06
반응형 웹디자인.  (5) 2021.05.03
HTML_줄바꾸기,헤딩,수평선,리스트  (0) 2021.05.01
HTML에 대한 이해  (1) 2021.04.30
CSS_CSS에 대한 이해  (0) 2021.04.30

댓글