<section>
과 <div>
태그 사용에 관하여
- html에서
div
요소는 플로우 콘텐츠를 위한 통용 컨테이너- CSS로 꾸미기 전에는 콘텐츠나 레이아웃에 영향을 주지 않는다.
- 보통 다른 요소 여럿을 묶어
clss
나id
속성으로 꾸미기 쉽도록 돕는다<div>contents</div>
위는 메인 콘텐츠 카테고리를 도식화한 것으로,div
요소는 플로우 콘텐츠를 위한 통용 컨테이너이자 플로우 콘텐츠에 속한다.
하지만 우리는 저번 시간에
의미 없는 태그를 남발하는 것보단 의미 있는 태그를 사용하는 것이 더 권장된다는 것을 알게 되었다.
무조건 의미없는 div
만 고집하지 않아도 된다
의미없는 태그를 사용하기 보단 영역을 나눌 땐 section
태그를 사용하는 것이 더 좋을 수 있다.
- html 문서의 독립적 구획을 나타내며, 더 적합한 의미를 가진 요소가 없을 때 사용한다.
- 보통 제목을 포함하지만 항상 그런 것은 아니다.
<section>contents</section>
<article>
태그를 고려할 수 있다.<div>
태그를 사용하는 것 추천<section>
사용 추천저번 글에서 잠깐이지만, BEM에 관해 언급한 적이 있다.
오늘은 그것에 대해 더 자세히 다루는 시간을 가졌다.
나는 class
이름을 선언할 때, 내부의 콘텐츠를 기준으로 줄여서 사용했었다.
그런데 만약 내부에 있는 콘텐츠가 달라진다면? 이란 질문을 들었을 때,
아.... 그럼 달라질 때마다 class
이름을 바꿔야겠구나... 라는 생각이 들었다.
따라서 오늘 글에서는 어떻게 class
이름을 작명하는게 좋을지 다뤄보겠다!
class
작명하기class
명의 시작에 숫자 기입은 되지 않는다. <div class="1a">멋사</div> /*불가*/
<div class="a1">최고</div> /*가능*/
(근데 이모지는 된다는 사실이 신기했다..ㅋㅋinput-text
, button-submit
, modal-alert
등)button-submit-03-disable
)image_elysia_asset_01.png
)mainActivity.java
, errorLog.txt
등-
로 연결된다.main-activity.java
, error-log.txt
등MainActivity.java
, ErrorLog.txt
등-
가 아니라 _
로 연결된다.main_activity.java
, error_log.txt
등
- 선택한 요소에 그림자 효과를 만들어주는 속성
- initial value: none, inherited: no
box-shadow: none; /*그림자 효과를 없앰 */
box-shadow: x-position y-position blur spread color;
/* x-position: 가로 위치, 양수면 오른쪽, 음수면 왼쪽에 그림자
y-position: 세로 위치, 양수면 아래쪽, 음수면 위쪽에 그림자
blur: 그림자를 흐릿하게, 값이 클수록 흐려짐
spread: 양수면 그림자 확장, 음수면 축소
color: 그림자 색 */
box-shadow: inset; /* 그림자를 요소의 안쪽에 만듬 */
이때까지 나는 요소의 영역을 나타내기 위해서 background-color
를 사용해서 나타냈다.
오늘 수업에서는 요소의 영역을 나타내기 위해서 box-shadow
속성을 사용했었는데,
이 때 이 속성에 대해 처음 알게 되었다. (신세계)
box-shadow: inset 0 0 10px black;
으로 사용했었던 것 같은데 (맞나?)
요소 안으로 그림자가 생기니까 확실히.. 공간을 차지하지도 않고
(이건 백그라운드 컬러도 마찬가지지만)
class
명이 같아도 콘텐츠 영역마다 적용이 되어,
border
나 background-color
보다 영역 구분을 보기가 편했다.
Ex.
(이건 마진 병합 현상 설명할 때 쓰려한 자료인데.. 중복으로 사용좀 해야겠다.
파란 동그라미는 무시해주세욤 ^^.
아무튼 저 section1,2는 class명이 section으로 같은 요소들인데
확실히 좀 더 구분이 가는게.. 느껴지는가..?
background-color로 사용했을 때엔 같은 색으로 표현이 되어 구분이 확실히 가지 않았었지만
box-shadow는 지 요소 안으로 그림자가 져서 같은 class명을 가지든말든, 같은 색의 효과를 주든 훨씬 잘 보이는게 너무 마음에 들었다!)
이 기능을 이제 알게 되다니.. 덕분에 과제할 때 좀 더 뚜렷하게 영역 확인을 할 수 있었다.
앞으로도 계속 써야겠다!!
CSS에서 인접하는 block-level element의 상하단 margin이 서로 병합되는 현상
body
도 block 요소이기 때문에, body
와 parents
사이 마진 병합이 일어난다.<body>
<div class="parents">
<div class="box">A</div>
<div class="box">B</div>
</div>
</body>
/*HTML*/
<main class="contents">
<section class="section">section1</section>
<section class="section">section2</section>
</main>
/*CSS*/
.section {
background-color: blueviolet;
box-shadow: inset 0 0 30px white;
margin: 20px;
padding: 20px;
}
/* 여기서 끝나면 마진 병합 현상 일어남 */
.section:first-child {
margin-bottom: 40px;
}
/* 마진 병합 현상 회피~ */
Ex.
table
요소를 넣는다.border
나 padding
값을 주게 되면 마진 병합 현상이 일어나지 않는다.div
(display: inline;
으로 바꾼)을 넣어도 마진이 안겹칠까요?div
에 콘텐츠가 없기 때문에 (속성을 inline으로 바꿨으니까) 마진 병합 현상이 일어납니다.display: flow-root;
값을 주게 되면 마진 병합 현상이 일어나지 않는다.display: flow-root;
값을 주면 되나요?flow-root
또한 block 계열 속성이기 때문에 여전히 마진 병합 현상이 일어납니다.overflow
속성의 값이 visible
이 아니라면 마진 병합 현상이 일어나지 않는다.margin-bottom
으로 쓰고 :last-child
로 맨 마지막 요소를 선택한 후,margin-bottom: 0;
을 많이 사용하신다고 하셨다.*
솔직히 마진이 겹치는 줄도 몰랐는데, 이 현상에 대해 알고나니 보였다 ㅎㅎ..ㅋㅋ
CSS에서 정해놓은 규칙(?) 같은 현상이라 이 현상을 마주치기 싫다면 내가 알아서 회피해야 할듯,,ㅋㅋ
근데 이 규칙 맘에 든다.. 이 현상이 없었다면 하나하나 마진을 계산했어야 한다는 생각에.. 어우 머리아퍼
a ~ b { property: value; }
a와 b가 같은 계층에 있을 때, 지정한 요소의 형제인 모든 요소들을 선택한다.
Ex.
<div>
<h1>멋사</h1>
<p>과제</p>
<p>재밌엉<p>
<p>히힛<p>
</div>
h1 ~ p {
color: white;
}
일 때, <h1>
태그 뒤에 있는 모든 <p>
태그의 색을 흰 색으로 변경시킨다.
a + b { property: value; }
a와 b가 같은 계층에 있을 떄, 지정한 요소의 바로 다음에 위치하는 형제 요소만 선택한다.
따라서, 다음에 위치한 형제 요소에만 값이 주어진다.
첫째 말고 둘째만 선택한다는 것
Ex.
<div>
<h1>멋사</h1>
<p>과제</p>
<p>재밌엉<p>
<p>히힛<p>
</div>
h1 + p {
color: white;
}
일 때, <h1>
태그 바로 뒤에 있는 <p>
태그의 색을 흰 색으로 변경 시킨다.
(<p>과제</p>
만 컬러가 흰 색으로 바뀐다.)
*
얘네는 이해가 가면서도 막상 예시를 혼자 적다보면 이해가 안간다.
결합자 모양도 넘흐 헷갈림.. ㅠㅠ
혼동 없게 뜻을 정확히 알아둬야겠다.
a:hover { property: value; }
사용자가 포인팅 장치를 이용해 상호작용 중인 요소를 선택한다.
보통 사용자의 커서가 요소 위에 올라가 있으면 선택한다.
가상 클래스(의사 클래스)란?
선택자에 추가하는 키워드로, 선택한 요소가 특별한 상태여야 만족할 수 있다.
:hover
를 사용하면 포인터를 올렸을 때에만 글씨 색을 바꾸고 싶을 때 사용할 수 있다.
a:hover {
color: orange;
}
라면, 마우스를 a
위에 올렸을 때 a
의 색이 orange
로 바뀐다.
*
hover를 이용해서 과제할 때 더 풍부한 효과를 줄 수 있었다!
마우스를 올렸을 때와 안올렸을 때 너무 갑작스럽게 효과가 전환되는 것 같다면,
transition
에 값을 줘서 전환 시간을 바꿀 수 있다.
덕분에 글자가 뿅!!!!!하고 갑자기 커지는게 아니라 스르륵~ 커져서
더 만족스러운 결과를 얻었다 ^-^v
배경 이미지의 반복 방법을 지정한다.
initial value: repeat, inherited: no
아래 값을 부여했을 때에
background-repeat: repeat;
: 배경 이미지가 계속 반복된다.background-repeat: repeat-x
: 배경 이미지가 x축을 따라 반복된다. (가로로)background-repeat: repeat-y
: 배경 이미지가 y축을 따라 반복된다. (세로)background-repeat: no-repeat
: 배경 이미지가 반복되지 않는다.배경 이미지의 위치를 지정한다.
문법:background-position: x-position y-position
initial value: 0% 0%, inherited: no
left
, center
, right
, 백분율
, 길이
top
, center
, bottom
, 백분율
, 길이
background-position: right center
: 배경을 오른쪽 중앙에 배치한다.*
과제할 때 이 두 가지의 백그라운드 속성을 모두 사용해보았다.
근데 no-repeat
으로 설정하니까 반복되지 않는 부분은 흰색 바탕으로 나와서,,..
이걸 어떻게 해결해야하지 찾아봤지만 결국 해결하진 못하였다 ㅠ
그래서 월요일에 여쭤볼 예정...!
그냥 다시 기본값으로 둘지 no-repeat
으로 할지 1분 정도 고민하다가
no-repeat
으로 뒀다 ^^
반복되는 것 보단 흰색 바탕이 나은 것 같아서..ㅋㅋ
1. 마진 상쇄 현상
여러 block-level 요소에 서로 다른 마진 값을 넣었을 때, 가장 큰 마진 값이 적용된다.
padding
이나 border
속성을 부여한다면,2. 목록의 컨텐츠 구성
ul
(unordered list): 순서가 그닥 중요하지 않은 목록을 나타낼 때 사용한다.ol
(ordered list): 순서가 중요한 목록을 나타낼 때 사용한다.3. 한 요소에 class 이름을 두 번 이상 선언할 수 있다.
<div class="section cat"> contents </div>
div
는 section
과 cat
두 가지의 class 이름을 가진다.4. class 셀렉터
.wrapper.wow {property: value;}
와 .wrapper .wow {property: value}
의 차이.wrapper.wow {property: value;}
: class 이름 중 .wrapper
와 .wow
을 포함한 요소를 선택한다..wrapper .wow {property: value}
: .wrapper
의 하위 클래스인 .wow
를 선택한다.a :hover {property: value;}
와 a:hover {property: value;}
의 차이a :hover {property: value;}
: a
의 하위 요소에 hover 효과를 준다.a:hover {property: value;}
: a
에 hover 효과를 준다.오늘은 마진 병합 현상으로 거의 한시간 반..? 정도 강의를 들은 것 같다
처음엔 이해가 잘 갔는데, 점점 딥해질 수록 이해도도 같이 떨어졌다..ㅋㅋㅠㅠㅠ
그래도 어떤 조건에 있을 때 이 현상을 볼 수 있는가? 에 대해서는 이해해서 다행이라는 생각.
오늘 수업에서 특히나 어려웠던건, 갑자기 display 속성에 cover를 주는 것이었는데
다행히 이런 방법이 있다~ 정도로만 알고 넘어가면 된다고 하셨...ㄷ....던가...........?
뭔가 다음에 제대로 배울 것 같아서 이게 어떤 값인지 살짝 알아보기만 했다..ㅎㅎ
그 외에는 9시 스터디에서 질문을 열심히 하며(?) 나름 이해를 했다 (오늘 배운 부분에 한해서)
근데 왜.. 과제 코드 짜는건 두시간이 걸리는건지...............
확실히 강사님이 코드를 짜실 땐 몰랐는데,
실제로 내가 코드를 짜보니까 내가 모르는 것이 무엇인지 훨씬 잘 느껴진다.
오늘 예제를 보니 더 잘하고 싶어졌다. ㅎㅎ
이번주 토요일은 없는걸로... 😂😂😂