十分钟搞懂CSS属性border相交画三角形的原理及规律

其实很早就了解到可以利用border属性来画三角形,但是当时没认真思考原理和总结规律,写下这篇博客记录下我的想法。

🤔两个结论

分界线原则:假如把有宽度的border靠外的一边叫做外边,靠内的一边叫做内边,则各个外边的交点与相对应各个内边交点的连线就是各border之间的分界线

内边的确定依赖于原div的各边
外边的确定依赖于原div的各边以及border的宽度

一刀切原则:某方向的border宽度如果为0,边框的样式会表现出一刀切的样子

🫣举例论证

<div></div>
 div {
        width: 50px;
        height: 50px;
        border: 20px solid red;
      }

在这里插入图片描述
常规情况下我们会把边框宽度设的很小,看着像是矩形,但是当我们增大边框宽度

<div></div>
	 div {
        width: 50px;
        height: 50px;
        border: 20px solid;
        border-color: red blue black green;
      }

在这里插入图片描述
我们可以很清楚的看到四条边框的分界线

<div></div>
 div {
        width: 50px;
        height: 50px;
        border: 20px solid red;
      }

在这里插入图片描述
当原div宽高都为0时,我们可以把div看作一个点

	div {
        width: 50px;
        height: 50px;
        border: solid;
        border-color: red blue black green;
        border-top-width: 20px;
        border-right-width: 0; 
        border-bottom-width: 20px;
        border-left-width: 20px;  
      }

此时右边框宽度为0,我们可以想象宽度为0时就是一刀切掉那部分。
在这里插入图片描述
此时右边框宽度为10px,图中的样式再一次佐证了我们的想法

	div {
        width: 50px;
        height: 50px;
        border: solid;
        border-color: red blue black green;
        border-top-width: 20px;
        border-right-width: 10px; 
        border-bottom-width: 20px;
        border-left-width: 20px;  
      }

在这里插入图片描述

div {
        width: 50px;
        height: 50px;
        border-radius: 50%;
        border: solid;
        border-color: red blue black green;
        border-top-width: 20px;
        border-right-width: 20px;
        border-bottom-width: 20px;
        border-left-width: 20px;
      }

加个圆角就可以实现环状图的样式
在这里插入图片描述
如果让边框透明显示

div {
        width: 50px;
        height: 50px;
        border: solid;
        border-color: red transparent black green;
        border-top-width: 20px;
        border-right-width: 20px;
        border-bottom-width: 20px;
        border-left-width: 20px;
      }

在这里插入图片描述
三边都透明的话就会形成一个梯形

 div {
        width: 50px;
        height: 50px;
        border: solid;
        border-color: transparent transparent transparent green;
        border-top-width: 20px;
        border-right-width: 20px;
        border-bottom-width: 20px;
        border-left-width: 20px;
      }

那么当div宽高为0时,不就得到了一个三角形

 div {
        width: 0;
        height: 0;
        border: solid;
        border-color: transparent transparent transparent green;
        border-top-width: 20px;
        border-right-width: 20px;
        border-bottom-width: 20px;
        border-left-width: 20px;
      }

在这里插入图片描述
再来个稍微难点的

	div {
        width: 0;
        height: 0;
        border-top: 100px solid red;
        border-right: 100px solid transparent;
      }

在这里插入图片描述
我们一步一步的倒推

	div {
        width: 0;
        height: 0;
        border-top: 100px solid red;
        border-right: 100px solid green;
      }

在这里插入图片描述
再推一步

	div {
        width: 50px;
        height: 50px;
        border-top: 100px solid red;
        border-right: 100px solid green;
      }

在这里插入图片描述
我们发现,边框始终符合我们的一刀切原则分界线原则

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值