图片叠加
找一张中间镂空的图片覆盖原图,需要和网页的背景颜色一致。
CSS3边框半径
.xxx { border-radius: 100px; }
有前两种方法的demo和截图~
但demo上的图片素材不小心被放大了。 我不想换图片,所以地址就不公布了。 你可以YY它。 截图一下,在最后给个~
这里的实现原理适用于各种SVG规则或不规则图形。
SVG中实现图片圆角的关键是使用元素
例如杨梅,如果一张名为test.jpg的图片有一个大小为100px*100px的正方形效果,则SVG代码如下:
图形元素有一个fill属性,让它的值url锚定到
id就可以了
有这个demo,大家可以硬点这里:SVG圆角图像demo
滑动滑块可查看水平/垂直方向圆角大小的变化。 由于图片长宽比不一致,圆角的极限是规则的椭圆:
该演示展示了一个元素,顾名思义,是一个方形元素。 如果你想实现完美的圆形效果,请使用一个元素,比如上面所示的SVG代码。其实你也可以使用
元素不规则地填充,以创造更有趣的图形效果。
3.Canvas实现图片圆角效果
该规则适用于各种Canvas绘制的规则或不规则图形。
Canvas中实现图片圆角的关键是使用“纹理填充”。
Canvas中有一个叫createPattern的方法,可以将已知规格的图片元素转换为纹理对象进行填充。
以猕猴桃为例,如果要实现一张名为test.jpg、大小为100px*100px的方形图片的效果,主要JS代码如下:
// canvas元素, 图片元素 var canvas = document.querySelector("#canvas"), image = new Image(); var context = canvas.getContext("2d"); image.onload = function() { // 创建图片纹理 var pattern = context.createPattern(image, "no-repeat"); // 绘制一个圆 context.arc(50, 50, 50, 0, 2 * Math.PI); // 填充绘制的圆 context.fillStyle = pattern; context.fill(); }; image.src = "test.jpg";
让Canvas上下文的fillStyle属性值等于这个纹理对象。
有这个demohtml5图片圆形,大家可以硬点这里:Canvas实现圆角图片demo
Canvas自带的圆形绘图API没有圆角属性,所以demo中的圆角正方形使用了自定义的方法。 我快速浏览了一下,发现在垂直和水平方向上实现不同的圆角尺寸有点繁琐。 出于演示的目的,我没有花太多精力,因此演示中的鱼片是对称的。
该演示展示了带有圆角的方形效果。 如果想实现完美的圆形效果,请使用arc方法来绘制,如上所示的JS代码。 事实上,你还可以勾勒出其他不规则形状进行填充,创造出更有趣的图形效果。
4、什么意思
CSS3实现圆角效果有多简单,而SVG和Canvas的兼容性又没那么好,那么何必费心去搞SVG和Canvas的圆角效果呢?
我只想说:生而为有用之人,金子去了,还会再回来。
五、年中总结
明天6月30日,是上半年的最后一天,所以明天的尾声就晋升为年中尾声了。
我得想出一个牛逼的尾声来压场面,啊,有:“世界不薄不厚,归根结底是平的”。
好吧,最后附上我一开始勉强放的截图(近70K),包括:图像叠加、CSS3、SVG、Canvas实现功效和代码显示(点击蓝色背景块即可显示)。
本文为原创文章,包含脚本行为。 知识点会不定期更新,也会修正一些错误。 因此,转载时请保留原始出处,以便于追查html5图片圆形,防止旧知识和错误知识的欺骗,同时也能有更好的阅读体验。