分享更有价值
被信任是一种快乐

怎么使用CSS Houdini绘制平滑圆角

文章页正文上

今天小编给大家分享一下怎么使用CSS Houdini绘制平滑圆角的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
首先,我们给paintWorkle添加一个绘图模块[1]
(CSS.paintWorklet || paintWorklet).addModule(‘smooth-corners.js’)
然后,在这个模块中,我们注册一个绘图过程(paint),名字叫做 smooth-corners,这个绘图过程必须提供一个paint方法来绘制超椭圆。
registerPaint(‘smooth-corners’, class {
paint(ctx, size) {
ctx.fillStyle = ‘black’
// n=4 时,绘制一个方圆形
const n = 4
let m = n
if (n > 100) m = 100
if (n

const r = size.width / 2
const w = size.width / 2
const h = size.height / 2
ctx.beginPath();
for (let i = 0; i

const x = (i-r) + w
const y = (Math.pow(Math.abs(Math.pow(r,m)-Math.pow(Math.abs(i-r),m)),1/m)) + h
if (i == 0)
ctx.moveTo(x, y)
else
ctx.lineTo(x, y)
}
for (let i = (2*r); i

const x = (3*r-i) + w
const y = (-Math.pow(Math.abs(Math.pow(r,m)-Math.pow(Math.abs(3*r-i),m)),1/m)) + h
ctx.lineTo(x, y)
}
ctx.closePath()
ctx.fill()
}
})
paint方法接受两个参数:
ctx是一个PaintRenderingContext2D对象,这个对象实现了CanvasRenderingContext2D的一个子集,因此大多数情况下你可以用它绘制任何图形
size是一个PaintSize对象,规定所绘制图形的大小
现在我们可以在 CSS 中调用这个paint()函数。执行这个函数,我们将会得到一个黑色的平滑圆角矩形。
.el {
background: paint(smooth-corners);
}
为了简单起见,我们将生成的图像用作图层遮罩(mask)[2],这样,我们就可以很容易地通过background设置想要的背景色、渐变、或者图像。
.el {
background: linear-gradient(deeppink, orangered);
mask-image: paint(smooth-corners);
}
视觉效果不错,但程序灵活性还不够。现在,我们只是画了一种特殊的超椭圆——方圆形[3](注意代码中n = 4)。免费云主机、域名那么,我们如何画任意指数的超椭圆呢?比如说 iOS 使用了 n = 5。我们可以使用 CSS 自定义属性来达到目的。以上就是“怎么使用CSS Houdini绘制平滑圆角”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注云技术行业资讯频道。

相关推荐: css怎么使用计数器给元素自动编号

本文小编为大家详细介绍“css怎么使用计数器给元素自动编号”,内容详细,步骤清晰,细节处理妥当,希望这篇“css怎么使用计数器给元素自动编号”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。   一、设置和使用css计数器,实现简单的元…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册