CSS 绘制各种常见的形状(五)

378 阅读3分钟

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战

使用 CSS 可以绘制出许多形状,比如三角形、梯形、圆形、椭圆等等,并不只是可以绘制矩形,还可以绘制心形、钻石、鸡蛋、吃豆人、聊天框、图标等等。下面来看看怎么实现这些形状的吧。分为基本形状和组合形状来说,基本形状是比较容易实现的,而利用这些基本形状进行组合,就可以实现稍微复杂点的组合形状了。

爆炸形状(12角)

原理:由三个正方形旋转而成,每个正方形在前一个图形的基础上旋转30°。

image.png

.burst-12 {
    position: relative;
}
.burst-12, .burst-12::before, .burst-12::after {
    width: 80px;
    height: 80px;
    background: #F48034;
}
.burst-12::before, .burst-12::after {
    position: absolute;
    content: "";
    top: 0;
    right: 0;
}
.burst-12::before {
    transform: rotate(30deg);
}
.burst-12::after {
    transform: rotate(60deg);
}

阴阳八卦

原理:由对半颜色的圆形和两个小圆组合而成

image.png

将两个小圆垂直居中

image.png

image.png

.yin-yang {
    position: relative;
    width: 96px;
    height: 48px;
    background: #eee;
    border-color: #F48034;
    border-style: solid;
    border-width: 2px 2px 50px 2px;
    border-radius: 100%;
}
.yin-yang::before, .yin-yang::after {
    position: absolute;
    content: "";
    top: 50%;
    width: 12px;
    height: 12px;
    border-radius: 100%;
}
.yin-yang::before {
    left: 0;
    background: #eee;
    border: 18px solid #F48034;
}
.yin-yang::after {
    left: 50%;
    background: #F48034;
    border: 18px solid #eee;
}

放大镜

原理:由一个镂空的圆形和一个长方形组合而成

image.png

.magnifying-glass {
    position: relative;
    width: 40px;
    height: 40px;
    border: 10px solid #F48034;
    background: transparent;
    border-radius: 100%;
}
.magnifying-glass::before {
    position: absolute;
    content: "";
    right: -25px;
    bottom: -10px;
    width: 35px;
    height: 8px;
    background: #F48034;
    transform: rotate(45deg);
}

圆锥形

原理:使用 border 撑开,左边框和有边框设置成透明色,上边框设置主色

image.png

.cone {
    width: 0;
    height: 0;
    border-left: 70px solid transparent;
    border-right: 70px solid transparent;
    border-top: 100px solid #F48034;
    border-radius: 100%;
}

月亮

原理:设置透明的圆形,使用 box-shadow 属性绘制月牙

image.png

.moon {
    width: 80px;
    height: 80px;
    border-radius: 100%;
    box-shadow: 15px 15px 0 0 #F48034;
}

十字架

原理:由两个横竖方向的长方形组合而成

image.png

.cross {
    position: relative;
    width: 100px;
    height: 20px;
    background: #F48034;
}
.cross::before {
    position: absolute;
    content: "";
    top: -40px;
    left: 40px;
    width: 20px;
    height: 100px;
    background: #F48034;
}

徽章丝带

原理:由一个圆形,两个相反方向的三角形组合得到

image.png

image.png

image.png

image.png

.badge-ribbon {
    position: relative;
    width: 100px;
    height: 100px;
    border-radius: 100%;
    /* background: #F48034; */
}
.badge-ribbon::before,
.badge-ribbon::after {
    position: absolute;
    content: "";
    top: 70px;
    left: -10px;
    border-bottom: 70px solid #F48034;
    border-left: 40px solid transparent;
    border-right: 40px solid transparent;
    transform: rotate(-140deg);
}

.badge-ribbon::after {
    left: auto;
    right: -10px;
    transform: rotate(140deg);
}

写到这里已经是第五篇了,也算完结篇了,后面如果有机会的话,就是更复杂的图形了。

image.png

(求关注)

欢迎关注我的公众号:A纲 Coder,获得日常干货推送。最后再次感谢您的阅读,我是程序猿憨憨