728x90
반응형

1. relative

position:relative

이 코드는 원래 자리를 기준으로 위치를 잡아 포지셔닝 하는 것이다. 겹치게 할 때 유용하게 쓸 수 있다. 이 코드를 쓰면 원래 위치에서 상대적인 곳으로 이동한다. top, bottom, left, right 를 써서 조절할 수 있다.

ex>

position:relative
top:80px
left:30px

 

2.fixed

position:fixed;

fixed포지션은 브라우저를 기준으로 포지셔닝 해준다. top:30px을 하면 브라우저의 위에서 30px을 해준다.

스크롤을 해도 똑같은 자리에 있게 된다.

 

fixed 포지션은 스크롤해도 계속 같은 자리를 유지하고 싶을때 사용한다.

 

3.absolute

요소들은 기본적으로 static포지션이다. (포지셔닝이 안 된 요소)

포지셔닝이 된것은 relative, fixed, absolute포지션이다.

absolute포지셔닝은 가장 가까운 포지셔닝이 된 조상 요소가 기준이다.

728x90
반응형

'프론트엔드 > HTML CSS' 카테고리의 다른 글

display 속성  (0) 2021.04.11
CSS 활용하기  (0) 2021.04.11
웹에서의 박스 모델(Box Model) 다루기  (0) 2021.04.09
HTML, CSS, JavaScript  (0) 2021.04.02
728x90
반응형

display의 종류

모든 요소는 딱 한 개의 display 값을 갖고 있다. 

  1. inline
  2. block
  3. inline-block -> 같은줄에 있으면서 크기 설정하고 싶을때
  4. flex
  5. list-item
  6. none

대부분의 요소들은 inline과 block 중 한 가지이다.

inline display

ex)<span>, <b>, <i>, <img>, <button>

다른 요소들과 같은 줄에 머무르려고 함

가로 길이는 필요한 만큼만 차지하는 성향

 

block display

ex) <div>, <h1>, <p>, <nav>, <ul>, <li>

새로운 줄로 가려고 함

가로 길이를 최대한 많이 차지하려고 하는 성향

 

display 바꾸기

만약 inline display 속성을 썼는데 block으로 바꾸려고 하려면 CSS에서 바꾸어주면 된다.

ex)

i{
 display:block;
}

 

img 태그

<img>태그는 사실 대체 요소(replaced element)라고 하는 특별한 요소이다. inline-block은 아니지만 가로, 세로 길이를 설정할 수 있는 inline요소.

예를 들어 vertical-align도 사용할 수 있다. text-align:center;를 하면 가운데 정렬도 된다.

그러나 이미지와 텍스트를 같이 쓰는 경우가 아니면 margin-left:auto;와 margin-right:auto;를 사용해서 가운데 정렬하는 것이 좋다.

vertical - align

vertical-align 속성을 따로 쓰지 않으면 baseline으로 되어있다.

vertical-align:top을 쓴다면 가장 높은 요소에 맞춰진다.

vertical-align:bottom을 쓴다면 가장 낮은 요소에 맞춰진다.

 

baseline은 가만히 있지 않고 계속 움직인다. 

baseline은 vertical-align의 조건들을 충족시키면서 줄의 높이를 최소화시키는 곳에 위치한다.

 

어디로 맞춰질지 궁금하면 부모태그에 x를 입력해서 확인하자.

 

세로 가운데 정렬 꿀팁

가로 가운데 정렬

inline 요소

inline 또는 inline-block 요소면 부모 태그에 text-align:center;를 써주면 된다.

 

block 요소

margin-left:auto;, margin-right: auto;를 써주면 된다.

 

 

세로 가운데 정렬

 

가짜 요소 더하기

 

vertical-align 속성은 인라인 또는 인라인 블록 요소에 적용된다. vertical-align: middle; 은 요소의 가운데를 부모 요소의 가운데와 맞춘다.

 

세로 길이가 100%인 div 요소를 만들고, 그 요소에도 vertical-align: middle;을 하면 된다.

그렇게 하고 그 요소의 가로 길이를 없애면 된다.

 

글자를 감싸는 박스의 높이와 같은 크기로 line-height속성을 지정해주면 글자가 수직 중앙 정렬된다.

 

line-height는 div 부모 태그에 설정해주면 되고 자식태그에는 line-height를 상속받지 않으려면

line-height:normal;을 써주면 된다.

 

 

728x90
반응형

'프론트엔드 > HTML CSS' 카테고리의 다른 글

CSS 포지셔닝  (0) 2021.04.13
CSS 활용하기  (0) 2021.04.11
웹에서의 박스 모델(Box Model) 다루기  (0) 2021.04.09
HTML, CSS, JavaScript  (0) 2021.04.02
728x90
반응형

CSS에서 스타일링 해줄 요소는 '선택자' 로 결정한다.

 

1. 선택자 정리

 

 태그 이름

/* 모든 <h1> 태그 */
h1 {
  color: orange;
}

클래스 / 아이디

/* 'important'라는 클래스를 갖고 있는 모든 태그 */
.important {
  color: orange;
}

/* 'favorite'라는 아이디를 갖고 있는 태그 */
#favorite {
  color: blue;
}

자식(children)

/* 'div1' 클래스를 갖고 있는 요소의 자식 중 모든 <i> 태그 */
.div1 i {
  color: orange;
}

직속 자식(direct children)

/* 'div1' 클래스를 갖고 있는 요소의 직속 자식 중 모든 <i> 태그 */
.div1 > i {
  color: orange;
}

 

복수 선택

/* 'two' 클래스를 가지고 있는 태그 모두와 'four' 클래스를 가지고 있는 태그 모두 선택 */
.two, .four {
  color: orange;
}

여러 조건

/* 'outside' 클래스를 갖고 있으면서 'one' 클래스도 갖고 있는 태그 */
.outside.one {
  color: blue;
}

/* 'inside' 클래스를 갖고 있으면서 'two' 클래스도 갖고 있는 태그 */
.inside.two {
  color: orange;
}

 

Pseudo-class(가상 클래스)

콜론(:)을 사용하면 몇 가지 '가상 클래스'를 선택할 수 있다.

n번째 자식

<div class="div1">
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
  <p>Paragraph 3</p>
  <p>Paragraph 4</p>
  <p>Paragraph 5</p>
  <p>Paragraph 6</p>
</div>
/* .div1의 자식인 <p> 태그 중 3번째 */
.div1 p:nth-child(3) {
  color: blue;
}

/* .div1의 자식인 <p> 태그 중 첫 번째 */
.div1 p:first-child {
  color: red;
}

/* .div1의 자식인 <p> 태그 중 마지막 */
.div1 p:last-child {
  color: green;
}

/* .div1의 자식 중 마지막 자식이 아닌 <p> 태그 */
.div1 p:not(:last-child) {
  font-size: 150%;
}

/* .div1의 자식 중 첫 번째 자식이 아닌 <p> 태그 */
.div1 p:not(:first-child) {
  text-decoration: line-through;
}

0번째 부터가 아니고 first-child가 첫번째 요소이다.

 

마우스 오버(hover)

h1 {
  color: orange;
}

/* 마우스가 <h1> 태그에 올라갔을 때 */
h1:hover {
  color: green;
}

 

 

2. CSS 상속

 

css에는 '상속' 개념이 있다. 부모 요소의 속성들을 자식들한테 넘겨주는 것이다. 큰 div태그가 있으면 그 안에 들어가있는 속성들은 모두 div태그의 css속성 값에 따라 같이 적용되는 것이다. 

하지만 태그와 속성에 따라 상속이 되지 않는 경우도 있다. 예를 들어서 부모 태그에 설정한 margin이 모든 자식들에게 적용은 되지 않는다. 

 

웬만하면 상속되는 몇 가지 속성들

  1. color
  2. font-family
  3. font-size
  4. font-weight
  5. line-height
  6. list-style
  7. text-align
  8. visibility

웬만하면 이라고 한 이유는 항상 상속되는 것은 아니기 때문이다. 예를들어 <a>태그에는 color 속성이 상속되지 않는다. <a>태그가 억지로 상속을 받아오기 위해서는 해당 속성에 inherit 값을 쓰면 된다.

<div class="div1">
  Let's go to <a href="https://google.com" target="_blank">google</a>!
</div>

<div class="div2">
  Let's go to <a href="https://google.com" target="_blank">google</a>!
</div>
.div1 {
  color: green;
}

.div2 {
  color: orange;
}

.div2 a {
  color: inherit;
}

 

3. CSS 우선 순위

여러 선택자가 같은 요소를 가리키면 우선 순위를 어떻게 평가할까.

 

1. 완전 똑같은 선택자가 나중에 또 나오면, 이전에 나온 스타일을 덮어쓰게 된다.

h1 {
  color: blue;
  text-align: center;
}

h1 {
  color: green;
}

//h1 태그는 초록색으로 된다.

 

2. 명시도(Specificity)

같은 요소를 가리키지만 선택자가 다르다면, '명시도(specificity)'에 따라 우선 순위가 결정된다.

 

명시도 계산기

  1. 인라인 스타일이 가장 우선 순위가 높다.
  2. 선택자에 id가 많을 수록 우선 순위가 높다.
  3. 선택자에 class, attribute, pseudo-class가 많을 수록 우선 순위가 높다.
  4. 그 다음은 그냥 요소(또는 가상 요소)가 많은 순서이다.

<ul> 태그 안에 <li> 태그 안에 <a id="link">가 있다고 가정해보자. 

<ul>
  <li><a id="link" href="#">Link 1</a></li>
  <li><a id="link" href="#">Link 1</a></li>
  <li><a id="link" href="#">Link 1</a></li>
  <li><a id="link" href="#">Link 1</a></li>
</ul>
ul li:first-child #link {
  color: green;
}

ul li:first-child a {
  color: orange;
}


/*첫번째 것이 요소의 명시도가 높으므로 첫번째 css가 적용된다*/

 

4. CSS의 다양한 단위들

 css에는 px, rem, em, %등 여러 단위가 있다. 폰트 크기 뿐만 아니라 padding, margin, width 등 다양한 속성들에 이 단위들을 사용할 수 있다.

 

1. px 

 절대적인 값. 다른 요소의 값에 영향을 받지 않는다.

 

2. rem

상대적인 값. 하지만 오직 <html> 태그의 font-size에만 영향을 받는다.

2rem은 <html>태그의 font-size의 2배 크기이다.

 

3. em

em도 rem과 마찬가지로 상대적인 값이다. em은 자기 자신의 font-size를 기준으로 한다.

2em은 자기 자신의 font-size의 2배 크기이다. 자기 자신의 font-size를 따로 정해주지 않을 경우, 상위 요소에서 상속받은 값을 기준으로 한다.

만약 자신에게 정해진 font-size가 있다면 그 값을 기준으로 em이 결정된다.

 

4. 퍼센트 %

%는 어느 항목에서 쓰이냐에 따라 다른 기준이 적용된다.

예를 들어 font-size에서 %가 쓰일 경우, 상위 요소의 font-size에 곱해주는 방식으로 계산.

%가 margin이나 padding의 단위로 사용될 경우, 상위 요소의 width를 기준으로 계산된다.

margin-top이나 padding-bottom 등 세로 속성을 조절할 때에도 상위 요소의 height가 아닌 width를 기준으로 계산된다.

728x90
반응형

'프론트엔드 > HTML CSS' 카테고리의 다른 글

CSS 포지셔닝  (0) 2021.04.13
display 속성  (0) 2021.04.11
웹에서의 박스 모델(Box Model) 다루기  (0) 2021.04.09
HTML, CSS, JavaScript  (0) 2021.04.02
728x90
반응형

요소는 내용(content), 패딩(padding), 테두리(border)로 이루어져 있다. Padding은 내용과 테두리 사이의 공간이다.

Margin은 요소 주위의 여백, 즉 테두리 밖의 공간이다.

 

Margin과 Padding 사용법

padding은 다음과 같이 사용한다.

p {
  padding: 위 오른쪽 아래 왼쪽;
}
p {
  padding: 20px 60px 40px 120px;
}

위, 아래, 왼쪽, 오른쪽이 다 같은 경우

만약 위, 아래, 왼쪽, 오른쪽에 똑같은 padding을 주고 싶으면 더 간편하다. 모두 50px의 padding을 주려면 이렇게 하면 된다.

p {
  padding: 50px;
}

 

Margin도 사용방법이 같기 때문에 따로 코드를 보여주진 않겠다.

 

요소를 가운데 정렬하고 싶으면 왼쪽과 오른쪽 margin 값을 auto로 설정해줘야 한다. auto는 말 그대로 '자동으로 계산'하라는 뜻이다. 왼쪽과 오른쪽을 auto로 설정하면 자동으로 왼쪽과 오른쪽으로 똑같이 함으로써 요소는 가운데 정렬이 된다.

p {
  margin-left: auto;
  margin-right: auto;
}

Overflow 정리

width, height, max-width, max-height 등을 설정하다 보면 내용물이 들어갈 공간이 부족한 경우가 생긴다. 그럴때 overflow를 사용하여 보여주던가 scroll하던가 숨겨주던가 한다.

 

1. visible : 넘쳐나는 내용물이 그대로 보여진다. 디폴트 값이다.

p {
  overflow: visible;
}

2. hidden : 넘쳐나는 부분 아예 숨기기

p {
  overflow: hidden;
}

3. scroll : 내용물을 숨겼다가, 사용자가 스크롤을 하면 볼 수 있게 해주는 방법

p {
  overflow: scroll;
}

4. auto : scroll과 거의 똑같음. scroll은 항상 스크롤바를 보여주고, auto는 내용물이 넘쳐날 때만 스크롤바 보여줌

p {
  overflow: auto;
}

border 정리

border 속성 값을 쓰는 순서는 굵기, 스타일(실선, 점선 등), 색.

.p1 {
  border: 2px solid #4d9fff;
}

아니면 명확하게 나눠서 사용하면 된다.

border-width , border-style, border-color 순서대로 이다.

 

border-style 에는 dotted, dashed, solid 등이 있다.

 

border를 없애기 위해서는 

border: none;

border: 0;

둘 중 하나를 사용하면 된다.


박스 꾸미는 몇 가지 방법

1. border-radius -> 둥근 모서리 쓰기

(border-top-left-radius, border-top-right-radius, border-bottom-right-radius 이런식으로 각 모서리를 개별 설정 가능)

 

2. backgroud-color -> 배경색 사용하기

 

3. backgroud-color: transparent -> 배경색 투명하게

 

4. box-shadow: 10px 10px 10px 10px red-> 그림자 입히기

(순서대로 1. 위쪽 2. 오른쪽 3. 흐리게 나오는 정도(blur : 기본값 0px) 4. 그림자 크기 설정(spread) 5. 색깔)


box - sizing

width와 height가 border, padding을 뺀 내용물의 크기만 나타나기 때문에 결과물은 달라질 수 있다. width, padding, border를 쓰다보면 원하는 가로 길이를 계산하기 귀찮아지기 때문에 box-sizing으로 간편하게 할 수 있다. 기본값은 box-sizing:content-box;이다.

h1{
 box-sizing:content-box;
}

box-sizing: border-box; 는 너무 편리해서 자주 사용한다.

모든 요소에 쓰고 싶으면 *을 쓰고 속성을 써주면 된다.

*{
 box-sizing:border-box;
}

배경 이미지

background-image:url("")

1. background-repeat

 이미지를 반복시킬 것인지 아닐 것인지, 그리고 반복시킨다면 어떤 방식으로 반복시킬 것인지 정해주는 속성이다.

/* 반복하지 않음 */
background-repeat: no-repeat;

/* 가로 방향으로만 반복 */
background-repeat: repeat-x;

/* 세로 방향으로만 반복 */
background-repeat: repeat-y;

/* 가로와 세로 모두 반복 */
background-repeat: repeat;

/* 반복할 수 있는 만큼 반복한 뒤, 남는 공간은 이미지 간의 여백으로 배분 */
background-repeat: space;

/* 반복할 수 있는 만큼 반복한 뒤, 남는 공간은 이미지 확대를 통해 배분 */
background-repeat: round;

 

2. background-size

 배경 이미지의 사이즈를 정해주는 속성이다.

/* 원래 이미지 사이즈대로 출력 */
background-size: auto;

/* 화면을 꽉 채우면서, 사진 비율을 유지 */
background-size: cover;

/* 가로, 세로 중 먼저 채워지는 쪽에 맞추어서 출력 */
background-size: contain;

/* 픽셀값 지정 (가로: 30px, 세로: 50px로 설정) */
background-size: 30px 50px;

/* 퍼센트값 지정 (가로: 부모 요소 width의 60%, 세로: 부모 요소 height의 70%로 설정) */
background-size: 60% 70%;

 

3. background-position

 배경 이미지의 위치를 정해주는 속성이다.

/* 단어로 지정해주기 (가로: left, center, right, 세로: top, center, bottom) */
/* 아래와 같은 총 9개의 조합이 가능 */
background-position: left top;
background-position: left center;
background-position: left bottom;
background-position: right top;
background-position: right center;
background-position: right bottom;
background-position: center top;
background-position: center center;
background-position: center bottom;

/* 퍼센트로 지정해주기 (가로: 전체 width의 25% 지점, 세로: 전체 height의 75% 지점 ) */
background-position: 25% 75%;

/* 픽셀로 지정하기 (가로: 가장 왼쪽 가장자리에서부터 오른쪽으로 100px 이동한 지점, 세로: 가장 상단 가장자리에서 아래로 200px 이동한 지점) */
background-position: 100px 200px;
728x90
반응형

'프론트엔드 > HTML CSS' 카테고리의 다른 글

CSS 포지셔닝  (0) 2021.04.13
display 속성  (0) 2021.04.11
CSS 활용하기  (0) 2021.04.11
HTML, CSS, JavaScript  (0) 2021.04.02
728x90
반응형

HTML

HTML이란 어떤 것일까? 용어를 살펴볼때 이 단어의 약자를 풀어보는게 도움이 된다.

HTML은 Hyper Text Markup Language의 약자이다. 

Hyper란 '매우 활성화 되었거나', '특별히 활발하다' 라는 뜻이다. 그럼 Hyper Text는 단순히 text가 아니라 text 그 이상의 것을 의미한다. Hyper Text는 다른 정보와 연결해주는 텍스트로 정의한다. 여기서 말하는 정보는 다른 웹페이지를 의미한다. 즉, Hyper Text는 두 개이상의 웹페이지를 서로 연결해주는 고리라고 할 수 있다.

Markup에서 Mark는 무언가를 알아보게 해주는 기능이다. 웹 페이지를 Markup 함으로써 웹페이지의 내용을 HTML 요소로 작성하는 것이다. 브라우저에 '이건 제목이고, 이건 그림이고, 이건 단락이고'(<head>, <title>, <body> ...) 이러한 정보들을 알려주는 것이다.

마지막 Language는 언어라는 뜻이다. 즉, HTML은 소통 수단이다. HTML은 브라우저와 소통하는 일종의 수단으로 웹페이지가 어떻게 생겼고 다른 웹페이지와 어떻게 연결되어있는지를 말해준다.

 

파이어폭스가 제공하는 MDN을 웹 개발 공식문서라고 생각하고 보는데, 여기서 HTML이 어떻게 설명되어있는지 보자.

HTML(HyperText Markup Language)은 웹을 이루는 가장 기초적인 구성 요소로, 웹 콘텐츠의 의미와 구조를 정의할 때 사용합니다. HTML 이외의 다른 기술은 일반적으로 웹 페이지의 모양/표현 (CSS), 또는 기능/동작 (JavaScript)을 설명하는 데 사용됩니다.

즉, HTML은 웹페이지와 그 안의 내용을 구조화하는데 사용하는 코드라고 정의되어 있다. 여기서 중요한 것은 구조이다. 브라우저에 이 웹사이트는 이러한 구조를 가져서 이러한 모습이고 이러한 역할을 할거라고 말해주는게 HTML이라고 볼 수 있다.

 

CSS

HTML이 구조를 잡아서 빌딩을 만들었다고 하자. 빌딩의 뼈대를 세운 다음에는 페인트도 칠하고 안에 인테리어도 해야할 것이다. 이것이 CSS의 역할이다.

CSS는 Cascading Style Sheet의 약자이다. Sheet는 말 그대로 종의를 의미한다. 그러므로 Style Sheet은 여러 스타일이 들어간 종의로 볼 수 있다. 스타일이란 무언가를 더 매력적으로 만들기 위한 일련의 작업을 뜻한다. 웹페이지를 더 매력적으로 만들어주는 것이 바로 ‘스타일 시트’이다.

색상이나 글꼴, 이미지 배치 등을 스타일 시트에서 정의한다.

Cascade의 의미는 여러 소스의 속성값을 결합하는 데 사용하는 알고리즘이다. Cascading을 이용해서 브라우저에서 각 HTML 요소에 어떤 색상을 지정할지 결정한다.

 

JavaScript

JavaScipt는 웹과 사용자가 상호작용 할 수 있도록 동적인 환경을 만든다. 웹 페이지에서 볼 수 있는 모든 효과를 구현한다고 생각하면 된다. 자바스크립트는 어떻게 시작되었을까? 먼저, 웹 브라우저에 대하여 알아야 한다.

1993년, 일리노이 대학 국립 슈퍼컴퓨팅 애플리케이션 센터에서 Andressen은 Mosaic이라는 최초의 웹 브라우저를 출시했다. 앤드레슨(?)은 이후에 1995년에 Netscape를 설립했고 Netscape Navigator라는 보다 발전된 브라우저를 런칭했다. 그러나 앤드레슨은 웹이 조금 더 동적이고 사용자와 상호작용하길 원해서 웹을 위한 스크립팅 언어가 필요하다고 생각했다.

그래서 Netscape에서는 프로그래밍 언어 Mocha를 만드는데 이것이 자바스크립트의 최초 버전이다.

그리고 Mocha의 베타버전을 LiveScript로 이름을 바꾼다. 근데 이때쯤 Java라는 언어가 나오고, Java가 너무 인기가 많으니까 LiveScript를 JavaScript로 이름을 바꾸어버린다. (그냥 Java 인기에 올라타기..) 그래서 Java와 JavaScript는 아아무런 연관이 없다. NetScape가 Java의 인기를 얻기 위해 JavaScript로 이름을 바꿨을뿐이다.

728x90
반응형

'프론트엔드 > HTML CSS' 카테고리의 다른 글

CSS 포지셔닝  (0) 2021.04.13
display 속성  (0) 2021.04.11
CSS 활용하기  (0) 2021.04.11
웹에서의 박스 모델(Box Model) 다루기  (0) 2021.04.09

+ Recent posts