본문 바로가기
web/HTML&CSS

[HTML/CSS]:hover로 transition 효과주기

by 바까 2020. 4. 1.
반응형

CSS의 transition을 이용해서 마우스를 이미지에 hover 할 때 원형 효과 주는 것을 연습해 보았다. 

우선 html에서 배경을 넣을 영역과 텍스트를 넣을 영역을 만들어준다.

텍스트 영역 안에는 큰글씨와 작은 글씨로 나눌 거라 h1태그와 span태그를 사용했다. 

[html]

<body>
    <div class="circle">
        <div class="textBox">
            <h1>Tree</h1>
            <span>by Gayouni</span>
        </div>
    </div>
</body>

html은 여기서 끝! 간단하게 만들어볼거라 원 하나만 만들었다. 

다음 css에서 배경을 원형으로 바꿔줄 것이다.

[css]

div.circle {
    width: 200px; height: 200px; border-radius: 50%;
    margin: 20px 30px; position: relative;
    box-shadow: inset 0 0 0 16px rgba(207, 207, 207, 0.6);
    transition: all 1s ease-in-out;
}

rgba를 이용해서 box-shadow를 투명하게 만들어준다. 

배경에 transition을 설정해준 뒤

아직 중구난방인 텍스트를 정렬하러가보자.

.circle .textBox{
    width: 100%; height:100%; border-radius: 50%;
    text-align: center;
    color: black;
    position:absolute; left: 0; top:0;
    padding: 60px 20px;
    box-sizing: border-box;
    opacity: 0;
    transform: scale(0);
    transition: all 1s ease-in-out;
}

text-align을 사용해서 텍스트를 가운데로 정렬시키고

부모에는 position:relative; 를 먼저 준 다음 자신은 absolute를 줘서 배경과 텍스트 영역이 아예 겹치게 만들었다.

패딩은 안에 더 이쁘게 정렬되도록 준 것

마찬가지로 트렌지션을 미리 주고

opacitiy와 trasnform:scale을 각각 0으로 준다.

나중에 hover상태일 때 opacitiy는 점점 나타나도록 scale은 점점 커지도록 하는 효과이다.


transition에 ease-in-out 설정을 준 이유는 지속시간이 1초라 linear나 다른 속성들과 눈에 띄게 큰 차이는 없지만 좀 더 스무스한 느낌이 들기 때문이다.


안에 있는 h1과 span 태그 안에 있는 텍스트도 개별 설정해준다.

h1 {font-size: 20px; letter-spacing: 2px;}
span {color:red;}

 

이제 :hover 효과를 줄 것이다.

먼저 배경 영역에 hover를 먼저 설정해서 텍스트가 아닌 배경색에 transition 효과를 준다.

div.circle:hover {  
    box-shadow: 
    inset 0 0 0 100px rgba(148, 110, 110, 0.6);
}

box-shadow를 inset으로 주고 배경색 또한 투명하게 줘서 마우스를 가져다 대면 자연스럽게 안쪽으로 그림자가 진다.

다음은 텍스트를 반대로 나타나게 해야 한다.

전에 줬던 투명도와 크기를 다시 원래대로 돌려놓으면 된다.

div.circle:hover .textBox {opacity: 1;transform: scale(1);}

:hover는 textBox가 circle 영역에 꽉 차 있기 때문에 circle에 호버를 하면 텍스트가 효과가 나타나게 해야 한다.


실행화면

See the Pen JjdzZbM by gayuon (@gayuon) on CodePen.


 

 

반응형

'web > HTML&CSS' 카테고리의 다른 글

html emmet(에멧) 문법  (0) 2024.09.11
[html]meta 태그  (0) 2021.11.09
HTML 하이퍼링크  (0) 2020.03.30
HTML에 구글 웹 폰트/웹 아이콘 사용하기.  (0) 2020.03.27
[CSS]transform(3D변형)효과 주기  (0) 2020.03.27

댓글