flex UI : 메시지 리스트

라용·2022년 7월 14일
0

flex UI

목록 보기
4/7

1분코딩, 인프런 강의 CSS Flex와 Grid 제대로 익히기를 공부하며 기록한 내용입니다. flex 를 활용해 가장 기본적인 UI 형태를 만들어 봅니다. 아래 내용은 프로필 사진과 메시지가 있는 리스트를 만드는 방법입니다.

html 마크업은 아래와 같이 작성합니다.

<ul class="user-list message-list"> 
	<li class="user-item message-item">
		<figure class="user-photo" style="background-image: url(이미지주소);"></figure>
		<p>lorm20</p>
	</li>
	<li class="user-item message-item">
		<figure class="user-photo" style="background-image: url(이미지주소);"></figure>
		<p>lorm20</p>
	</li>
	<li class="user-item message-item">
		<figure class="user-photo" style="background-image: url(이미지주소);"></figure>
		<p>lorm20</p>
	</li>
</ul>

이런 프로필 이미지는 DB에서 데이터를 가져와서 뿌려지는 경우가 많습니다. 크기나 비율이 제각각인 이미지를 통일되게 보여주려면 html 태그에 스타일 속성, background-image 로 이미지를 넣는 게 좋습니다.
위 코드는 figure 태그에 스타일 속성으로 이미지를 넣습니다. figure 태그 안에 콘텐츠가 없기 때문에 아직 이미지가 보이진 않습니다.

css 스타일을 아래와 같이 적용해보면,

.message-item {
    display: flex; // 가로 배치
    margin-bottom: 1.4em;
}
.user-photo {
    width: 50px;
    height: 50px;
    margin-right: 0.5em;
    border-radius: 50%; // 테두리 둥글게
    background-repeat: no-repeat; // 배경 반복 안되게
    background-position: center; // 사진 가운데 정렬
    background-size: cover; // 커버사이즈에 맞게 이미지 리사이징
}

아래와 같이 이미지가 짜부됩니다. 오른쪽 컨텐츠가 길어서 사진을 눌르고 있습니다.

이럴 때는 flex-shrink 를 사용합니다.

.message-item {
    display: flex; // 가로 배치
    margin-bottom: 1.4em;
}
.user-photo {
	flex-shrink: 0; // 줄어드는 움직임 에 관여
    width: 50px;
    height: 50px;
    margin-right: 0.5em;
    border-radius: 50%; // 테두리 둥글게
    background-repeat: no-repeat; // 배경 반복 안되게
    background-position: center; // 사진 가운데 정렬
    background-size: cover; // 커버사이즈에 맞게 이미지 리사이징
}

그런 아래와 같이 사진이 정상적으로 보입니다.

profile
Today I Learned

0개의 댓글