使用CSS 绘制带边框的正三角形

使用css绘制正三角形的三种方法:

1:transform属性绘制

```html

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>使用css transform属性画正三角形

      body {

display:flex;

      }

.box1,

      .box1::after,

      .box1::before {

width:52px;

        height:52px;

        position:relative;

        background-color:red;

        overflow:hidden;

        float:left;

      }

.box1::after,

      .box1::before {

content:"";

        position:absolute;

        background-color:#fff;

        transform-origin:bottom right;

        transform:rotate(60deg)scaleX(1.2);

      }

.box1::before {

transform-origin:left bottom;

        transform:rotate(-60deg)scaleX(1.2);

      }

    <div class="box1">

</html>

```

transform css

一般情况下这种就足够了,但只适合白色背景的页面

当加上背景和边框后:

加上背景和边框后

2: boder属性绘制

```html

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>使用css border属性画正三角形

      body {

background-color:skyblue;

        display:flex;

      }

.box1 {

width:0;

        height:0;

        border-top:0 solid transparent;

        border-left:100px solid transparent;

        border-right:100px solid transparent;

        border-bottom:173px solid #0f0;

      }

    <div class="box1">

</html>

```


border绘制

border-bottom 为 border-left * \sqrt{3}

能用于绝大多数应用场景,但无法加边框

3. clip-path属性

```html

<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>使用css clip-path属性画正三角形

      body {

background-color:skyblue;

        display:flex;

      }

.box {

width:200px;

        height:200px;

        position:relative;

      }

.box1 {

width:100%;

        height:100%;

        clip-path:polygon(

                50%13.4%,

                100%100%,

                0 100%,

                50%13.4%,

                50%33.4%,

                17.3%90%,

                82.7%90%,

                50%33.4%,

                50%13.4%

);

        background:darkblue;

      }

.box2 {

width:100%;

        height:100%;

        clip-path:polygon(

                50%33.4%,

                17.3%90%,

                82.7%90%,

                50%33.4%

);

        content:"";

        position:absolute;

        top:0;

        background-color:rgba(255, 0, 0, 0.2);

      }

  <div class="box">

    <div class="box1">

    <div class="box2">

</html>

```


clip-path 绘制

首先绘制一个三角形的环 box1, 再将三角形定位到环的中间,避免了两个rgba颜色的三角形颜色叠加。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容