상호 작용을 위한 가상클래스

:hover

사용자가 마우스를 요소 위에 올렸을 때 적용됩니다. 스마트폰이나 패드 류의 터치스크린 기기에서는 사용자의 손가락이 호버되는 시점을 알 수 없기 때문에 모바일 기기가 많아지면서 점점 사용 빈도가 줄어드는 기능입니다.

:active

사용자가 요소를 실행할 때(버튼을 누르거나 링크를 클릭할 때) 적용됩니다.

:focus

요소에 포커스가 있을 때 적용됩니다. 클릭할 수 있는 요소나 폼컨트롤(input, select 등등)과 같이 상호작용 할 수 있는 모든 요소에는 포커스가 가능합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>버튼</title>
    <style>
        .btn {
            border: 4px solid palevioletred;
            border-radius: 4px;
            padding: 30px 60px;
            background: none;
            color: palevioletred;
            font-size: 32px;
            position: relative;
            overflow: hidden;
            cursor: pointer;
            transition: all .3s;
        }

        .btn:hover {
            color: white;
            border: 4px solid firebrick;
        }

        .btn:before {
            content: "";
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: palevioletred;
            z-index: -1;
            border-radius: 100px 100px 0px 0px;
            height: 0px;
            transition: all .3s;
        }

        .btn:hover:before {
            height: 120px;
            background: firebrick;
        }

        .btn:active {
            background-color:#000;
        }

        .box {
            border:1px solid palevioletred;
            display:block;
            height:40px;
            margin-bottom:10px;
            padding:0 5px;
        }

        .box:focus {
            background-color:rgba(0,0,255,0.1);
        }

        .box:focus::placeholder {
            color:red;
            font-weight:600;
        }

    </style>
</head>
<body>
    <input type="text" class="box" placeholder="Click Here!">
	<button class="btn">Click Me!!</button>
</body>
</html>

좀 더 단순한 예제

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>hover, active, focus</title>
    <style>
        .one {
            background: blueviolet;
            width: 100px;
            height: 100px;
            transition: all 2s;
        }
        .one:hover {
            background:crimson;
            width: 200px;
            height: 200px;
        }
        .btn {
            border: 4px solid palevioletred;
            border-radius: 4px;
            padding: 30px 60px;
            background: none;
            color: palevioletred;
            font-size: 32px;
            transition: all .3s;
        }
        .btn:active {
            background-color: purple;
            color:white;
        }
        .box {
            transition: all .3s;
        }
        .box:focus {
            background: red;
            color: white;
        }
    </style>
</head>
<body>
    <div class="one"></div>
    <input type="text" class="box" placeholder="click here!">
    <button class="btn">Click Me!!</button>
</body>
</html>