こんばんは。きわさです。
今回は、CSSで三角形や台形を表現する方法についてです。
HTMLをデザインする際、三角形や台形のような形にしたいことがたまにあります。
そんなときに役に立つのがborderです。
borderと言えば、下記のように枠線のイメージが強いかと思います。
この例では100pxの正方形に1pxの黒い枠線をつけています。
<div id="test1"></div>
#test1 { width: 100px; height: 100px; border: 1px solid #000000; }
このborderですが、下記のように上下左右の辺ごとに設定もできます。
#test2 { width: 100px; height: 100px; border-top: 1px solid #000000; border-bottom: 1px solid #ff0000; border-left: 1px solid #00ff00; border-right: 1px solid #0000ff; }
さらにborderの太さを変えてみます。
#test3 { width: 100px; height: 100px; border-top: 30px solid #000000; border-bottom: 30px solid #ff0000; border-left: 30px solid #00ff00; border-right: 30px solid #0000ff; }
どうでしょうか。各辺が台形のように見えてきますね。
ここで左右と上のborderを透明にしてみます。
#test4 { width: 100px; height: 100px; border-top: 30px solid transparent; border-bottom: 30px solid #ff0000; border-left: 30px solid transparent; border-right: 30px solid transparent; }
台形です。
border-bottomの太さが台形の高さ、widthが台形の上底の長さになっています。
あとは無駄なスペースを消すためにheightを0にします。
また、台形の中に文字を入れることもできます。
test
<div id="test5">test</div>
#test5 { width: 100px; height: 0px; border-top: 30px solid transparent; border-bottom: 30px solid #ff0000; border-left: 30px solid transparent; border-right: 30px solid transparent; text-align: center; }
そして、widthが上底の長さになっているということは、
widthも0にしてやれば三角形になります。
<div id="test6"></div>
#test6 { width: 0px; height: 0px; border-top: 30px solid transparent; border-bottom: 30px solid #ff0000; border-left: 30px solid transparent; border-right: 30px solid transparent; }
borderの左右上下の組み合わせを変えれば、向きも変えられます。
<div id="test7"></div> <div id="test8"></div>
#test7 { width: 0px; height: 0px; border-top: 30px solid transparent; border-bottom: 30px solid #ff0000; border-right: 30px solid transparent; } #test8 { width: 0px; height: 0px; border-top: 30px solid #000000; border-bottom: 30px solid transparent; border-left: 30px solid transparent; }
このように、borderで三角形や台形を表現することができます。