- transformのskewの記述をskewXとskewYに変更
- border-radius,box-shadowのベンダープレフィックスを削除
引き続きcssで基本図形を描く。今回は半円、扇型、平行四辺形、三角形の描き方。図形の描き方はいずれ一覧表の形でまとめようと考えている。
なお、前回と今回の図形は、すべて一つのdivで出来ているが、実際にはdiv以外の要素でもスタイリングできる。cssの初心者はサンプルの記述でdivが使われているのを見て、cssで見た目を指定できるのはdivだけだ、という勘違いをすることが多いので注意が必要だ(これがおそらく「div厨」の発生原因だと推察する)。
例えば、何かの申請用紙の姓名の記入例に「日本 一郎・東京 花子」とあっても、そのまま書き写す人はいない。サンプルをコピーする事は有効な学習手段だが、自分のマークアップで使っている要素にスタイルを設定して欲しい。
半円 half circle
class:square circle half
.half {
height:50px;
border-radius:50px 50px 0 0;
}
扇型 quarter circle
class:square circle quarter
.quarter {
border-radius:0 100px 0 0;
}
border-radiusの値を4つ指定すると、左上、右上、右下、左下の順に設定できる。左上、右上を丸めれば半円に、角を1つだけ丸めれば扇型になる。
平行四辺形 parallelogram
class:square parallelogram
.parallelogram {
-moz-transform-origin:0 100%;
-webkit-transform-origin:0 100%;
transform-origin:0 100%;
-moz-transform:skewX(-25deg);
-webkit-transform:skewX(-25deg);
transform:skewX(-25deg);
}
傾きはtransformプロパティのskewXで設定できる。変形の基点はtransform-originで設定。ここでは右下を基点に-25度skewXしている。
三角 triangle
class:square parallelogram triangle
.triangle {
background:-moz-linear-gradient(
45deg,red,red 50%,
transparent 50%,
transparent 100%);
background:-webkit-linear-gradient(
45deg,red,red 50%,
transparent 50%,
transparent 100%);
background:linear-gradient(
45deg,
red,
red 50%,
transparent 50%,
transparent 100%);
}
平行四辺形のbackgroundをグラデーションで塗り、その半分の塗り色を透明にする方法。
なお、mozとwebkitとで違いの著しかったgradientの指定方法だったが、両者で統一方式が合意された模様。これを受けて、後方互換用の指定をしておいた。
三角2 triangle2
class:square triangle2
.triangle2 {
overflow:hidden;
background:transparent;
width:142px;
height:71px;
}
.triangle2::before {
content:"";
display:block;
width:100px;
height:100px;
background:rgb(80,80,200);
-moz-transform-origin:0 0;
-webkit-transform-origin:0 0;
transform-origin:0 0;
-moz-transform:rotate(-45deg);
-webkit-transform:rotate(-45deg);
transform:rotate(-45deg);
}
triangle2の::beforeでcontentした正方形を-45度回転。triangle2自体の幅を√2px * 100px、高さを√2 * 100px / 2にしてoverflowをhiddenにして隠している。
マウスをホバーすると、親要素につけたbox-shadowが元の矩形が見える。
台形 trapezoid
class:square trapezoid
.trapezoid {
overflow:hidden;
background:transparent;
}
.trapezoid::before {
content:"";
display:block;
width:100px;
height:100px;
background:rgb(80,80,200);
-moz-transform-origin:0 100%;
-webkit-transform-origin:0 100%;
transform-origin:0 100%;
-moz-transform:skewX(-25deg);
-webkit-transform:skewX(-25deg);
transform:skewX(-25deg);
}
::beforeでcontentした正方形を傾けて平行四辺形にし、その一部を隠すと台形の出来上がり。
台形2 trapezoid2
class:square trapezoid2
.trapezoid2 {
overflow:hidden;
background:transparent;
}
.trapezoid2::before {
content:"";
display:block;
width:100px;
height:100px;
-moz-transform-origin:0 100%;
-webkit-transform-origin:0 100%;
transform-origin:0 100%;
-moz-transform:skewX(-25deg) translate(-10px,-20px);
-webkit-transform:skewX(-25deg) translate(-10px,-20px);
transform:skewX(-25deg) translate(-10px,-20px);
background:-moz-linear-gradient(
45deg,red,red 50%,
transparent 50%,
transparent 100%);
background:-webkit-linear-gradient(
45deg,red,red 50%,
transparent 50%,
transparent 100%);
background:linear-gradient(
45deg,
red,
red 50%,
transparent 50%,
transparent 100%);
}
::beforeでcontentしたものを三角形1の手法で三角にして、その頭を1つ隠している。しかしtrapezoidなんて単語、初めて知ったなあ。