ホームページ > ウェブフロントエンド > CSSチュートリアル > CSSで単一divの正多角形変形を行う方法

CSSで単一divの正多角形変形を行う方法

little bottle
リリース: 2019-04-29 10:17:51
転載
3108 人が閲覧しました

この記事では、純粋に CSS を使用して「単一の」div を正三角形から正八角形に変換し (単一の div は最大でも正八角形にしかなりません)、最後にアニメーションの効果を使用して正八角形に変換します。アニメーションの関係上、正多角形は三角関数の計算が多く必要となるため、便宜上正多角形の辺を100pxとしています。

正三角形

正三角形は疑似要素を使う必要はなく、p自体のボーダー幅を設定するだけで生成できます。正三角形の辺の長さと中心線。辺の長さが 100px の場合、中心線は 87px (100 x sin (60) = 87) に丸められます。

CSSで単一divの正多角形変形を行う方法

したがって、p の長さと幅を 0 に設定し、次に下枠の幅を 87px に設定する必要があります。左右の境界線 幅を50px(色を透明)に設定すると、綺麗な三角形が作れます。

width:0;
height:0;
border-width:0 50px 87px ;
border-style:solid;
border-color:transparent transparent #095;
ログイン後にコピー

CSSで単一divの正多角形変形を行う方法

正方形

正方形は最も単純で、長さと幅を同じ値に設定するだけです。実は他に 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;
}
ログイン後にコピー

CSSで単一divの正多角形変形を行う方法

正五角形

正五角形は基本的な三角関数の分野に入る必要があります。まず正五角形を分解しましょう。元の p を上三角形として使用し、疑似要素を使用して下の台形を作成します。正五角形の各辺間の角度は 108 度であるため、上三角形は三角関数で計算できます。高さは 59px ( 100×cos(54))、幅は192px(100×sin(54)×2)、下の台形の高さは95px(100×sin(72))、長辺の幅は同じです上の三角形は 192px です。

CSSで単一divの正多角形変形を行う方法

#原理を理解した後は、疑似要素を使用して一致させたり作成したりできます。

.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で単一divの正多角形変形を行う方法

正六角形

純粋な CSS の方向から見た場合、正六角形の各角度は 120 度です。 , 正五角形の三角形を変更して、上下の台形を組み合わせた正六角形を作るだけです. 台形の長辺は 200px (100 x cos (60) x 2 100 ), 高さは台形は 87 ピクセル (100 x sin(60)) です。


CSSで単一divの正多角形変形を行う方法

つまり、正五角形の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;
    }
ログイン後にコピー

CSSで単一divの正多角形変形を行う方法

正七角形

after 疑似要素は、正七角形の先頭で使用する必要があります。元の p を上の三角形、擬似要素を中央の台形、そして別の擬似要素を下の台形として使用し、3 つのメモリ ブロックに分解する必要があります。正七角形の角度は整数ではありません。 128と4/7度、小数点第2位は約128.57となるので、計算結果は下図のようになりますが、長さと幅がどのくらいなのかをしっかりと把握しておくことがポイントです。


CSSで単一divの正多角形変形を行う方法#長さと幅が決まったら、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で単一divの正多角形変形を行う方法 正八角形

正八角形は、実際には正七角形上の三角形を台形に変えます。中央の台形は長方形になり、正八角形のなす角度は135度となり、各領域の長さと幅を計算すると以下のようになります。


CSSで単一divの正多角形変形を行う方法#同じ原理を理解していれば、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;
  }
ログイン後にコピー

1CSSで単一divの正多角形変形を行う方法

小结

以上就是纯粹利用CSS做出来的单一div的正多边形变换,如果熟练的话,其实加上动画效果,就可以做出像下面示例这个样子的变换动画啰!

CSSで単一divの正多角形変形を行う方法

相关教程:css视频教程

以上がCSSで単一divの正多角形変形を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート