반응형
반응형

📝var vs let vs const (호이스팅, TDZ)

 

진행하기 전에 호이스팅 및 TDZ라는 개념을 알아야하는데 호이스팅이란 스코프 단위로 선언한 변수를 최상위로 올리는 단계를 의미하고 TDZ(Temproal Dead Zone)의 경우 값을 사용할 수 없는 영역이라고 생각하면 된다.

 

각 변수 타입에 따른 값 할당에 대한 단계가 존재한다

 

var 변수 (호이스팅 작동)

  1. 선언 및 초기화 단계 [var name = 'Mike'을 읽고 var name;으로 호이스팅 시켜 선언 및 초기화(undefined) 작업]
  2. 할당 단계 [var name = 'Mike' 실행 단계에 오면 호이스팅 시킨 변수에 값을 할당한다]
console.log(name); //undefined [호이스팅으로 사용 가능]

var name = 'Mike'
console.log(name); // Mike
var name = 'Bob'   // 이런식으로 재할당 가능
console.log(name); // Bob

/** ----- var는 블록 스코프 밖에서도 사용 가능 ----- **/
const age = 30;

if(age > 19){
    var txt = '성인';
}

console.log(txt); // 성인

또한 var name = 'Bob'으로 재할당이 가능하다 이로 인해 일반적으로 작동하는 프로그래밍 단계에서 이상한 현상이 발견 될 수 있고 또한 var는 블록스코프 내에서 선언한 것도 cosnt와 let하고 다르게 사용이 가능하기 때문에 생각한대로 프로그램 로직이 안 돌 수 있기 때문에 var 사용을 지양한다 [다만 함수 스코프 내에서는 밖에서 사용 불가능]

 

 

let변수 (호이스팅 작동 + TDZ에 선언)

  1. 선언 단계     [let name = "Mike"를 읽고 let name;으로 호이스팅 시키지만 TDZ에 선언 되어 사용 불가]
  2. 초기화 단계 [let name = "Mike" 실행 단계에 오면 호이스팅 시킨 변수에 undefined으로 초기화]
  3. 할당 단계     ['Mike'라는 값을 할당하게 된다]
console.log(name); // Error 발생 (TDZ에 선언 되어서 사용 불가)
let age;

let name = "Mike";
let name = "Bob";  // Error 발생 (Identifier 'name' has already been declared)

 

 

const 변수 (호이스팅 작동 + TDZ에 선언)

  1. 선언 + 초기화 + 할당 [const name = "Mike"를 읽고 호이스팅 후 TDZ에 선언한다]
console.log(name); // Error (Cannot access 'name' before initialization)
const name = "Mike";

name = "Bob";      // Error (Assignment to constant variable)

const age;         // Error 반드시 선언 즉시 값 할당 필요

 

📝null

null이라는 값이 할당된 경우

 

📝undefined

선언은 되었지만 아무런 값도 할당되지 않은 경우

 

📝NaN

경우 문자를 숫자로 나누려는 등의 행동

 

📝지역 변수, 전역변수

function car(){
	var carName = "matiz";
}
console.log(carName); // 에러 carName이 지역변수이기 때문에

var carName ="matiz";
console.log(carName); // matize 전역변수를 호출했기 때문에 가능하다.

// 지역변수 전역변수

지역변수란 그 지역에서만 쓸 수 있는 걸로 function car(){ var carName ="matize } carName이 function안에

선언되어있죠? 이처럼 한정된 중괄호 지역에서 쓸 수 있는 게 지역변수 입니다. 그리고 어디서나 쓸 수 있는게 전역변수입니다.

 

 

 

 

🔗 참고 및 출처

https://www.youtube.com/watch?v=ocGc-AmWSnQ&list=PLZKTXPmaJk8JZ2NAC538UzhY_UNqMdZB4

반응형
반응형

📝인라인 자바스크립트

<h1 onclick="alert('ok!')">인라인 방식 자바스크립트</h1>
<h1>내부 자바스크립트</h1>

 

📝내부 자바스크립트

<body>
  <h1>인라인 방식 자바스크립트</h1>
  <h1 id="internal">내부 자바스크립트</h1>

<script>

  var internal = document.getElementById('internal');

  internal.onclick = function(){

  alert("ok!");

  }
</script>
</body>

 

 

📝외부 자바스크립트

<head>
	<script src="external.js"></script>
</head>
<body>
	<h1>외부 자바스크립트</h1>
</body>

 

반응형
반응형

시멘틱태그를 왜 쓰냐면 다른 사람이 작업할 때 보기 쉽고

내가 유지보수할 때 하기 쉬우라고 만들어놓은 거라고 생각하시면됩니다.

📝HTML5 <section> 태그

문서에서 특정 구역을 나타낼때 쓰입니다.

 

📝HTML5 <article> 태그

말 그대로 기사에 관련된 거라든가 그와 유사한걸 나타날때 쓰입니다.

  1. 포럼관련 포스트
  2. 블로그 포스트
  3. 뉴스기사

 

📝HTML5 <header> 태그

말 그대로 헤더 위에 부분을 가르킵니다. 어떤 영역안에 헤더가 또 있을 수도 있습니다.

 

📝HTML5 <footer>태그

말 그대로 푸터 밑에 부분을 가르킵니다. 어떤 영역안에 푸터가 또 있을 수도 있습니다.

 

📝HTML5 <nav> 태그

navigationBar를 의미합니다. 어떤 영역안에 nav가 또 있을 수도 있습니다.

 

📝HTML5 <aside> 태그

사이드바와 같은 걸 의미합니다. 어떤 영역안에 aside가 또 있을 수도 있습니다.

 

📝HTML5 <main> 태그

문서의 주요 본문 내용이 들어갑니다. 어떤 영역안에 main이 또 있을 수도 있습니다.

 

 

그 외에 것들 입니다. 제가 자주 쓰는 것들 7가지를 소개했습니다.

<article> 기사를 정의
<aside> 주요페이지의 컨텐츠에서 분리될 정보를 정의
<details> 보이거나 숨길 수 있는 추가적인 정보
<figcaption> <figure>요소에 캡션정의
<figure> 일러스트나,다이어그램, 사진, 코드등과 같이 독립적인 컨텐츠 정의
<footer> 문서의 하단영역
<header> 문서의 상단영역
<main> 문서의 주요본문내용
<mark> 중요표시된 텍스트
<nav> 메뉴링크 영역
<section> 문서의 특정 구역
<summary> <detail>의 제목부분
<time> 날짜와 시간을 정의

 

<!DOCTYPE html>
<html lang="en">
<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">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
    
    <title>Document</title>
    <style>
        *{
            border-color:black;
            margin:5px;
            border-style: solid;
        }
    </style>
</head>
<body>
    <div>
        안녕
    </div>
    <header>
        안녕
    </header>
    <article>
        안녕
    </article>
    <aside>
        안녕
    </aside>
    <nav>
        안녕
    </nav>
    <main>
        안녕
    </main>
    <footer>
        안녕
    </footer>
    <br>
    <header>
        안녕
    </header>
    <article>
        안녕
    </article>
    <aside>
        안녕
    </aside>
    <nav>
        안녕
    </nav>
    <main>
        안녕
    </main>
    <footer>
        안녕
    </footer>
    
</body>
</html>

이걸 보시면 모두 여러번 사용이 가능하며 div와 동일한형태를 가지는 것을 알 수 있습니다.

반응형
반응형

부트스트랩은 어차피 CSS 기반으로 만들어진 걸 더욱 쉽게 사용하기 위해 만들어진 거라 CSS의 margin과 padding에 대한 이해만 있으면 쉽게 하실 수 있습니다. 또한 실력을 향상을 위해서는 공식문서를 읽어보시는 걸 추천드립니다.

 

https://getbootstrap.com/docs/5.0/utilities/spacing/#margin-and-padding

 

Spacing

Bootstrap includes a wide range of shorthand responsive margin, padding, and gap utility classes to modify an element’s appearance.

getbootstrap.com

 

 

📝margin , padding

m margin
p padding

 

 

📝top , bottom , left , right ,x , y

t top
b bottom
s left
e right
x x축 → left , right
y y축 → top , bottom

 

 

📝0, 1, 2, 3, 4, 5, auto

0 0
1 .25rem( font-size가 16px이면, 4px) 크기
2 .5rem( font-size가 16px이면, 8px) 크기
3 1rem( font-size가 16px이면, 16px) 크기
4 1.5rem( font-size가 16px이면, 24px) 크기
5 3rem( font-size가 16px이면, 48px) 크기
auto margin의 자동으로 세팅

 

 

📝사용 예시 (Margin)

<!DOCTYPE html>
<html lang="en">
<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">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">

  <title>Document</title>
  <style>

    div{
      font-size:30px;
      font-weight: bold;
      color:white;
    }
  </style>

</head>
<body>
<div class="container">
    <div class="bg-warning text-danger text-center mb-5">부트스트랩 margin 예제</div>
  <div style="background-color:pink">
    <div class="m-3 bg-primary"> m-3 (전체)  </div>
    <div class="mx-3 bg-secondary"> mx-3 (x축) </div>
    <div class="ms-3 bg-secondary"> ms-3 (left) </div>
    <div class="me-3 bg-secondary"> me-3 (right) </div>

    <div class="my-3 bg-success"> my-3 (y축) </div>
    <div class="mb-3 bg-success"> mb-3 (bottom)</div>
    <div class="mt-3 bg-success"> mt-3 (top)</div>


    <div class="container" style="display: flex; flex-direction: column;">
      <div class ="bg-info m-auto">m-auto (중앙정렬)</div>
    </div>
  </div>
</div>

</body>
</html>

 

📝사용 예시 (Padding)

<!DOCTYPE html>
<html lang="en">
<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">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">

  <title>Document</title>
  <style>

    div{
      font-size:30px;
      font-weight: bold;
      color:white;
    }
  </style>

</head>
<body>
<div class="container">

  <div class="bg-warning text-danger text-center mb-5">부트스트랩 padding 예제</div>
  <div style="background-color:pink">

    <div class="p-5 bg-primary mb-5"> p-5 </div>

    <div class="px-5 bg-secondary"> px-5 </div>
    <div class="ps-5 bg-success"> ps-5 </div>
    <div class="pe-5 bg-warning mb-5 text-end"> pe-5 </div>

    <div class="py-5 bg-secondary"> py-5 </div>
    <div class="pb-5 bg-success"> pb-5 </div>
    <div class="pt-5 bg-warning"> pt-5 </div>


  </div>

</div>

</body>
</html>

반응형
반응형

<!DOCTYPE html>
<html lang="en">
<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">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
    
    <title>Document</title>
    <style>
        div{
            border-color:black;
            border-style:solid;
            border-width:20px;
            width:200px
        }
    </style>
</head>
<body>
    <div style="box-sizing: content-box;">
        <p>content-box</p>
    </div>
    <br>
    <div style="box-sizing: border-box;">
        <p>border-box</p>
    </div>

</body>
</html>

box-sizing에는 content-box border-box가 있습니다.

 

content-box content영역 즉 p태그의 영역에 200px인거고 + 20의 border를 가집니다. 총 240입니다.

border-box border영역까지 포함해서 200px을 가집니다. 여기선 p태그가 160을 가지게 되죠 양쪽 border 20px씩

반응형
반응형

HTML에서 레이아웃의 배치는 정말 중요합니다.

 

큰 틀이 만들어져야 뭐를 배치시킬지 중요한 건 사람들이 눈에 띄게 배치시켜야하는 등 수익과도 연관된 부분이죠 그리고 큰 틀이 제대로 갖춰줘야 안에 넣을 때 배치가 예쁩니다.

 

레이아웃 정렬의 경우는 부모 DIV크기 안에서만 움직이기 때문에 이점 꼭 유의하시길 바랍니다. 아니면 헷갈립니다.

<!DOCTYPE html>
<html lang="en">
<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>

<style>
.container{
	border: 2px dotted red;
	padding:10px
}

.div1{
	background-color: red;
	color:white;
	padding:10px;
}

.div2{
	background-color: orange;
	color:white;
	padding:10px;
}

.div3{
	background-color: green;
	color:white;
	padding:10px;
}
</style>
<body>
    <div class="container">
        <div class="div1">Div1</div>
        <div class="div2">Div2</div>
        <div class="div3">Div3</div>
    </div>
</body>
</html>

기본 형태입니다 이제 display:flex를 이용해 놀아보도록 하죠

일단 부모 div에 적용시키는 스타일부터 알아보도록 하죠 → 부모에게 설정을 줘야 플렉스 박스 아래것들이 적용된다

📝display:flex

.container{
	display:flex;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

 

flex 설정된 부모의 크기 안에 자식들이 세로로 다 들어가게 됩니다 (가로 성질 → 꼬챙이로 저 세개를 동시에 찌르는 방향이라고 생각하면 쉽습니다) 즉, 한 줄(가로) 안에 자식들이 다 들어가게 됩니다

 

📝flex-wrap

.container{
    display:flex;
    flex-wrap: wrap;
    border: 2px dotted red;
    padding:10px;
    height:200px;
}

.div1{
    background-color: red;
    color:white;
    width: 500px;
}

.div2{
    background-color: orange;
    color:white;
    width: 500px;
}

.div3{
    background-color: green;
    color:white;
    width: 500px;
}

 

flex-wrap을 적용 안 시켰을 때에는 하나의 줄(row)안에 다 들어가야하기 때문에 flex의 자식인 flex item의 width가 500이여도 다르게 들어갑니다

flex-wrap을 적용시켰을 때에는 width를 맞춰주고 만약 넘어가는 경우 줄바꿈이 일어납니다

 

📝flex-direction:column

.container{
	display:flex;
	flex-direction:column;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

 

flex-direction:column이면 다시 display:block의 성질로 되돌아갑니다 (세로 성질)

default값은 row입니다. (display:flex만 적용시킨 것 = flex-direction:row)

 

📝flex-direction:row-reverse

.container{
	display:flex;
	flex-direction:row-reverse;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

 

flex-direciton:row-reverse는 말 그대로 row한 거를 반대로 보이게 합니다 그래서 Div1이 맨 오른쪽 그다음 Div2 그다음 Div3가 나오게 됩니다

 

 

  • flex-direction option
    • row
    • row-reverse
    • column
    • column-reverse

https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction

 

flex-direction - CSS: Cascading Style Sheets | MDN

The flex-direction CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed).

developer.mozilla.org

 

📝justify-content (좌우 정렬)

.container{
	display:flex;
	/* justify-content: left; */
	/* justify-content: center; */
	justify-content: right;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

 

justify-content 정렬기능인데 flex-direction의 메인축(가로성질 또는 세로성질)에 따라 정렬이 됩니다 위에는 가로 성질인 display:flex이기 때문에 가로로 선을 그었을 때 그 선에서 왼쪽 정렬, 가운데 정렬, 오른쪽 정렬을 하게 됩니다

 

그외 다양한 레이아웃 배치 형태가 있습니다.

 

 

📝justify-content (상하 정렬)

.container{
	display:flex;
	flex-direction: column;
	/* justify-content: start; */
	/* justify-content: center; */
	justify-content: end;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

 

justify-content를 이용해 상하로 정렬하는 방법은 위에서 알려준 flex-direction: column으로 설정하고 위에 justify-content 옵션은 동일하게 적용시키면 됩니다. (구분을 두고 싶으면 LEFT = START , CENTER = CENTER, RIGHT = END 로 표현 하시면 됩니다.)

 

  • justify-content option
    • start = flex-start
    • center
    • end = flex-end
    • space-between
    • space-around
    • space-evenly

https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content

 

justify-content - CSS: Cascading Style Sheets | MDN

The CSS justify-content property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container.

developer.mozilla.org

 

 

📝align-items

.container{
	display:flex;
	align-items: start;
	/* align-items: center; */
	/* align-items: end; */
	align-items: end;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

align-items의 경우 flex-direction을 바꾸지 않고 상하(메인축과 반대축) 정렬을 줄 수 있습니다 위에 예제들이랑 height가 달라졌는데 align-items를 주는 경우는 자식들을 display:inline 성격으로 만들어버립니다

 

.container{
	display:flex;
	align-items: center;
	justify-content: center;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

justify-content와 혼합해서 위와 같은 형식으로도 구현이 가능합니다.

 

  • justify-content option
    • stretch
    • center
    • start = flex-start
    • end = flex-end

 

https://developer.mozilla.org/en-US/docs/Web/CSS/align-items

 

align-items - CSS: Cascading Style Sheets | MDN

The CSS align-items property sets the align-self value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area.

developer.mozilla.org

 

 

📝align-content

  .container{
    display:flex;
    flex-wrap: wrap;
    border: 2px dotted red;
    padding:10px;
    height:200px;
    align-content: end;
    /*align-items: end; */
  }

  .div1{
    background-color: red;
    color:white;
    width: 500px;
  }

  .div2{
    background-color: orange;
    color:white;
    width: 500px;
  }

  .div3{
    background-color: green;
    color:white;
    width: 500px;
  }

 

flex-wrap에서 wrap인 상태에서 align-items로 적용한 경우 end 정렬이 되는 듯 안 되는 느낌을 받습니다 

 

 

align-content의 경우 wrap 상태에서의 상하(메인축과 반대축) 정렬을 줄 수 있습니다

 

  • align-content option
    • start
    • center
    • space-between
    • end
    • space-around

 

https://developer.mozilla.org/en-US/docs/Web/CSS/align-content

 

align-content - CSS: Cascading Style Sheets | MDN

The CSS align-content property sets the distribution of space between and around content items along a flexbox's cross axis, or a grid or block-level element's block axis.

developer.mozilla.org

 

 

 

📝gap, row-gap, column-gap

.container{
    display:flex;
    gap:10px;
    /*column-gap:10px;*/
    /*row-gap:10px;*/
    border: 2px dotted red;
    padding:10px;
    height:200px;
}

gap을 적용시켰을 때에는 상하좌우의 마진을 줍니다 row-gap과 column-gap으로 줄의 마진 간격 열의 마진 간격을 따로 줄수도 있습니다

 

 

그 밑에 부모 div의 자식인 플렉스 아이템에 적용시키는 style을 알아봅시다.

 

📝align-self (개별 정렬)

.container{
	display:flex;
	border: 2px dotted red;
	padding:10px;
	height:200px
}

.div1{
	align-self: flex-start;
	background-color: red;
	color:white;
	padding:10px;
}

.div2{
	align-self: center;
	background-color: orange;
	color:white;
	padding:10px;
}

.div3{
	align-self: flex-end;
	background-color: green;
	color:white;
	padding:10px;
}

align-self를 이용해 각각의 요소를 개별로 정렬시킬 수 있습니다. 상위 Div에는 display:flex가 선언되어야 합니다

 

 

📝order

<div class="container">
  <div class="div1">1</div>
  <div class="div2">2</div>
  <div class="div3">3</div>
</div>

.container{
    display:flex;
    border: 2px dotted red;
    padding:10px;
    height:200px
}

.div1{
    order:1;
    background-color: red;
    color:white;
    padding:10px;
}

.div2{
    order:10;
    background-color: orange;
    color:white;
    padding:10px;
}

.div3{
    order:-5;
    background-color: green;
    color:white;
    padding:10px;
}

order를 이용해 각각 요소의 위치를 변경할 수 있습니다. 숫자가 작을수록 우선순위가 높습니다.

📝flex-grow

<div class="container">
  <div class="div1">1</div>
  <div class="div2">2</div>
  <div class="div3">3</div>
</div>

.container{
    display:flex;
    border: 2px dotted red;
    padding:10px;
    height:200px
}

.div1{
    flex-grow:2;
    background-color: red;
    color:white;
    padding:10px;
}

.div2{
    flex-grow:1;
    background-color: orange;
    color:white;
    padding:10px;
}

.div3{
    background-color: green;
    color:white;
    padding:10px;
}

기본적으로 div의 크기는 content의 크기만큼 가져가게 된다.

flex-growwidth를 따로 설정 안 하고 비율로 width를 가져가게 한다. 위 그림에서 3은 따로 지정을 안 해서 Content 크기만큼 넓이를 가지게 되고 3을 제외한 넓이를 1과 2는 2:1 비율로 가져가게된다

 

📝flex-shrink

<div class="container">
  <div class="div1">I'm a box, hello world! 💪🏻</div>
  <div class="div2">I'm a box, hello world! 💪🏻</div>
  <div class="div3">I'm a box, hello world! 💪🏻</div>
</div>

.container{
    display:flex;
    border: 2px dotted red;
    padding:10px;
    height:200px
}

.div1{
    background-color: red;
    color:white;
    flex-shrink: 0;
    padding:10px;
}

.div2{
    background-color: orange;
    color:white;
    flex-shrink: 0;
    padding:10px;
}

.div3{
    flex-shrink: 0;
    background-color: green;
    color:white;
    padding:10px;
}

flex-shrink 미적용 flex-shrink 적용

flex-shrink창 크기가 줄일 때 줄어드는 속도에 대한 비율이다

 

참고로 flex-shrink:0을 준 경우 화면 크기에 따라 div 크기가 줄어들지 않습니다.

 

📝flex-basis

<div class="container">
  <div class="div1">I'm a box, hello world! 💪🏻</div>
  <div class="div2">I'm a box, hello world! 💪🏻</div>
</div>

.container{
    display:flex;
    border: 2px dotted red;
    padding:10px;
    height:200px
}

.div1{
    background-color: red;
    color:white;
    flex-grow: 1;
    padding:10px;
}

.div2{
    background-color: orange;
    color:white;
    flex-basis:300px;
    flex-grow: 1;
    padding:10px;
}

flex-basis의 경우 min width처럼 최소 크기를 정해주는 역할과 동일합니다.

위 코드에서 보면 줄어들다가 300px에서 줄어들지 않습니다.

grow도 1:1로 동일한데 넓이가 다른 이유는 flex-basis로 시작지점부터 grow되는 게 달라서 그렇습니다. (300px부터 grow되기 시작해서 그럼)

 

참고로 flex-grow:0; flex-basis의 값을 지정하면 flex-basis크기만큼만 가지게 되고 grow가 0이라 더이상 커지게 되지 않아서 max-width처럼 동작하게 됩니다.

 

 

📝Flex 연습하기

 

https://flexboxfroggy.com/#ko

 

Flexbox Froggy

A game for learning CSS flexbox

flexboxfroggy.com

 

반응형
반응형

📝블록태그

  • 테트리스 블록처럼 층층이 쌓여가는게 특징
  • 블록요소안에 블록요소 가능
  • 블록요소 안에 인라인 요소 가능
  • 일부 블록요손 블록요소를 포함 할 수 없다.
  • 기본적 가로사이즈 100%
  • 가로 세로 사이즈 적용 가능
  • 안쪽 바깥족 여백 모든방향 적용 가능

 

📝블록태그 종류 

<address>, <article>, <aside>, <audio>, <blockquote>, <canvas>, <dd>, <div>, <dl>, <fieldset>, <figcaption>, <figure>, <footer>, <form><h1>, <h2>, <h3>, <h4>, <h5>, <h6><header>, <hgroup>, <hr>, <noscript>, <ol>, <output>, <p>, <pre>, <section><table>, <ul>, <video>

 

 

📝인라인태그 

  • 한줄로 선처럼 나열이 된다. 
  • 안쪽여백, 바깥쪽여백은 좌우측만 적용 
  • 가로 세로 사이즈 적용이 안 된다.(일부요소는 가능 , input, select, img) 
  • 인라인 요소엔 인라인요소만들어간다. 
  • 자신의 부모의 가로폭보다 현재 가로폭이 길면 다음줄로 넘어간다.

 

📝인라인태그 종류

<a>, <abbr>, <acronym>, <b>, <bdo>, <big>, <br/>, <button>, <cite>, <code>, <dfn>, <em>, <i><img><input>, <kbd>, <label>, <map>, <object>, <q>, <samp>, <small>, <script><select><span>, <strong>, <sub>, <sup>, <textarea>, <tt>, <var>

 

 

📝display - block 

<!DOCTYPE html>
<html lang="en">
<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>
<style>
.container {
	border : 2px green solid;
}

.footnote{
	color:red;
}

span {
	background-color: powderblue;
	display: block;
	width: 100px;
	height: 60px;
}

</style>
<body>
<div class="container">
	<span>block span</span>과 <span>block span</span>입니다.
</div>
<b class="footnote">* 한 줄을 독점적으로 차지하여 옆에 다른 태그가 배치되지 않는다.</b>
	
</body>
</html>

 

인라인태그를 블록태그취급합니다.밑으로 쌓이고 넓이를 길게 가져가는 특징이 있죠

 

📝display - inline 

<!DOCTYPE html>
<html lang="en">
<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>
<style>
.container{
	background-color: orange;
}

.footnote{
	color:red;
}

div div {
	display : inline;
	
	background-color: powderblue;
}
</style>
<body>
<div class="container">
	<div>inline Div</div>
	<div>inline Div</div>
	<div>inline Div</div>
</div>
<b class="footnote">* inline박스는 라인 안에 다른 요소들과 함께 배치 공간이 좁으면 남은 부분이 다음 라인으로 넘어간다</b>
	
</body>
</html>

 

블록태그를 인라인태그취급합니다 옆으로 쌓이는 특징이 있습니다.

 

📝display - inline-block

<!DOCTYPE html>
<html lang="en">
<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>
<style>
.container{
	background-color: orange;
}

.footnote{
	color:red;
}

div div {
	display : inline-block;
	border : 2px dotted orangered;
	background-color: powderblue;
	margin : 10px;
	width: 60px; height: 80px;
}
</style>
<body>
<div class="container">
	<div>inline-block Div</div>
	<div>inline-block Div</div>
	<div>inline-block Div</div>
</div>
<b class="footnote">* inline-block 박스는 라인 안에 다른 요소들과 함께 배치 동시에 width, height, margin으로 크기 조절도 가능</b>
	
</body>
</html>

 

인라인 속성(오른쪽으로 채워지는)을 가지고 블록 속성(width ,height을 가짐)

반응형
반응형

class ="container" 입니다 여백을 가져가는 특징이 있습니다.

 

class ="container-fluid" 입니다. 여백을 덜 가져갑니다.

 

<!DOCTYPE html>
<html lang="en">
<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">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
    
    <title>Document</title>
    
</head>
<body>
    <div class= "container-fluid">
        <div>
            안녕하세요!
        </div>


    </div>
    

</body>
</html>

보통 밖에다 적어서 큰 DIV 틀을 만들어줍니다.

 

 

반응형
반응형

📝margin

요소들 사이의 간격을 의미한다

 

📝padding

Border안에 내용물 사이의 간격을 의미한다

간단하게 말하면 Margin은 Border의 바깥영역을 의미, Padding은 Board의 안쪽영역을 의미한다

 

📝margin:auto

See the Pen Untitled by Lee (@mondaymonday2) on CodePen.

margin:auto자기 자신이 여백을 가지고 있는 경우 좌우의 간격을 동일하게 가져가 가운데 정렬이 됩니다

display:flex랑 같이 적용하는 경우 세로 정렬도 되어서 한 가운데 위치하게 됩니다

반응형