了解transparent,用transparent透明实现箭头绘制

本文详细介绍了如何使用CSS中的transparent属性来实现不同形状的绘制,包括基本的箭头形状及通过调整宽高和圆角生成更多复杂形状的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        transparent:指定透明度(版本更新:background属性->border属性->任何带有color的属性)

        transparent
                用来指定全透明色彩,想当于rgba(0,0,0,0)。
                background-color的默认值。
                CSS3可以应用于所有带颜色设置的属性。

        transparent就是指定透明,要了解transparent绘制箭头就要了解border形成原理

        border形成原理
                四个边框以斜角的形式在盒子的周围。
                当盒子宽高为0的时候,四边以三角形的形式进行相接。
                如果说只有一个边框宽度存在的时候,并且盒子没有高度,则这个边框不会显示,所以必须有两个边框宽度存在并且边框相邻,才会显示。
        
.div1{
	width:0px;
	height:0px;
	background-color:transparent;
	margin:auto;
	border:30px solid red;
	border-color:red green blue yellow;
	/*上*/
	border-color:red transparent transparent transparent;
	/*右*/
	border-color:transparent red transparent transparent;
	/*下*/
	border-color:transparent transparent red transparent;
	/*左*/
	border-color:transparent transparent transparent red;
}


        使用transparent实现四角小箭头

.div3{
	width:0;
	height:0;
	background-color:transparent;
	margin:10px auto;
	border:30px solid transparent;
	border-width:30px 30px 0 0;
	/*左上*/
	border-color:green transparent;
	/*右下*/
	border-color:transparent green;
	border-width:0 30px 30px 0;
	/*左下*/
	border-color:green transparent;
	/*右上*/
	border-color:transparent green;
}

        加上宽高和圆角的话还可以变换成其他各种各样的形状

.div4{
	width:50px;
	height:50px;
	background-color:transparent;
	margin:10px auto;
	border:100px solid transparent;
	border-top-color:red;
	border-radius:600px;
}


真正明白transparent实现透明的原理才能做出各种各样的形状。

--主页传送门--

在 fabric.js 中绘制箭头图形可以通过创建一个 `fabric.Path` 对象来实现。由于 fabric.js 本身并没有提供直接绘制箭头的 API,因此需要通过路径(SVG Path)的方式定义箭头形状,并将其添加到画布中。 以下是一个使用 fabric.js 绘制箭头实现方法: ```javascript // 假设 this.canvas 是已经初始化的 fabric.Canvas 实例 // 定义绘制箭头的路径 let path = this.changePath(this.downPoint.x, this.downPoint.y, this.downPoint.x + 100, this.downPoint.y, 17.5, 17.5); // 创建 fabric.Path 对象 this.patternClass = new fabric.Path(path, { stroke: this.borderColor, fill: 'transparent', strokeWidth: this.borderWidth, selectable: true // 允许选中 }); // 将箭头添加到画布上 this.canvas.add(this.patternClass); ``` 其中,`changePath` 是一个自定义函数,用于根据起点和终点坐标生成带箭头的路径数据。它通常返回一个 SVG 路径字符串,示例如下: ```javascript changePath(startX, startY, endX, endY, arrowWidth, arrowLength) { // 计算箭头方向向量 let dx = endX - startX; let dy = endY - startY; let angle = Math.atan2(dy, dx); // 箭头角度 let length = Math.sqrt(dx * dx + dy * dy); // 线段长度 // 构建路径数据 let path = [ ['M', startX, startY], ['L', endX, endY] ]; // 添加箭头头部 path.push(['M', endX, endY]); path.push(['L', endX - arrowLength * Math.cos(angle - Math.PI / 6), endY - arrowLength * Math.sin(angle - Math.PI / 6)]); path.push(['L', endX - arrowLength * Math.cos(angle + Math.PI / 6), endY - arrowLength * Math.sin(angle + Math.PI / 6)]); path.push(['Z']); // 关闭路径 return path.map(segment => segment.join(' ')).join(' '); } ``` 上述代码实现了从起点 `(startX, startY)` 到终点 `(endX, endY)` 的线段,并在其末端绘制一个三角形作为箭头[^1]。通过调整 `arrowWidth` 和 `arrowLength` 参数,可以控制箭头的大小和形状。 ### 示例:完整绘制箭头功能 你可以在用户按下鼠标后开始记录起点,在释放鼠标时计算终点并绘制完整的箭头。以下是事件绑定的简要逻辑: ```javascript canvas.on('mouse:down', (options) => { if (options.button === 1) { // 左键按下 this.drawing = true; this.downPoint = options.pointer; } }); canvas.on('mouse:up', (options) => { if (this.drawing && this.downPoint) { let endPoint = options.pointer; let path = this.changePath(this.downPoint.x, this.downPoint.y, endPoint.x, endPoint.y, 17.5, 17.5); this.patternClass = new fabric.Path(path, { stroke: '#000', fill: 'transparent', strokeWidth: 2 }); canvas.add(this.patternClass); this.drawing = false; } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值