오늘 input 요소의 border-bottom에 그라데이션을 적용하는 과정에서 여러 방법을 시도하고 학습했습니다.
1. border-image 속성 사용 (첫 번째 시도): - 시도한 코드:
'border-image': 'linear-gradient(to right, #12F287 0%, rgba(18, 242, 135, 1) 50%, #12F287 100%)
1 - 문제점: 시작과 끝 부분이 rgba가 아니어서 그라데이션 효과가 제대로 나타나지 않았음
2. Tailwind plugin을 사용한 방법 (두 번째 시도): - tailwind.config.js에 다음과 같은 plugin 추가:
plugin(function ({ addUtilities }) {
const newUtilities = {
'.border-gradient': {
position: 'relative',
'::after': {
content: '""',
position: 'absolute',
left: '0',
right: '0',
bottom: '0',
height: '2px',
background: 'linear-gradient(to right, rgba(18, 242, 135, 0.1), rgba(18, 242, 135, 0.3), rgba(18, 242, 135, 0.1))',
},
},
};
addUtilities(newUtilities);
}),
- 문제점: 부모 요소의 position 설정과 관련하여 예상대로 작동하지 않음
3. Stack Overflow에서 제안받은 방법:
<div class="relative w-64 bg-sky-50 before:absolute
before:inset-x-0 before:bottom-0 before:h-1 before:bg-gradient-to-r
before:from-transparent before:via-green-500 before:to-transparent">
이 방법은 pseudo-element를 사용하여 그라데이션을 적용하는 접근법
4. 최종 해결책:
plugin(function ({ addUtilities }) {
const newUtilities = {
'.border-gradient': {
'border-image':
'linear-gradient(to right, rgba(0, 0, 0, 0.3) 0%, rgba(18, 242, 135, 1) 50%, rgba(0, 0, 0, 0.3) 100%) 1',
'border-image-slice': '1',
'border-width': '0 0 1px 0',
},
};
addUtilities(newUtilities);
}),
성공 요인:
- border-image 속성 사용
- linear-gradient의 시작과 끝에 rgba로 투명도 적용
- border-width로 bottom에만 적용되도록 설정
학습 포인트:
- border-image와 linear-gradient를 조합하여 복잡한 border 스타일을 만들 수 있다는 것을 배웠습니다. border-bottom에만 그라데이션을 적용하는 방법을 알게 되었습니다.
- rgba 색상 값의 알파 채널을 조절하는 것이 자연스러운 그라데이션 효과를 만드는 데 매우 중요하다는 것을 깨달았습니다. 처음에는 이 부분을 간과했다가 나중에 이를 적용하여 원하는 효과를 얻을 수 있었습니다.
- pseudo-element를 사용한 스타일링 기법이 복잡한 디자인을 구현하는 데 유용하다는 것을 배웠습니다.
- 한 가지 문제를 해결하기 위해 여러 가지 접근 방식을 시도해 본 것이 매우 유익했습니다. 이 과정에서 CSS의 다양한 속성들과 그 상호작용에 대해 더 깊이 이해하게 되었고, 문제 해결 능력도 향상되었다고 느꼈습니다.
- 스택오버플로우 같은 커뮤니티 리소스를 활용하는 것의 중요성을 다시 한번 깨달았습니다. 다른 개발자들의 접근 방식을 참고하면서 새로운 아이디어를 얻고 문제를 다각도로 바라볼 수 있었습니다.
'TIL' 카테고리의 다른 글
TIL - 운동 기록 루틴 Supabase 연동 (0) | 2024.07.31 |
---|---|
TIL - 드롭다운 구현 select에서 커스텀 button+ul로의 전환 (0) | 2024.07.30 |
TIL - 하단 네비게이션 바 구현 (0) | 2024.07.26 |
TIL -회원가입 폼 컴포넌트 리팩토링을 통한 코드 구조 개선 (0) | 2024.07.25 |
TIL - 퍼널 구조 개선 (2) | 2024.07.24 |