현재도 사용되는 레이아웃

  • CSS 레이아웃 : float, position을 사용. 모바일을 통한 멀티 스크린에 대응하는 디자인을 만들기에 적합하지 않음
  • Flexbox 레이아웃 : (1차원) x축 y축 방향으로 요소를 배치. 그리드 프레임 워크 Bootstrap에서 사용하는 기반의 기술
  • Grid 레이아웃 :  (2차원)행/열 격자 구조에 요소를 자유롭게 배치. 반응형 웹 레이아웃에 대응.

 

 

Grid

  • 2차원 배열(세로 열, 가로 행)의 레이아웃
  • 가로, 세로 정렬이 모두 필요한 경우 사용
  • IE 10, 11등은 부분 지원. 이때문에 크로스 브라우징을 해야 할 수 있음

 

 

grid-template

  • grid-template-row : 행의 형태를 정의(세로)
  • grid-template-column : 열의 형태를 정의(가로)
ROW(행)
Column(열)    
   
   

 

 

 

간격 정의

 

gap : row-gap    column-gap

    ex) gap : 10px 20px;

Grid Gutters : 로우, 컬럼 사이의 간격. grid-gap 속성으로 제어

 


사용 예시

 #grid { 
 	display:grid; 
    grid-template-rows: 300px 1fr auto; 
    grid-template-columns : repeat(3, 1fr 2fr);
    gap: 10px;
 }

 

 

 

 

아이템의 크기 설정

.area-a {
    /* row 첫 줄부터 마지막 줄 전부 */
    grid-row: 1 / -1;
    /* column 1번째 줄부터 5칸의 영역을 차지 */
    grid-column: 1 / span 5;
}

.area-b {
    grid-row: 1 / 4;
    /* column 첫 줄부터 5번째 줄까지 */
    grid-column-start: 1;
    grid-column-end: 5;
}

 

minmax(최소크기, 최대크기) : 최대값에만 fr을 쓸 수 있다.

    +) 컨테이너의 크기를 %로 줄 수 있다

grid-auto-rows(columns) : 크기 미리 주기

 

 

 

 

 

 

이름으로 크기 지정

grid-area : item에 이름 붙이기

grid-template-areas : 이름 붙인 것으로 영역 지정

 

<body>
    <div class="wrap">
        <div class="red"></div>
        <div class="blue"></div>
        <div class="green"></div>
    </div>
</body>
.wrap {
    display: grid;
    background-color: black;
    width: 500px;
    height: 500px;
    grid-template-areas:
        "red blue blue"
        /* . 은 빈칸으로 둔다 */
        "red . green";
}

.red {
    grid-area: red;
    background-color: red;
}

.blue {
    grid-area: blue;
    background-color: blue;
}

.green {
    grid-area: green;
    background-color: green;
}

 

 

 

 

transition

    속성 값의 변화를 일정 기간에 걸쳐 일어나게 하는 것

  • property : 어떤 transition에 대해 속성을 적용할지
  • duration : transition 발생하는 지속 기간
  • timing-function : 베지어 곡선 모델로 어떤 속도를 표현할 지
  • delay : transition 얼마나 기다릴 것인지(초단위)

 

transform 

    요소를 변형시킴

  • translate : 이동
  • scale : 확대, 축소
  • rotate : 회전
  • skew : 기울이기

 

 

 

 

 

 

+) 가짜 이미지 삽입시 사용할 사이트

https://picsum.photos/

 

id/<int:id>/width/height/

https://picsum.photos/id/2/200/300

'css' 카테고리의 다른 글

[CSS] display  (0) 2023.04.22
[CSS] Flexbox  (0) 2023.03.17
[CSS] position  (0) 2023.03.16
HTML와 CSS  (0) 2023.02.27

Display

 

 

바깥쪽

block inline
무조건 한 줄을 차지 기본적으로 컨텐츠 영역만큼만 차지
width, height, margin, paddin 지정 가능 1. width, height 지정 불가능
2. margin 좌우만 적용
3. padding : 시작적 영역 - 상하좌우, 실제 영역 - 좌우
<div>, <h1~6>, <header> 등 <span>, <a>, <button> 등

 

 

 

DOM (Document Object Model)

  • 웹 문서를 객체로 만든 인터페이스 모델

         ex) A 태그

                └ (아래) B 태그

                        └ (아래) C 태그     객체로 옮겨놓은 인터페이스

  • 자바스크립트 등으로 수정할 수 있는 API 제공 (ex. getElementById, querySelector)
  • 자바스크립트가 읽고 조작할 수 있는 객체의 형태로 HTML 문서를 바꾼 것

 

 

 

Event 

    사용자의 동작 같은 걸로 발생한 것

    ex) onclick, hover 등

 

 

 

 

overflow

    요소 내부의 컨텐츠들이 요소를 감싸고 있는 영역보다 커졌을 때 어떻게 나타낼 것인가?

    보통 컨테이너의 높이를 설정하거나 white-space를 nowarp으로 설정

  • visible
  • hidden
  • clip
  • scroll : 영역을 넘어가지 않아도 무조건 스크롤을 보여줌
  • auto : 브라우저가 결정. 영역 안이면 visible, 넘어가면 scroll

 

 

 

+) 안쪽

 

flex, grid, table, flow-root, flow, ruby 등

'css' 카테고리의 다른 글

[CSS] Grid  (0) 2023.04.23
[CSS] Flexbox  (0) 2023.03.17
[CSS] position  (0) 2023.03.16
HTML와 CSS  (0) 2023.02.27

 

Flexbox

  (일차원배열) 배치 방향을 설정. 기본정렬 row. 

   display block 한 줄을 차지하는 요소들 중 너비, 높이를 가질 수 있는 요소들을 좌우로 정렬한다고 했을 때 주로 사용한다.

 

 

개념

    container : item을 감싸는 부모요소. display, flex-flow, flex-direction, flex-wrap, justify-content, align-content, align-items 등의 속성을 사용할 수 있음

    item : order, flex, flex-grow, flex-shrink, flex-basis, align-self등의 속성을 사용할 수 있음

 

예시 html

<!DOCTYPE html>
<html lang="en">
<link rel="stylesheet" href="index.css">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="flex-container">
        <div class="flex-item">A</div>
        <div class="flex-item">B</div>
        <div class="flex-item">C</div>
    </div>
</body>
<script>
    console.log('스크립트')
</script>

</html>

 

 

flex-grow

  • 할당 가능한 공간의 정도
  • 형제 아이템들이 모두 동일한 flex-grow(공간)값을 갖음
  • 형제 아이템들이 다른 경우

ex) 3개의 div 중 첫 번째 값만 flex-grow : 2; 나머지 값이 flex-grow : 1을 가질 경우

          첫 번째 값이 2번째 혹은 3번째 div의 2배의 영역을 차지한다.

.flex-container {
    display: flex;
    background-color: antiquewhite;
    padding: 10px;
}

.flex-item {
    background-color: red;
    border: 1px solid black;
    flex-grow: 1;
    width: 150px;
}

.flex-item:nth-child(1) {
    flex-grow: 2;
}

 

 

 

flex-shrink

  • 아이템의 크기가 container보다 클 때 사용
  • 설정된 값에 따라 크기가 축소
  • flex-shrink : 0 = 줄어들지 않겠다.
.flex-container {
    display: flex;
    background-color: antiquewhite;
    padding: 10px;
    width: 300px;
}

.flex-item {
    background-color: red;
    border: 1px solid black;
    flex-grow: 1;
    width: 150px;
}

/*container 크기 300px에 맞게 flex-item이 줄어듬*/


.flex-item {
    background-color: red;
    border: 1px solid black;
    flex-grow: 1;
    width: 150px;
    flex-shrink: 0;
}
/*container 영역을 벗어나더라도 150px을 유지함*/

 

 

 flex-basis

  • 아이템의 초기 크기
  • 상하 정렬일 경우 높이값
  • 좌우 정렬일 경우  너비값
  • 'auto가 아니라명 width, height 보다 flex-basis가 우선

 

+) reverse 속성

flex-direction : column-reverse 아래부터 배치함

 

 

한꺼번에 표현하기

flex : flex-grow   flex-shrink   flex-basis 형태로 사용할 수 있다.

flex: 1 0 100px 

 

 

 

**inline flex와 flex 차이

    flex : 컨테이너가 수직으로 쌓임 (Block 특성)

    inline-flex : 컨테이너가 수평으로 쌓임 (Inline 특성)

 

 

    기본축 (Main Axis) :요소를 정렬하는 축

    교차축 (Cross Axis) : 기본축에 수직인 방향

 

justify-content : 기본축 기준으로 정렬

    space-around : 요소들 사이에 모두 같은 간격의 공간이 생김

    space-between : 요소를 양끝에 배치하고 사이에 동일한 간격으로 배치

 

align-items : 교차축을 기준으로 정렬

 

요소가 넘칠 때

    flex-wrap : 기본축 정렬 요소가 넘칠때 교차축 정렬으로 넘어가서 배치

    flex-grow : 얼마나 늘릴지를 설정. 요소를 늘려서 빈 공간을 꽉채우고 싶을 때. 숫자에 비례해 늘어남. 

    flex-shrink : 얼마나 줄일지를 설정. 값이 클수록 더 많이 줄어듬

       *빈공간을 채우고 싶을 때 flex-grow:1, 요소의 크기를 고정하고 싶을 때 flex-shrink:0

    flex-basis : 플렉스 아이템의 초기 크기를 지정

 

gap : 세로, 가로 (margin 순서랑 같음)

 

 

 

'css' 카테고리의 다른 글

[CSS] Grid  (0) 2023.04.23
[CSS] display  (0) 2023.04.22
[CSS] position  (0) 2023.03.16
HTML와 CSS  (0) 2023.02.27

position 속성

    1. static: 기본값

    2. relative : 지정위치에서 변화를 주고 싶을 때 사용.

                           값을 주면 지정 위치보다 영역 안쪽으로 이동

                           영역 밖으로 이동하기 위해서는 값을 음수로 지정해야 한다

    3. absolute : 조상 요소에서 상속을 받아와 변화를 주고 싶을 때 사용

                             ※가장 가까이 positioning 된 요소(static이 아닌 요소)에 상속※

    4. fixed : 브라우저 화면에 상속

    5. sticky : 시작은 static과 동일

                       스크롤하다가 지정 위치에 닿으면 fixed처럼 붙어버림

                       부모요소가 밖으로 벗어나지 않음

                       예시) body의 height가 1000이고 부모요소가 500일때, 자식요소는 500까지 작동하다가 사라짐

 

      *positioning : static이 아닌 다른 요소로 지정해야 함

 



* X = 기본 자리. 원래있어야 할 영역

 

relative 와 margin의 차이

    relative를 사용하면 다른 영역과 상관없이 relative가 X만 이동.

    반면에 margin은 다른 영역과 겹치면 전체적으로 이동.

 

 absolute

    넓이를 지정하지 않으면 내용물만큼의 넓이로 세팅 없다면 숨겨짐.

    X를 차지하지 않고 동일선상의 relative도 absolute를 무시

 relative

    넓이를 지정하지 않으면 부모만큼 넓이를 가짐

 fixed

    주로 움직이지 않는 헤더등에 사용.

    스크롤을 따라 움직이지 않음. 요소를 꽉 채우기 위해서 너비를 100% or inset 0.

    얘도 absolute와 마찬가지로 relative가 무시해버림

 

inset 0 : 모든 방향을 0px로 받음. absolute의 경우 부모 요소의 100%를 받아옴.

 

아래는 sticky가 움직이는 형식을 보여준다.



 overflow : 자식요소가 부모요소의 범위를 초과할 때 처리하는 값을 결정

       hidden : 부모요소의 범위를 넘어가는 자식 요소의 부분은 보이지 않도록 처리

       scroll : 요소가 넘치지 않아도 스크롤바가 보임

       auto : 요소가 넘칠 때만 요소를 숨기고 사용자가 확인할 수 있도록 스크롤 바로 표시



 

Z-index : 앞뒤의 순서 정하기. 레이어랑 비슷. 숫자가 높을수록 앞에 배치. 숫자는 양수, 음수 모두 사용 가능. 

  예외1. 만약 숫자가 같을 경우 아래쪽 태그가 앞에 보임

  예외2. z-index가 원하는 대로 동작하지 않을 때 90% 확률로 쌓임 맥락(stacking context)이 만들어졌기 때문

    ex) header태그와 쌓임 맥락이 있는 main태그 => header가 반드시 main 태그 앞쪽으로 보임

 예외3. auto와 0의 차이는 쌓임 맥락을 만드느냐 아니냐

 

'css' 카테고리의 다른 글

[CSS] Grid  (0) 2023.04.23
[CSS] display  (0) 2023.04.22
[CSS] Flexbox  (0) 2023.03.17
HTML와 CSS  (0) 2023.02.27

HTML 기본
    <div> : 구역을 나눔
    <p> : 문단을 나눔
    <ul> <li> : 리스트(점)
    <span> : 글자의 일부를 구역으로 지정
    <input> : 한 줄 입력
    <textarea> : 긴 글 입력

 



CSS
  1. image
      background-image: url("");
      background-position: center;
      background-size: ;

  2. margin과 padding
      margin : 바깥 여백

.wrap {
        width: 300px;
        margin: 20px auto 0px auto;
        /*위에부터 시계방향*/
    }

      padding : 안쪽 여백

 

 



FONT

    https://fonts.google.com/?subset=korean
    select + 버튼 → <link herf = >로 된 마지막 줄 복사 → title 아래 붙여넣기 → css rules to specify families 내용 복사 → style * { } 괄호 안에 붙여넣기

 

 


스타일 시트 연결

<link rel="stylesheet" type="text/css" href="스타일시트명.css">

 

 


부트스트랩

    https://getbootstrap.com/docs/5.0/components/buttons/

더보기
<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
            crossorigin="anonymous"></script>

    <title></title>
</head>

<body>
<h1></h1>
</body>

</html>

 


정렬하기 

. align {
	display: flex;
    flex-direction: column; /*세로정렬 : column, 가로정렬 : row*/
    justify-content: center;
    align-items: center;
}

 

 

 

버튼 꾸미기

더보기
    .wrap > button {
        color: white;
        height: 50px;
        width: 150px;
        margin-top: 10px;

        border-radius: 50px;
        border: 1px solid white;
        background-color: transparent;
    }
    .wrap > button:hover {
        border: 2px solid white;
    }
    
    /*background-color 투명, 마우스가 hover되면 border 크기 굵게*/

 

 

이미지 어둡게 하기

더보기
.image {background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url("")}
/*0.5 수치를 조정하면 밝거나 어둡게 만들 수 있음*/

 

 

이모티콘 모음

    https://kr.piliapp.com/facebook-symbols/

 

 

 

post box

더보기
    .mypost {
        max-width: 500px;
        width: 95%;
        height: 350px;
        box-shadow: 0px 0px 3px 0px gray;
        margin: 20px auto 0px auto;
        padding: 20px;
    }
    .btn_post {
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
        margin: 20px auto 20px auto;
    }
    .btn_post > button {
        margin-right: 10px;
    }
    
    /*NEW
    box-shadow 
    max-width와 width를 이용해 모바일도 보기 편하게 세팅 
    div안에 버튼은 div_stylesheet > button으로 세팅가능*/

 



단축키
ctrl + alt + L : 탭 자동 맞춤
shift + tab : 왼쪽으로 탭

ctrl + / : 주석달기

'css' 카테고리의 다른 글

[CSS] Grid  (0) 2023.04.23
[CSS] display  (0) 2023.04.22
[CSS] Flexbox  (0) 2023.03.17
[CSS] position  (0) 2023.03.16

+ Recent posts