この記事では、純粋に CSS を使用して「単一の」div を正三角形から正八角形に変換し (単一の div は最大でも正八角形にしかなりません)、最後にアニメーションの効果を使用して正八角形に変換します。アニメーションの関係上、正多角形は三角関数の計算が多く必要となるため、便宜上正多角形の辺を100pxとしています。
正三角形は疑似要素を使う必要はなく、p自体のボーダー幅を設定するだけで生成できます。正三角形の辺の長さと中心線。辺の長さが 100px の場合、中心線は 87px (100 x sin (60) = 87) に丸められます。
したがって、p の長さと幅を 0 に設定し、次に下枠の幅を 87px に設定する必要があります。左右の境界線 幅を50px(色を透明)に設定すると、綺麗な三角形が作れます。
width:0; height:0; border-width:0 50px 87px ; border-style:solid; border-color:transparent transparent #095;
正方形は最も単純で、長さと幅を同じ値に設定するだけです。実は他に 2 つの方法があります。1 つ目は、長さと幅を 0 に設定し、上下左右の境界線を 50px に設定することです。2 つ目は、高さを 0 に設定し、幅を 100px に設定することです。ある 横幅も100に設定してありますが、問題ありません。
.a{ width:100px; height:100px; background:#c00; } .b{ width:0; height:0; border-width:50px; border-style:solid; border-color:#095; } .c{ width:100px; height:0; border-width:0 0 100px; border-style:solid; border-color:#069; }
正五角形は基本的な三角関数の分野に入る必要があります。まず正五角形を分解しましょう。元の p を上三角形として使用し、疑似要素を使用して下の台形を作成します。正五角形の各辺間の角度は 108 度であるため、上三角形は三角関数で計算できます。高さは 59px ( 100×cos(54))、幅は192px(100×sin(54)×2)、下の台形の高さは95px(100×sin(72))、長辺の幅は同じです上の三角形は 192px です。
#原理を理解した後は、疑似要素を使用して一致させたり作成したりできます。
.a{ position:relative; width:0; height:0; border-width:0 81px 59px; border-style:solid; border-color:transparent transparent #069; } .a:before{ position:absolute; content:""; top:59px; left:-81px; width:100px; height:0; background:none; border-width:95px 31px 0; border-style:solid; border-color:#069 transparent transparent; }
正六角形純粋な CSS の方向から見た場合、正六角形の各角度は 120 度です。 , 正五角形の三角形を変更して、上下の台形を組み合わせた正六角形を作るだけです. 台形の長辺は 200px (100 x cos (60) x 2 100 ), 高さは台形は 87 ピクセル (100 x sin(60)) です。
つまり、正五角形のCSSを少し変更することで、正六角形を作ることができます。
.a{ position:relative; width:100px; height:0; border-width:0 50px 87px; border-style:solid; border-color:transparent transparent #f80; } .a:before{ position:absolute; content:""; top:87px; left:-50px; width:100px; height:0; background:none; border-width:87px 50px 0; border-style:solid; border-color:#f80 transparent transparent; }
正七角形after 疑似要素は、正七角形の先頭で使用する必要があります。元の p を上の三角形、擬似要素を中央の台形、そして別の擬似要素を下の台形として使用し、3 つのメモリ ブロックに分解する必要があります。正七角形の角度は整数ではありません。 128と4/7度、小数点第2位は約128.57となるので、計算結果は下図のようになりますが、長さと幅がどのくらいなのかをしっかりと把握しておくことがポイントです。
#長さと幅が決まったら、CSS で記述を開始します。
.a{ position:relative; width:0; height:0; border-width:0 90px 43px; border-style:solid; border-color:transparent transparent #09c; } .a:before{ position:absolute; content:""; top:140px; left:-112px; width:100px; height:0; border-width:78px 62px 0; border-style:solid; border-color:#09c transparent transparent; } .a:after{ position:absolute; content:""; top:43px; left:-112px; width:180px; height:0; border-width:0 22px 97px; background:none; border-style:solid; border-color:transparent transparent #09c; }
正八角形
#同じ原理を理解していれば、CSS を使用する方がはるかに簡単になります。
.a{ position:relative; width:100px; height:0; border-width:0 71px 71px; border-style:solid; border-color:transparent transparent #f69; } .a:before{ position:absolute; content:""; top:171px; left:-71px; width:100px; height:0; border-width:71px 71px 0; border-style:solid; border-color: #f69 transparent transparent; } .a:after{ position:absolute; content:""; top:71px; left:-71px; width:242px; height:0; border-width:0 0 100px; background:none; border-style:solid; border-color:transparent transparent #f69; }
小结
以上就是纯粹利用CSS做出来的单一div的正多边形变换,如果熟练的话,其实加上动画效果,就可以做出像下面示例这个样子的变换动画啰!
相关教程:css视频教程
以上がCSSで単一divの正多角形変形を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。