2024. 1. 11. 11:15ㆍCSS
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
툴팁 레이아웃(html) 및 스타일(scss)
<div class="wrap">
<button>
New
<span class="tooltip">새로운 소식!</span>
</button>
</div>
.wrap {
display: flex;
justify-content: center;
align-items: center;
outline: 1px solid red;
button {
position: relative;
}
.tooltip{
position: absolute;
bottom: calc(-100% - 20px - 6px - 2px); //패딩, 삼각형 높이, 사이 간격 값들 빼기
left: 50%;
z-index: 999;
transform: translateX(-50%);
width: 150px;
padding: 10px;
border-radius: 4px;
background-color: #fff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.25);
box-sizing: border-box;
&::before {
position: absolute;
top: -6px;
left: 50%;
transform: translateX(-50%);
z-index: 998;
display: inline-block;
content: '';
border: solid transparent;
border-width: 0 6px 6px;
border-bottom-color: #fff;
}
}
}
툴팁 모션(motion) 추가
삼각형(화살표) 기준으로 툴팁 크기(scale)가 0에서 100으로 나타났다(show), 사라졌다(hide)하는 모션 스타일을 추가해 봅시다.
.wrap {
display: flex;
justify-content: center;
align-items: center;
outline: 1px solid red;
button {
position: relative;
}
.tooltip{
position: absolute;
bottom: calc(-100% - 20px - 6px - 2px);
left: 50%;
z-index: 999;
transform: translateX(-50%);
width: 150px;
padding: 10px;
border-radius: 4px;
background-color: #fff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.25);
box-sizing: border-box;
// 툴팁 모션 추가하기
transform: scale(0) translateX(-50%);
transform-origin: 0 -6px;
transition: transform .3s cubic-bezier(.9, .28, .45, .75);
&::before {
position: absolute;
top: -6px;
left: 50%;
transform: translateX(-50%);
z-index: 998;
display: inline-block;
content: '';
border: solid transparent;
border-width: 0 6px 6px;
border-bottom-color: #fff;
}
&.show {
transform: scale(1) translateX(-50%);
transition: transform .3s cubic-bezier(.9, .28, .45, .75);
}
&.hide {
transform: scale(0) translateX(-50%);
transition: transform .3s cubic-bezier(.9, .28, .45, .75);
}
}
}
이제 스크립트를 정의해 봅시다.
페이지가 로딩이 완료되면 툴팁 요소에 show 클래스를 추가합니다. 이로써 툴팁이 화면에 나타나게 됩니다.
setTimeout을 활용하여 툴팁이 5초 동안 화면에 나타나고, 그 후에 사라지게 처리했습니다.
const tooltip = document.querySelector('.tooltip');
window.addEventListener('DOMContentLoaded', () => {
tooltip.classList.add('show');
setTimeout(function() {
tooltip.classList.remove('show');
tooltip.classList.add('hide');
}, 5000);
})
transform-origin 속성 이해하기
transform-origin는 transform 속성과 함께 사용되어 요소의 변형 중심을 조절하는 데 유용합니다.
이 속성을 사용하면 해당 요소의 위치를 기준으로 회전(rotate), 크기 조절(scale), 기울임(skew) 등의 변형이 발생할 때 중심점을 지정할 수 있습니다. transform-origin의 값은 요소의 크기를 기준으로 상대적인 길이나 키워드로 지정할 수 있습니다.
길이 값
- px, 백분율(%) 등으로 지정할 수 있습니다.
- 0, 0%는 해당 방향의 시작 지점을 나타냅니다.
- 100%는 방향의 끝 지점을 나타냅니다.
키워드 값
- center : 요소의 중심을 나타냅니다.
- top, bottom, left, right : 각 상단, 하단, 좌측, 우측을 나타냅니다.
[Javascript] 브라우저 창 크기를 측정하는 주요 속성들에 대해서 알아보자
window.screen.width, window.screen.height, window.outerWidth, window.outerHeight, window.innerWidth, window.innerHeight, document.documentElement.clientWidth, document.documentElement.clientHeight 이러한 속성들은 모두 창의 크기를 나타내지
dev-chim.tistory.com
Vite에서 모듈들 간단하게 설치해서 사용하기 (feat. swiper) - 3편
https://swiperjs.com/ Swiper - The Most Modern Mobile Touch Slider Swiper is the most modern free mobile touch slider with hardware accelerated transitions and amazing native behavior. swiperjs.com 홈페이지 구축할 때, 자주 사용하는 UI 중 하
dev-chim.tistory.com
[Javascript] JavaScript로 스크롤 조작하기, scrollTo(), scrollBy(), scrollIntoView()
scrollTo(), scrollBy(), scrollIntoView() 메서드를 활용해 스크롤 조작하는 방법에 대해서 알아보겠습니다. scrollTo() 이동할 좌표값을 받아 절대적인 위치로 스크롤을 이동시킵니다. window.scrollTo(x좌표, y좌
dev-chim.tistory.com
[git] Github Desktop으로 아주 쉽게 저장소(repository)를 로컬에 클론(clone)하기
Github Desktop으로 아주 쉽게 저장소(repository)를 로컬에 클론(clone)하는 방법에 대해서 알아보겠습니다. Github Desktop 사이트 바로가기 Github에서 제공하는 애플리케이션으로 GUI(Graphical User Interface)로
dev-chim.tistory.com
[Utility] Snipaste - 무료 캡쳐 도구, 핀(Pin) 고정, 클립보드(Clipboard), 색상 추출(Color Picker)
스니페이스트(Snipaste)는 화면 캡쳐부터 다양한 편집 기능을 제공하여 작업 효율성을 높여주는 도구입니다. 가장 매력적인 기능으로 핀 고정이 있고, 스크린샷을 저장할 수 있음은 물론이고, 클
dev-chim.tistory.com
'CSS' 카테고리의 다른 글
[SCSS] 자연스러운 전환을 위한 Overlay 팝업의 Dim 영역 처리 (0) | 2024.01.17 |
---|---|
[CSS] SCSS를 활용한 동적 Spinner 애니메이션 만들기 (1) | 2024.01.15 |
[CSS] 유튜브(Youtube) 영상을 비율 유지한 채 반응형으로 삽입하는 방법 (0) | 2023.04.11 |
[CSS] Animation 속성 정리, 참고 사이트 추천 (0) | 2023.03.24 |
반응형 페이지 작업할 때, 분기점 순서 설정하는 법 (0) | 2022.10.12 |