Html
의 논리적인 순서를 위해,section
요소는 콘텐츠를 장이나 절 등으로 구분하고자 할 경우에 사용하기 때문에section
요소 안에는 헤딩 관련 요소를 사용하여 해당 섹션의 제목을 지정해야한다.
이처럼 heading
이나 원하는 문구를 넣고싶은데 화면상에는 보이지 않게 하고싶을 때가 있는데 이런 경우에 sr-only
를 사용하면 된다. 이 클래스명을 숨기고 싶은 태그 요소에 사용하면 화면상에서는 보이지 않지만, 검색 엔진에서는 이 클래스명이 적용된 텍스트를 그대로 읽어온다. 그러므로 웹접근성을 높일 수 있게 된다.
.sr-only {
position: absolute;
left: -9999px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
display: none;
을 해버리면 되지 않냐고?display: none;
을 해버리면 normal flow
에서 빠져버리고 칸 차지를 아예 안하면서 화면상에 출력이 되지 않을 뿐만 아니라, 검색 봇이 이 태그 요소를 인식하지 못하게 된다. 결국 웹 접근성이 떨어진다!
align-item
의 속성 중(기본값은 stretch
), baseline
, flex-start
, center
가 홈페이지 외관 상으로 티가 안나는 경우가 많아서 잘 구별하기 어렵다.
baseline
의 경우 item
안의 텍스트 라인을 기준으로 정렬된다.
flex-start
는 cross-axis
의 가장 top
쪽에 item
들이 정렬된다.
center
는 item
들의 박스 자체 가운데를 기준으로 정렬된다.
가로와 세로의 개념이 아닌 item
의 크기를 특정한다. 자식요소에 사용하며 width
와 height
와 달리 axis
의 방향에 따라 달라진다. 내부 컨텐츠에 따른 유연한 크기며 기본값은 auto
이다. flex-basis
값이 할당되면width
, height
값이 무시된다.
자식요소에 사용한다. flex-basis
의 값에서 더 늘어나도 되는지 지정하는 값이며 할당된 값에 따라 자신을 감싸는 컨테이너의 공간을 할당하도록 한다.
<!DOCTYPE html>
<html lang="ko">
<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>flex-3</title>
<style>
.container-color {
background-color: cornsilk;
border: solid 3px black;
border-radius: 10px;
height: 300px;
margin: 5px;
padding: 5px;
}
.item-color {
background-color: darkcyan;
border: solid 3px black;
border-radius: 10px;
margin: 5px;
padding: 5px;
}
.container1 {
display: flex;
/* flex-direction: column; */
flex-direction: row;
}
.item {
flex-grow: 1;
}
.item:nth-child(2) {
flex-grow: 3;
}
</style>
</head>
<body>
display:flex에 flex-grow 실습
<div class="container-color container1">
<div class="item-color item">1</div>
<div class="item-color item">3</div>
<div class="item-color item">1</div>
<div class="item-color item">1</div>
<!-- 전체 6, 6분의 1 , 6분의 3 -->
</div>
</body>
</html>
grow
값이 클수록 더 큰 크기를 할당받는다. 배수의 개념이므로 flex-grow: 3;
은 전체 크기 6이므로 6분의 3의 크기로 볼 수 있다.
결과
flex-grow
와 반대로 flex-basis
에서 더 줄어들어도 되는지 지정하는 값이다. 0의 값을 사용할 경우 컨테이너의 크기가 줄어도 값은 고정된다. 마이너스 숫자는 받아들이지 않으며 기본값은 1이다.
.item:nth-child(1) {
flex-basis: 500px;
flex-shrink: 2;
}
.item:nth-child(2) {
flex-basis: 500px;
flex-shrink: 1;
/* shrink는 줄어드는 최소한의 넓이 , 2니까 1에 비해서 내가 2배만큼 더 줄어들게! 하는 양보의 의미, 숫자가 클수록 줄어드는 속도가 빠르다.*/
}
위의
flex-grow
,flex-shrink
,flex-basis
를 축약해서flex
로 사용한다.
/ flex
: flex-grow
, flex-shrink
, flex-basis
/
flex :1;
/ flex-grow:1;
flex-shrink:1;
flex-basis:0;
/
flex :1 1 300px;
/ flex-grow:1;
flex-shrink:1;
flex-basis:300px;
/
order
flex-item
들의 순서를 결정한다. 수의 의미로 순서를 결정하지 않고 우선순위의 개념(수의 크기)으로 이해한다. 수가 작을 수록 더 우선 순위를 부여 받는다. (음수도 사용이 가능하다.)