こんばんは。きわさです。
今回は、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で三角形や台形を表現することができます。
