3.1 複合変換の基本
CSSは複数の変換を組み合わせて、複雑な視覚効果を作成できるよ。
これらの変換にはtranslate
、rotate
、scale
、skew
が含まれていて、それらは1つのプロパティtransform
にまとめられるんだ。
transform
プロパティには複数の変換関数をスペースで区切って含めることができる。それらは指定された順に順次適用されるよ。異なる変換がどのように相互作用するかを理解することは、複雑なアニメーションやエフェクトを作る鍵になるんだ。
構文:
element {
transform: function1() function2() ... functionN();
}
例:
CSS
element {
transform: translate(20px, 20px) rotate(45deg) scale(1.5) skew(10deg, 5deg);
}
移動と回転
この例では、要素が右に50ピクセル、下に50ピクセル移動した後、45度回転するよ。
例:
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>移動と回転</title>
<style>
.box {
width: 100px;
height: 100px;
background-color: #3498db;
transform: translate(50px, 50px) rotate(45deg);
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
コードの説明:
.box
: 要素はまず右に50ピクセル、下に50ピクセル移動し、その後時計回りに45度回転するよ。
3.2 異なる組み合わせの分析
1. スケールとスキュー
この例では、要素が両軸で1.5倍に拡大され、その後X軸で20度、Y軸で10度傾けられるよ。
例:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>スケールとスキュー</title>
<style>
.box {
width: 100px;
height: 100px;
background-color: #e74c3c;
transform: scale(1.5) skew(20deg, 10deg);
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
コードの説明:
.box
: 要素はまず両軸で1.5倍に拡大され、その後X軸で20度、Y軸で10度傾けられるよ。
2. 移動、回転、スケール
この例では、要素が右に100ピクセル移動し、30度回転し、X軸で2倍、Y軸で1.5倍に拡大されるよ。
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>移動、回転、スケール</title>
<style>
.box {
width: 100px;
height: 100px;
background-color: #2ecc71;
transform: translate(100px, 0) rotate(30deg) scale(2, 1.5);
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
コードの説明:
-
.box
: 要素はまず右に100ピクセル移動し、その後30度回転し、X軸で2倍、Y軸で1.5倍に拡大されるよ。
3.3 変換順序の影響
複数の変換が組み合わさるとき、それらが順番に適用されることを理解することが重要だよ。つまり、後続の変換は前の変換の結果に影響を与えるんだ。
この例では、変換順序を変更することで最終結果がどのように影響を受けるかを示しているよ。
例A: まず回転、その後移動
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>まず回転、その後移動</title>
<style>
.box-a {
width: 100px;
height: 100px;
background-color: #3498db;
transform: rotate(45deg) translate(50px, 50px);
}
</style>
</head>
<body>
<div class="box-a"></div>
</body>
</html>
例B: まず移動、その後回転
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>まず移動、その後回転</title>
<style>
.box-b {
width: 100px;
height: 100px;
background-color: #e74c3c;
transform: translate(50px, 50px) rotate(45deg);
}
</style>
</head>
<body>
<div class="box-b"></div>
</body>
</html>
コードの説明:
-
.box-a
: 要素は最初に45度回転し、その後右に50ピクセル、下に50ピクセル移動する。これによって、要素は回転後の新しい位置から対角線上に移動する。 -
.box-b
: 要素は最初に右に50ピクセル、下に50ピクセル移動し、その後45度回転する。これによって、要素は新しい位置に対して回転する。
GO TO FULL VERSION