HTML,CSS

네카라쿠배 프론트엔드 취업완성 스쿨 2기 [Chapter.15] (CSS 속성- 띄움(정렬),위치 )

리모찌 2023. 8. 16. 18:29

 

 

01.float

 

 

요소를 좌우방향으로 띄움( 수평 정렬)

 

 

 

의미 기본값
none 요소 띄움 없음 none
left 왼쪽으로 띄움  
right 오른쪽으로 띄움  

 

 

사용법

 

float:방향





float{



float:left;



}

 

 

 

 

 

 

 

 

 

 

 

 

float 해제

 

 

float  속성이 적용된 요소의 주위로 다른 요소들이 흐르게 되는데 이를 방지하기위해   속성을 '해제'해야함

 

형제요소에 clear:(left,right,both)   추가하여 해제 

부모요소에 overflow:(hidden,auto)   추가하여 해제

 

  부모 요소에 clearfix 클래스 추가하여해제 추천 !

 

 

형제 요소에서 해제

 

float 속성이 추가된 요소의 다음 형제요소에  clear 속성 추가 

 

 

 

형제 요소에서 해제

<div class="float-left"></div>
<div class="float-left"></div>
<div class="next"></div>




.float-left{

    width:100px;
    height:100px;
    background:red;
    float:left;

}

.next{
    clear:both;
}​

부모 요소에서 해제 1

float 속성이 추가된 요소의 다음 형제요소에 clear 속성 추가

 

<div class="parent">
<div class="child"></div>
<div class="child"></div>

</div>



.parent{
    overflow:hidden;                <!-- or 'auto' -->

}


.child{
    float:left;
}​

부모요소에서 해제2 (추천)

<div class="parent clearfix">
    <div class="child"></div>
    <div class="child"></div>
   
    </div>
   
   
   .clearfix::after{        <!-- 가상요소 추가 ,   content는 필수 -->
    content: "";                
    clear:both;                <!-- 영역의 가장 끝부분에서는 어떻게든 해제가 되는 방식  -->
    display:block;
   }


    .child{
        float:left;
    }​

 

 

 

 

 

 

 

 


02.float-display 수정

 

 

 

float 속성이 추가된 요소는 display 속성의 값이 대부분 block 으로 수정 됨

지정값 변화값
inline block
inline-block block
inline-table block
table-row block
table-row-group block
table-column block
table-column-group block
table-cell block
table-catption block
table-header-group block
table-footer-group block
flex flex/float 속성 효과 없음 ( float이 있어도 블럭으로 바뀌지않음)
inline-flex inline-flex/ float 속성 효과없음
그외 변화없음
 

 

 


03.clear

 

 

 

float 속성이 적용되지 않도록 지정 (해제)

 

속성 값

 

 

 

 

 

의미 기본값
none 요소 띄움 허용 none
left 왼쪽 띄움 해제  
right 오른쪽 띄움 해제  
both 양쪽(왼쪽,오른쪽) 모두 띄움 해제   

 

 


04.position 그리고 top,bottom,left,right

 

 

 

 

 

position

 

요소의 위치 지정 방법의 유형(기준) 을 설정

 

 

속성 값

 

 

 

 

의미 기본값
static 유형(기준)없음/배치 불가능 static
relative 요소 자신을기준으로 배치  
absolute 위치상 (부모)요소를 기준으로 배치  
fixed 브라우저(뷰포트)를 기준으로 배치  
sticky 스크롤 영역 기준으로 배치   

 

 

 

 

 

top

 

 

요소의 position 기준에 맞는 위쪽에서의 거리를지정

의미 기본값
auto 브라우저가 계산 auto
단위 px,em,cm등 단위로 지정 0
% 부모(위치 상의 부모(조상))요소의 세로

너비를 비율로 지정,음수 값 허용 
 

 

 

 

bottom

 

 

요소의 position 기준에 맞는 아래쪽에서의 거리를지정

의미 기본값
auto 브라우저가 계산 auto
단위 px,em,cm등 단위로 지정 0
% 부모(위치 상의 부모(조상))요소의 세로

너비를 비율로 지정,음수 값 허용 
 

 

 

 

 

left

 

요소의 position 기준에 맞는 왼쪽에서의 거리를지정

의미 기본값
auto 브라우저가 계산 auto
단위 px,em,cm등 단위로 지정 0
% 부모(위치 상의 부모(조상))요소의 세로

너비를 비율로 지정,음수 값 허용 
 

 

 

 

 

right

 

 

요소의 position 기준에 맞는 쪽에서의 거리를지정

의미 기본값
auto 브라우저가 계산 auto
단위 px,em,cm등 단위로 지정 0
% 부모(위치 상의 부모(조상))요소의 세로

너비를 비율로 지정,음수 값 허용 
 

 

 

 

 

 


05.position 속성값 - relative

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


06.position 속성값 - absolute

 

 

 

 

 

 

 

 

 

 

 

 

CSS

 

 

.grand-parent {
  
  width:400px;
  height:300px;
  padding: 30px 100px 100px 30px;
  border: 4px dashed lightgray;
  
}

.parent {
  width:400px;
  height:300px;
  border:4px dashed gray;
  position:relative;
}

.child {
  width:120px;
  height:80px;
  background:tomato;
  border: 4px dashed red;
  border-radius:10px;
  font-size:30px;
  display:flex;
  justify-content:center;
  align-items:center;
}
.absolute {
/*   position:relative;  자신을 기준으로 배치될 준비를함 */
  position:abosolute;    /* 2번박스는 부모요소를 기준으로 배치될 준비가 끝남 ,  */
/* 부모요소에 position 이 있어야 자식요소의 absolute를 원하는 위치에 맞게 사용 가능함    */
  
  bottom:50px;      /*absolute 배치개념에서 가장정확함  */
  left:100px;
}

 

 

 


07.position 속성값 -fixed

 

 

 

 

 

 

 

 

 

 

쇼핑몰등 웹페이지에 들어갔을때 배너가 계속해서  붙어서 사용자를 따라가는 형태 

 

position:fixed;

 

 


08.position 속성값 -sticky

 

 

 

 

 

 


sticky

스크롤 영역 기준으로 배치해서 붙여서 사용 

.box{

    position:sticky;
    top:0;

}   

sticky는 top ,bottom 등 특정값이 한개이상 존재해야하고, 부여된값이 스크롤영역에 맞았을때에만 동작함

인터넷 익스플로어는 사용 불가



 

 

 

 

 

 

 

 

스크롤 영역안에 컨텐츠가 들어가있는 모습 

 

 


09.position 특징-요소 쌓임 순서(Stack Order)

 

 

 

 

 



요소가 쌓여있는 순서를 통해 
어떤 요소가 사용자와 가깝게 있는지 ( 더 위에 쌓이는지)를 결정(Z축)



1. static 을 제외한 position 속성의 값이 있을 경우 가장 위에 쌓임(값은 무관)

position:static;  = position을 사용하지않는것 


2.position이 모두 존재한다면 z-index 속성의 숫자값이 높을 수록 위에 쌓임


3. position 속성의 값이 있고, z-index속성의 숫자 값이 같다면, 
'HTML'의 마지막 코드일 수록 위에 쌓임 (나중에 작성한 코드 (요소 ))



 

 

 

 

 

 

 

 

z-index 와  포지션 쌓임 순서 

 

 

 

CSS 코드 

.box-group{
  display:flex;
  
}

.box-group .box {
  
  width:100px;
  height:100px;
  background:tomato;
  border:4px dashed red;
  border-radius:10px;
  font-size:30px;
  display:flex;
  justify-content:center;
  align-items:center;
  margin-right:-30px;
  box-shadow:0 0 10px rgba(250,0,0, .7);
}

.box-group .box:nth-child(2n){
  
  margin-top:30px;
}

.box1 {
  
}

.box2{
  
  
}
.box3{
  position:relative;

  /*  z-index:1; 
  z-index:  position이 있는곳에서만 쓸수 있음
    포지션의 우선순위를 결정시킴, 기본값:0
  z-index의 숫자가 올라갈 수록 더 높은 우선순위 
  box 4  에도 z-index값 1 을 주게되면4가 위에 쌓임 이유는 늦게 쓰인 코드 이기때문에 더 위로 쌓이게 된다. 
  */
}
.box4{
  position:relative;
/*     z-index:1;  */

}
.box5{
  
}

/* position이 있냐없냐에 따라서 누가 위에 쌓일지 결정됨
5번 박스는 position이 없기 때문에 쌓일 수 없고,

4번과 3번중 비교를 해야함 , html 에서 가장 마지막에 쓰인 position 코드가 위에 쌓이기 때문에 3번이 4번 밑으로가고 position이 있는 4번이 가장위로 올라가게 됨 */

 

 

 

 

 

 

 


10.position 특징 - display 수정

 

 

 

absolute,fixed 속성 값이 적용된 요소는 display 속성의 값이 대부분 block 으로 수정됨

 

 

float이 부여된 요소와  absolute , fixed는    display값이 뭐가 있었던간에 상관없이 블록으로 변경됨 

 

 

속성값

 

지정값 변화값
inline block
inline-block block
inline-table block
table-row block
table-row-group block
table-column block
table-column-group block
table-cell block
table-catption block
table-header-group block
table-footer-group block
flex flex/position 속성 효과 없음 
inline-flex inline-flex/ position 속성 효과없음
그외 변화없음