CSS实现空心的“尖角”

大家好,我是南宫,来分享一个昨天解决的问题。

我记得之前刷面试题的时候,CSS面试题里面赫然有一题是“如何用CSS实现三角形”,我觉得这个问题确实很经典,我上的前端培训班当初就讲过。

大概思路如下:

先把这个元素(更多时候用的是伪元素)的宽高设为0,然后给它设置一个较大的border-width(大小根据三角形的大小来决定)。这样,4条边实际上都是三角形了。

然后根据三角形的方向和颜色,只设置其中的一个边框颜色为目标颜色,其他三个边框颜色都为透明色,三角形就出来了。

然后再随便设置一下定位,就可以做成类型对话框尖角的效果。

简单写一个示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			.sjx {
				width: 0;
				height: 0;
				border: 20px solid transparent;
				border-bottom-color: skyblue;
			}
		</style>
	</head>
	<body>
		<div class="sjx"></div>
	</body>
</html>

结果昨天我看到UI图里面出现了空心的尖角,差点气死我:

本来这个三角形就是用4条边框硬挤出来的,哪里来的多余的边框用来描边?

最后我还是做到了,效果如下:

思路是这样的:

因为这里有描边,所以border要用在描边这里,那么三角形就不能用border来实现了

我这里实际上并不是三角形的,而是正方形的:

这样看就很明显了,实际上是放了一个正方形在这里,正方形的背景色跟里面的背景色一样,所以看不出来;

只给这个正方形设置了两条边框,颜色跟外圈的颜色一致;

然后给正方形旋转一个方向,让有边框的朝上,再微调一下位置,就可以了。

代码如下:(定位的代码我就省略了)

body.theme-deep .el-popper[x-placement^='bottom'] .popper__arrow::after, body.theme-deep .el-select-dropdown.el-popper[x-placement^='bottom'] .popper__arrow::after, body.theme-deep .el-dropdown-menu.el-popper[x-placement^='bottom'] .popper__arrow::after {
    width: 9px;
    height: 9px;
    border: none;
    border-top: 1px solid #0c84ff;
    border-right: 1px solid #0c84ff;
    background: #0b3277;
    transform: rotate(-45deg) translateX(2px) translateY(1px);
}

修改前的效果是这样,实心的蓝色三角形。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现一个空心三角形,你可以使用CSS的border属性来设置元素的边框样式。根据提供的HTML和CSS代码,可以看出如下的实现方式: 1. 首先,在HTML中创建一个包含空心三角形的容器元素,比如使用`<div>`标签,并为其添加一个类名,例如"box"。 2. 在CSS中,使用`.box`选择器来选择该容器元素,并设置其宽度、相对定位和高度等属性。 3. 创建一个内部的子元素,比如一个`<div>`标签,并为其添加一个类名,例如"arrow"。然后使用`.arrow`选择器来选择该子元素,并设置其绝对定位和其他样式属性,如宽度、高度、边框样式等。同时,使用`transform`或`-webkit-transform`属性来旋转该子元素以形成空心三角形的样式。 4. 如果你想要进一步调整三角形的大小和位置,可以使用伪元素的方式,并设置其内容为空、绝对定位和样式属性来调整其形状和位置。例如,在`.arrow`选择器后添加`:after`伪元素选择器,并设置其样式属性,如`border`等。 综上所述,通过以上的HTML和CSS代码,你可以实现一个空心三角形的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [css 实现空心三角形](https://blog.csdn.net/weixin_41544124/article/details/86249913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [CSS实现实心三角形和空心三角形](https://blog.csdn.net/qq_34645412/article/details/78062304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值