CSS画几种图形的方法

一、画三角形

1、使用 border

使用 border 实现三角形应该是大部分人都掌握的,也是各种面经中经常出现的,利用了高宽为零的容器及透明的 border 实现

.div1
{
	width:0;
	height:0;
	border-top: 100px solid transparent;
	border-right: 100px solid transparent;
	border-bottom: 100px solid green;
	border-left: 100px solid transparent;
}
.div2
{
	width:0;
	height:0;
	border: 100px solid;
	border-color: transparent transparent blue transparent;
}

在这里插入图片描述

2、使用伪元素

.triangle {
  position: relative;
  width: 0;
  height: 0;
}
.triangle:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  border-top: 50px solid #f00;
  border-right: 50px solid transparent;
}

在这里插入图片描述

3、使用 linear-gradient 绘制三角形

它的原理也非常简单,我们实现一个 45° 的渐变:

div {
  width: 100px;
  height: 100px;
  background: linear-gradient(45deg, deeppink, yellowgreen);
}

在这里插入图片描述
让它的颜色从渐变色变为两种固定的颜色:

div {
  width: 100px;
  height: 100px;
  background: linear-gradient(45deg, deeppink, deeppink 50%, yellowgreen 50%, yellowgreen 100%);
}

在这里插入图片描述
再让其中一个颜色透明即可:

div {
  background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%);
}

在这里插入图片描述

4、transform: rotate 配合 overflow: hidden 绘制三角形

在这里插入图片描述

.triangle {
    width: 141px;
    height: 100px;
    position: relative;
    overflow: hidden;
    
    &::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background: deeppink;
        transform-origin: left bottom;
        transform: rotate(45deg);
    }
}

5、使用 clip-path 绘制三角形

clip-path 一个非常有意思的 CSS 属性。

clip-path CSS 属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。剪切区域是被引用内嵌的 URL 定义的路径或者外部 SVG 的路径。

也就是说,使用 clip-path 可以将一个容器裁剪成任何我们想要的样子。

通过 3 个坐标点,实现一个多边形,多余的空间则会被裁减掉,代码也非常简单:

div {
    background: deeppink;
    clip-path: polygon(0 0, 100% 0, 0 100%, 0 0);
}

在这里插入图片描述

二、画⚪

1、使用border-radius属性

将一个正方形的元素的border-radius属性设置为50%即可将其变为一个圆形

.circle {
  width: 100px;
  height: 100px;
  background: pink;
  border-radius: 50%;
}

在这里插入图片描述

2、使用伪元素和transform属性

使用伪元素在一个正方形的元素上创建一个完全重叠的圆形,并使用transform属性将其缩小到所需大小

.circle {
  width: 100px;
  height: 100px;
  position: relative;
}
.circle::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background-color: red;
  transform: scale(0.8);
}

3、clip-path

{	
	width: 100px;
   	height: 100px;
	background: green;
    clip-path: circle();
}

三、半圆

{
	width:100px;
	height:200px;
	border-left:100px solid red;
	border-radius: 100px;
}

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老电影故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值