css实现带小三角形的边框

主要方法是使用伪元素before和after,之前已经总结过伪元素before、after用法,它们效果相当于在标签的内部放置一个最前或者最后的标签,添加的标签同样的能够继承父元素的属性,那么通过伪元素就可以组装拼出对话框的小三角;

原理图:

第一步:

第二步:

 设定浮动,让before和after三角形重叠:

 

第三步:

通过top -px像素把三角形移到div边框上

 

第四步:

把after三角形颜色调整为和div背景颜色一致,实现对话框的小三角形;

 

 

原理很简单,那么三角形怎么实现?

在border中有个transparent参数,这个参数属于border-color属性,从css2开始定义出border的颜色为透明,那么我们指定border四边的时候,只要有一边不透明,则会画出三角形,如代码:

   border-bottom:8px solid red;
   border-top:8px solid transparent;
   border-left:8px solid transparent;
   border-right:8px solid transparent;

能得到:

由于画出的是实心的三角形,要得到空袭的边框三角形,就需要一个和背景色一致的小三角形覆盖在一个和边框颜色一致的大三角形上,把小三角形的z-index大于大三角形的z-index,这样就构成了空心的三角形;

 

 

具体的实践代码:

<div class="test" name='2'>

</div>

<style>
    .test{
        background-color: snow;
        width: 200px;
        height: 100px;
        position: relative;
        border: 1px solid red;
    }

    .test::before{
    box-sizing: content-box;
    position: absolute;
    top: -18px;;
    right:101px;
    border-bottom:9px solid snow;
    border-top:9px solid transparent;
    border-left:9px solid transparent;
    border-right:9px solid transparent;
    display: block;
    content:'';
    z-index: 2;
}
    .test::after{
    box-sizing: content-box;
    position: absolute;
    top: -20px;
    right:100px;
    border-bottom:10px solid red;
    border-top:10px solid transparent;
    border-left:10px solid transparent;
    border-right:10px solid transparent;
    display: block;
    content:'';
    z-index:1
    }
</style>

代码效果:

 

值得说明的一点,top值上移的像素是border像素的2背,而要想使得三角框和div边框完美融合不突兀,需要使得三角组合的得到的边框像素和div border像素一致,如果div border是1px,那么大的三角形和小的三角形边框差就需要为1px,大的三角形上移的top和小三角形上移的top像素插则为2px,如果不能理解这段话,多实验以上代码,修改参数即可;

### 如何用CSS实现实心三角形边框效果 要实现一个有实心三角形边框效果,可以通过组合多个元素以及巧妙运用 `border` 和伪类(如 `::before` 或 `::after`)。以下是具体方法: #### 方法概述 为了创建这种效果,通常会采用以下策略: 1. 创建一个基础矩形区域作为主体部分。 2. 使用伪元素(`::before` 或 `::after`)在特定位置生成实心三角形。 3. 调整这些伪元素的位置和样式使其融入整体设计。 --- #### 示例代码 下面是一个具体的例子,展示如何在一个正方形盒子上添加四个角上的实心三角形: ```html <div class="box"> </div> ``` ```css .box { position: relative; width: 100px; height: 100px; background-color: lightblue; } /* 左上角三角形 */ .box::before { content: ''; position: absolute; top: -10px; /* 向外偏移 */ left: -10px; /* 向外偏移 */ width: 0; height: 0; border-bottom: 10px solid transparent; border-right: 10px solid black; /* 设置颜色 */ } /* 右上角三角形 */ .box::after { content: ''; position: absolute; top: -10px; /* 向外偏移 */ right: -10px; /* 向外偏移 */ width: 0; height: 0; border-bottom: 10px solid transparent; border-left: 10px solid black; /* 设置颜色 */ } ``` 上述代码实现了左上角和右上角各有一个黑色的小三角形[^1]。如果希望其他角落也显示类似的三角形,则可以继续扩展 `.box` 的子伪元素逻辑并调整其方向。 对于底部两个角的情况,只需修改对应的 `top` 值为负数以适应布局需求,并改变相应的边界定义方式来控制指向的方向。 --- #### 关键点解析 - **容器尺寸**:确保主容器具有明确的高度与宽度以便于计算相对比例下的三角形大小。 - **绝对定位的应用**:通过设置 `position: absolute` 并结合父级元素的相对定位(`relative`),可以让伪元素精确放置在目标位置附近。 - **透明度处理**:除了指定可见的一条边之外其余三侧均需设定成透明状态从而塑造出纯粹几何图形轮廓的效果[^2]。 最终呈现出来的视觉感受将是围绕着中心区块四周分布均匀且风格一致的小箭头标记形式。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值