【CSS】带边框的三角形

7275569-61aeb8498e48b6d3.jpg
34840-106.jpg
7275569-0f8df8bb41454198.png
image.png

思路是将2个三角形叠加起来,外层的三角形稍微大一些。

思路和《【CSS】内圆角》这个笔记的 “方法一” 类似。
http://www.jianshu.com/p/6e61856cf143

这个笔记最后会补充《【CSS】画三角形》这个笔记里记漏的一点。
http://www.jianshu.com/p/2c04549a8aae


HTML代码:

<div class="parent">
    <div class="child"></div>
</div>

CSS代码:

.parent {
    width: 0px;
    height: 0px;
    border-width: 0 100px 100px;
    border-style: solid;
    border-color: transparent transparent #333;
    position: relative;
}
.child {
    width: 0px;
    height: 0px;
    border-width:0 90px 90px;
    border-style:solid;
    border-color:transparent transparent #fc0;          
    position: absolute;
    top: 6px;
    left: -90px;
}

以上是最终代码。






逐步分析:

CSS:

.parent {
    width: 0px;
    height: 0px;
    border-width: 0 100px 100px;
    border-style: solid;
    border-color: transparent transparent #333;
}
.child {
    width: 0px;
    height: 0px;
    border-width:0 90px 90px;
    border-style:solid;
    border-color:transparent transparent #fc0;          
}

一开始的思路是分别生成外层和内层的三角形。得到的效果如下图所示。


7275569-a59028f8f17c28a4.png
image.png


之所以会出现这种情况,是因为内层嵌套的元素,会在外层元素的正式内容部分开始出现。看看下面的盒子模型。


7275569-7248f861f85ba98a.png
image.png

嵌套的内容,都会从黄色框(content)的左上角开始出现。
再看下图:


7275569-bc4744b80e00946a.png
image.png

根据红色的指示线可以看得出,黄色三角形左边的角和黑色三角形上面的角是在同一水平线上的。所以黄色三角形(嵌套的)应该向左移动。

向左移动距离 = 黄色三角形border的值。
左负 右正

向下移动距离 = (黑border - 黄border)/ 2 +1
上负 下正





最后回顾一下border的用法

border可以一次设置4条边的所有属性,
如:
border: 1px solid #eee;
这就把4条边都设置成1像素的实线,且颜色为灰色。

可以把所有属性分开设置,
如:
border-width: 10px;
这就把4条边都设置成10px。

可以分别设置4条边同一属性的不同值,并写在同一行代码里。
如:
border-width: 1px 2px 3px 4px;
对应是顺序是:上 右 下 左

如果只设置两个值,如:
border-width: 1px 3px;
对应:上下 左右

如果只设置三个值,如:
border-width: 1px 2px 3px;
对应:上 左右 下。
即:上 1px 左右 2px 下 3px





希望以上笔记对大家有帮助。
我的其他笔记在微信公众号:Rabbit_svip

7275569-1198cd105400f9d5.png
image
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值