2019-08-16 CSS 심화

  • animations, transitions, transformations, media query에 대해서 배운다.

transition

  • 트랜지션은 state가 바뀔 때 적용이 된다. hover, active, focus, visited가 있다.
<head>
    <meta charset="UTF-8">
    <title>Transitions</title>
    <style>
        .box {
            background-color: green;
            color: white;
            transition:all .5s ease-in-out;
        }
        .box:hover {
            background-color: red;
            color: blue;
        }
        .box:active {
            background-color: blue;
            color: white;
        }
    </style>
</head>
<body>
<span class="box">
    Text
</span>
</body>
  • transition:all을 하면 해당 효과가 일어날때 다 바뀐다. 예를 들어 transition:color 또는 transition:background-color를 하면 hover나 active가 일어날때, color, background-color만 바뀐다.

transformations

  • 참조문서
  • html문서의 element를 변경, 모습이 변하는 효과
<head>
    <meta charset="UTF-8">
    <title>Transformation</title>
    <style>
        .box{
            width: 500px;
            height: 500px;
            background-color: red;
            transition: transform .5s;
        }
        .box:hover {
            transform: rotate(45deg);
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
  • transition에 transfrom효과를 넣으면 좋다.

Animations

  • 계속 효과를 반복하려면? 애니메이션을 생성하면 된다.
  • 키프레임은 css에 애니메이션을 생성했다는 것을 가르켜준다. from에서 to가 필요하다.
<head>
    <meta charset="UTF-8">
    <title>Animation</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: red;
            animation: 1.5s scaleAndRotateSquare infinite ease-in-out;
        }
        @keyframes scaleAndRotateSquare {
            from{
                transform: none;
            }
            to {
                transform: rotate(1turn) scale(.5, .5);
            }
        }
    </style>
</head>
<body>
<div class="box">

</div>
</body>

    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: red;
            animation: 1.5s scaleAndRotateSquare infinite ease-in-out;
        }
        @keyframes scaleAndRotateSquare {
            0% {
                transform: none;
            }
            50% {
               transform: rotate(1turn) scale(.5, .5);
                background-color: blue;
            }
            100% {
                transform: none;
                background-color: red;
            }
        }
    </style>
  • step이 많으면 %단게별로 하고, 스텝이 2단계면 from-to를 쓴다.

Media query

  • 큰 스크린을 위한 css, 작은 화면을 위한 css가 있다.
<head>
    <meta charset="UTF-8">
    <title>Media Query</title>
    <style>
        body {
            background-color: green;
        }
        @media screen and (min-width: 320px) and (max-width: 640px){
            body {
                background-color: blue;
            }
        }
    </style>
</head>
  • @media screen에서 min-width와 max-width를 기준으로 브라우저 별로 css를 설정할 수 있다.
Written on August 16, 2019