[ CSS ] 마우스 hover시에 tip 메세지 보여주기
아이콘에 마우스를 가져다대면, tip 말풍선을 보여주는 UI를 자주 볼 수 있습니다.
위의 사진과같은 기능은 CSS만으로도 구현이 가능합니다.
HTML
<div id="radio_container">
<div class="tip">
<p>
원하는 tip 메세지
</p>
</div>
</div>
CSS
.container {
position: relative;
}
.tip{
position: absolute;
top: 8px;
left: 55px;
font-size: 14px;
line-height: 26px;
text-align: center;
background-color: #b3dfe6;
border-radius: 50%;
width: 24px;
height: 24px;
cursor: default;
}
.tip:before{
content:'?';
font-weight: bold;
color:#fff;
}
.tip:hover p{
visibility: visible;
opacity: 1;
}
.tip p{
opacity: 0;
visibility: hidden;
color: #fff;
font-size: 13px;
line-height: 1.4;
text-align: left;
background-color: #0064b7;
width: 400px;
padding: 20px;
border-radius: 3px;
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2), -1px -1px 3px rgba(0, 0, 0, 0.2);
position: absolute;
right: -370px;
transition: visibility 0s, opacity 0.5s linear;
}
.tip p:before{
position: absolute;
content: '';
width:0;
height: 0;
border:6px solid transparent;
border-bottom-color:#0064b7;
left:10px;
top: -12px;
}
"?" 아이콘을 만들기
.tip {
...
background-color: #b3dfe6;
border-radius: 50%;
width: 24px;
height: 24px;
}
.tip:before{
content:'?';
font-weight: bold;
color:#fff;
}
background 와 border-radius를 통해서, width와 height가 24px인 동그란 원을 만듦
before를 이용해서, 흰색의 두꺼운 폰트를 가진 "?" 컨텐츠를 가진 가상 요소를 생성
hover 이벤트
.tip:hover p{
visibility: visible;
opacity: 1;
}
.tip p{
opacity: 0;
visibility: hidden;
...
transition: visibility 0s, opacity 0.5s linear;
}
visibility 속성과 opacity를 이용해, tip 메세지인 p태그를 마우스 hover시에만 보이도록 지정
visibility속성은 문서의 레이아웃을 변경하지 않고, 요소를 보이거나 숨기도록 합니다.
말풍선 UI 만들기
.tip p{
...
color: #fff;
font-size: 13px;
line-height: 1.4;
text-align: left;
background-color: #0064b7;
width: 400px;
padding: 20px;
border-radius: 3px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);
...
}
.tip p:before{
position: absolute;
content: '';
width:0;
height: 0;
border:6px solid transparent;
border-bottom-color:#0064b7;
left:10px;
top: -12px;
}
기본 틀이되는 p 태그를 만들고, 삼각형의 모양의 가상요소를 만들어서 p태그 위에 붙히게 되면, 말풍선 모양이 만들어집니다.
border: 6px solid transparent; 를 통해서 12px x 12px의 투명한 요소가 만들어집니다.
border-bottom-color를 이용하게 되면, 바텀 border에 대해서만, 컬러를 지정할 수 있습니다.
border:15px solid transparent;
border-bottom-color:#64c1ff;
border-top-color:red;
border-left-color:gold;
border-right-color:black;
border-bottom-color를 더 자세히 확인해보기 위해서, 볼더 15px을 가지는 투명 요소를 만들고, top/ right/ bottom/ lef에 대해서 각기 다른 색을 주면 아래의 사진과 같은 모양이 나옵니다.
따라서, 바텀의 부분의 색을 tip 메세지의 배경과 같은 색으로 만들고, 위에 배치하게 되면 자연스러운 말풍선 모양이 만들어지게 됩니다.