싸이월드 만들기 1탄 과제 코드 질문
싸이월드 만들기 1탄 과제 만들기 코드를
제가 한 과제와 비교하면서 공부하고 있습니다.
저하고 다른 부분이 있어서 그 이유가 궁금합니다.
HTML
<div class="left__body__footer">
<div class="wrapper__feel">
<div class="feel__title">오늘의 기분</div>
<select class="feel__select">
<option>기쁨 😊</option>
<option>슬픔 😭</option>
<option>화남 😠</option>
<option>분노 😡</option>
</select>
</div>
</div>html은 과제 class 이름 참고하면서 만들어서 똑같습니다.
CSS
.wrapper__feel { <--------- 과제 예시 코드
display: flex;
flex-direction: column;
justify-content: center;
width: 100%;
}위의 코드가 과제 예시 코드입니다.
아래 코드가 제가 한 코드입니다.
.feel__select { <------ 제가 한 코드
width: 100%;
}
<-width 차이->
저는 div태그가 블록레벨 태그라서 <div class="feel__title">오늘의 기분</div> 안에 있는 '오늘의 기분'은 왼쪽으로 정렬되기 때문에 그대로 두고
위의 코드 예시처럼 select 박스만 크기 조절하여 해결했습니다.
저는 과제 내용의 셀렉트 박스의 width를 select 박스 자체에 100%로 주었고
과제 예시 코드는 자식요소의 div와 select가 포함된 <div class="wrapper__feel"> div를 정렬한 뒤 width 100%를 주었더라구요.
그런데 아래의 코드처럼 flex 정렬부분을 주석처리하니깐 width 속성이 안 먹더라구요.
그 이유가 궁금합니다.
.wrapper__feel {
/* display: flex;
flex-direction: column;
justify-content: center; */
width: 100%;
}
+++ 제가 한 코드를 지우고 과제 예시 코드 중 width: 100%; 부분을 지워도
과제 예시 코드와 결과와 같습니다.
flex 정렬이 되면 footer의 width 100% 속성이 상속되는 건가요?
display 정렬과 width의 관계에 대해 알고 싶습니다.
.wrapper__feel {
display: flex;
flex-direction: column;
justify-content: center;
/* width: 100%; */ <---- 과제 예시 코드의
이 부분을 지워도 결과가 같습니다.
}제가 한 코드를 지우고 이렇게만 해도 같은 결과가 나옵니다. 차이를 알고 싶습니다.
.feel__select { <- 제가 한 이 코드를 지우고 위의 코드 정렬부분만 실행해도 결과가 같음.
width: 100%;
}
답변 1
0
안녕하세요 hyun 님!
CSS는 부모의 속성이 자식에게 상속이 되는 특징이 있습니다.
따라서 최상단 부모가 width값을 가지고 있고, 자식에게는 따로 width를 지정하지 않아줬다면 자식은 부모의 속성을 따라가게 됩니다.
display:flex를 주게되면, 자식 요소들은 flex의 item으로 인식하게 됩니다.
flex는 direction에 따라 제어하는 부분이 달라지게 됩니다.
direction:row 를 주게 되면 제어하는 파트가 width 값이 되고, direction:colum을 주게 되면 제어하는 파트가 height가 됩니다.
따라서 flex의 컨테이너 부분에 아무리 width:100%를 주면 container의 크기만 100%가 되고, item의 width 값은 내용물의 크기만큼만 넓이를 가지고 가게 됩니다.
따라서 아이템의 width를 바꾸고 싶다면, item하나하나에 직접 width 값을 주어야 합니다.(flex의 제어 속성이 상속되니까요!)
하지만 display:flex 부분에 주석을 걸면, 해당 div는 태그 본래 속성인 display:block으로 속성을 적용받게 됩니다.
그럼 내부 자식요소들은 flex와 다르게 item이 아닌 각각의 자식요소로 인식하게 됩니다.
따라서 select는 태그 고유의 속성 display:inline-block 이 적용되게 되고, inline-block은 본인의 내용물 넓이에 따른 width값 만큼만 넓이를 가져갑니다.
자식태그인 select태그 자체에 고유 width 값이 지정되어 있기 때문에 해당 부분에 주석을 걸게 되면 width 값이 상속되지 않습니다.
상속값이 어떻게 적용되고 있는지 개발자 도구의 elements 탭을 이용해서 한번 알아보시면 조금 더 도움이 될 수 있을 것 같습니다.
싸이월드3
0
77
2
싸이월드2 관련 질문 드립니
0
92
3
과제 모범답안 유무
0
89
2
과제 연습 질문
0
71
2
<style> 에 *와 div 차이
0
86
2
과제 profile 부분 질문
0
112
2
과제 Profile 부분 질문
0
86
2
left_body_header의 자식border-top인데
0
77
2
정렬 연습중인데 왜 여성과 남성 칸이 가로로 배열 안되는지 모르겠습니다.
0
127
1
태그 궁금한 점
0
162
2
HTML 회원가입
0
192
2
문법관련 질문입니다
0
253
2
윈도우 누른치로 마침표 눌렀는데 이모지가 안되는데용.?./.
0
648
2
26분50초에 세로줄 어떻게 해요 ..? ㅎㅎㅎ
0
250
2
피그마에서 css 코드가 안보여요..
1
3217
2
주석기능을 하고 싶은데 컨트롤+느낌표가 안됩니다 ㅠㅠ
0
325
2
언어 설정 -> 한글
0
289
1
2024년 html
0
226
1
피그마 유료화
0
1670
1
Fiama 링크 찾기
0
239
2
Figma는 어디에 있나요?
0
251
1
안녕하세요. 제공되는 노션 학습자료는 어디서 확인가능한가요?
0
357
2
git 질문입니다
0
216
1
아무리 찾아봐도 피그마 링크가 보이질 않습니다.
0
312
1





