Skip to content

CSSの復習とアニメーション

ut.code(); Learnの復習

Q1. メディアクエリはどんなときに使いますか?

Q2. 次のうち、画面幅が 400px のときに適用されるメディアクエリはどれですか?

Q3. フレックスボックスを利用する際、display: flex を適用する要素は、配置したい要素の何にあたりますか?

Q4. グリッドを利用する際、列の幅を指定するために使うプロパティはどれ?

Q5. grid-column: 3 / 4 と書いた場合、その要素はグリッドの何列目に配置されますか?

全問正解できなかった方は、ut.code(); Learn のCSS による配置(発展) をもう一度読むことをオススメします。

アニメーション

CSS を用いれば、簡単なアニメーションを作成することもできます。

@keyframes

まず、@keyframes を用いたアニメーションについて説明します。

index.html
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>Title</title>
<link rel="stylesheet" href="./style.css" />
</head>
<body>
<div class="box"></div>
</body>
</html>

@keyframes でアニメーションを定義して、animation-name プロパティでアニメーションを適用します。

style.css
@keyframes example {
from {
background-color: lightcoral;
}
to {
background-color: lightblue;
}
}
.box {
height: 100px;
width: 100px;
background-color: black;
animation-name: example;
animation-duration: 3s;
}

% を用いて、アニメーションを定義することもできます。

style.css
@keyframes example {
33% {
background-color: lightcoral;
}
67% {
background-color: lightblue;
}
}
.box {
height: 100px;
width: 100px;
background-color: black;
animation-name: example;
animation-duration: 3s;
}

transition

次は、transition について学習していきます。 transition とは、CSS で要素のプロパティが変化したときに、その変化をアニメーションとして表示するためのプロパティです。 早速例を見ていきましょう。

style.css
.box {
width: 100px;
height: 100px;
background-color: blue;
transition: background-color 0.5s ease;
}
.box:hover {
background-color: red;
}

この例では background-color プロパティが変更されたときのアニメーションが transition プロパティで指定されています。 box という div 要素がホバーされたときに background-color が変更され、そのときに transition プロパティによって、0.5 秒かけて変化します。 変化する際の挙動については、ease というイージング関数で指定されています。ease 以外にも ease-in-outease-out などがあります。 タイミング関数の後に transition-delaytransition-behavior を指定することもできます。

演習

以下のコードのコメントの下に CSS を書いて、自由にアニメーションをつけてください。

style.css
.box {
height: 100px;
width: 100px;
background-color: lightblue;
border-radius: 50%;
animation-name: move;
animation-duration: 3s;
position: absolute;
left: 50%;
}
@keyframes move-around {
/* 自由にアニメーションをつけてください! */
}

例えば、このように書いたらどうなるでしょうか?

style.css
.box {
height: 100px;
width: 100px;
background-color: lightblue;
border-radius: 50%;
animation-name: move;
animation-duration: 3s;
position: absolute;
left: 50%;
}
@keyframes move {
30% {
left: 30%;
transform: translateX(-80px);
}
50% {
background-color: lightcoral;
}
70% {
left: 70%;
transform: translateX(50px);
background-color: lightgreen;
}
}