1. CSS 변수의 고급 활용법
CSS 변수는 단순히 색상이나 크기뿐만 아니라, 다른 CSS 함수와 결합하여 유동적인 값을 설정할 때 유용합니다. 이때 변수를 동적으로 조절하면 반응형 디자인과 효과적인 스타일 관리를 동시에 할 수 있습니다.
예제: 반응형 텍스트 크기 조정
CSS 변수를 calc()와 함께 사용해, 화면 크기에 따라 텍스트 크기를 유동적으로 조정할 수 있습니다.
:root {
--base-font-size: 16px;
--scale-factor: 1.2;
}
body {
font-size: calc(var(--base-font-size) * var(--scale-factor));
}
@media (max-width: 768px) {
:root {
--scale-factor: 1;
}
}
@media (max-width: 480px) {
:root {
--scale-factor: 0.8;
}
}
코드 설명
- 화면 크기에 따라 --scale-factor 변수를 조절하여 폰트 크기가 자동으로 반응형으로 변경됩니다.
2. 가상 클래스와 가상 요소 활용
CSS의 가상 클래스와 가상 요소는 사용자 상호작용 및 시각적 효과를 더하는 데 유용합니다. 주로 :hover, :focus, ::before, ::after 등이 사용됩니다.
1) 가상 클래스 :hover와 :focus
- :hover: 요소에 마우스를 올렸을 때 적용
- :focus: 요소에 포커스가 잡혔을 때 적용 (주로 버튼, 입력 필드)
.button {
background-color: lightblue;
transition: background-color 0.3s;
}
.button:hover, .button:focus {
background-color: deepskyblue;
}
2) 가상 요소 ::before와 ::after
가상 요소는 콘텐츠 앞이나 뒤에 장식 효과를 추가할 때 유용합니다.
.heading::before {
content: "★ ";
color: gold;
}
.heading::after {
content: " ★";
color: gold;
}
3. CSS 필터 효과 (Filters)
필터는 이미지나 요소에 특정 시각적 효과를 적용합니다. 대표적으로 blur, brightness, contrast 등이 있습니다.
필터 속성 예제
.image {
filter: brightness(0.8) contrast(1.2) blur(2px);
}
코드 설명
- brightness(0.8): 밝기를 80%로 조정
- contrast(1.2): 대비를 120%로 설정
- blur(2px): 2px의 흐림 효과 추가
필터 효과는 이미지, 배경, 버튼 등의 시각적 요소에 자주 사용되며, 사용자 상호작용에 따라 변화하도록 트랜지션과 결합할 수 있습니다.
4. 레이아웃 트릭: CSS로 다양한 레이아웃 만들기
CSS의 position, display, overflow 등을 조합하여 레이아웃을 더욱 유연하게 만들 수 있습니다.
1) 중첩 그리드 레이아웃
CSS Grid를 활용하여 그리드 안에 또 다른 그리드를 배치할 수 있습니다.
.container {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 20px;
}
.sub-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
}
2) position: sticky로 고정 요소 만들기
position: sticky 속성을 사용하면, 스크롤 시 특정 위치에 고정되는 요소를 만들 수 있습니다.
.sidebar {
position: sticky;
top: 10px;
}
코드 설명
- .sidebar는 스크롤 시 화면 상단에서 10px 아래에 고정되며, 지정된 위치까지 스크롤할 때까지는 기본 위치에 유지됩니다.
5. CSS로 화려한 효과 구현하기
1) 그라디언트 효과
CSS의 linear-gradient, radial-gradient를 사용하여 부드럽게 색상이 변하는 배경을 만들 수 있습니다.
.background {
background: linear-gradient(to right, #3498db, #9b59b6);
}
2) 트랜지션과 트랜스폼을 이용한 효과
트랜지션과 트랜스폼을 결합하여 상호작용 시 시각적인 피드백을 줄 수 있습니다.
.card {
transition: transform 0.3s ease;
}
.card:hover {
transform: scale(1.05) rotate(5deg);
}
코드 설명
- .card에 마우스를 올리면 크기가 커지면서 약간 회전하여 시각적 효과가 나타납니다.
6. 실전 예제: 고급 CSS 기법을 활용한 카드 디자인
아래는 CSS 변수, 가상 요소, 필터 효과 등을 활용하여 카드 UI에 다양한 효과를 적용한 예제입니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<title>고급 CSS 기법 예제</title>
<style>
/* CSS 변수 */
:root {
--card-bg: linear-gradient(135deg, #3498db, #9b59b6);
--text-color: #fff;
--card-width: 300px;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background-color: #f5f5f5;
font-family: Arial, sans-serif;
}
/* 카드 스타일 */
.card {
width: var(--card-width);
background: var(--card-bg);
color: var(--text-color);
padding: 20px;
border-radius: 15px;
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
position: relative;
overflow: hidden;
transition: transform 0.3s;
}
.card::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.1);
mix-blend-mode: overlay;
}
.card:hover {
transform: scale(1.05);
}
.card h2 {
margin: 0 0 10px;
font-size: 24px;
}
.card p {
font-size: 16px;
line-height: 1.5;
}
.card img {
width: 100%;
border-radius: 10px;
filter: brightness(0.9);
}
</style>
</head>
<body>
<div class="card">
<h2>고급 CSS 카드</h2>
<p>이 카드는 CSS 변수, 가상 요소, 필터 효과를 활용해 디자인되었습니다.</p>
<img src="https://via.placeholder.com/300" alt="이미지">
</div>
</body>
</html>
코드 설명
- CSS 변수로 카드의 배경과 텍스트 색상을 관리하여 수정이 용이하도록 했습니다.
- 가상 요소 ::before를 사용해 카드에 오버레이 효과를 주어 시각적 깊이를 더했습니다.
- 필터로 이미지의 밝기를 조정하여 일관된 색조를 유지했습니다.
- 마우스 호버 시 트랜지션과 트랜스폼으로 카드가 확대되어 생동감을 줍니다.
요약
이번 강의에서는 CSS의 고급 기법을 통해 더욱 다채로운 스타일링 방법을 익혔습니다. CSS 변수, 필터, 가상 요소 등을 결합해 시각적으로 매력적이고 유지보수가 용이한 코드를 작성할 수 있습니다. 다음 강의에서는 CSS 애니메이션을 더 깊이 다루어, 웹 페이지에 동적인 효과를 추가하는 방법을 알아보겠습니다.
'Study > CSS' 카테고리의 다른 글
CSS 기초 강의 13편: CSS와 JavaScript를 결합한 고급 애니메이션과 인터랙션 (0) | 2024.11.28 |
---|---|
CSS 기초 강의 12편: CSS 애니메이션과 인터랙션 심화 (0) | 2024.11.27 |
CSS 기초 강의 10편: CSS 프레임워크를 활용한 빠른 웹 페이지 제작 (0) | 2024.11.25 |
CSS 기초 강의 9편: CSS 변수와 함수 활용하기 (0) | 2024.11.24 |
CSS 기초 강의 8편: 웹 접근성과 시맨틱 태그 활용하기 (0) | 2024.11.23 |