html 图片 气泡,微信气泡的图片铺满怎么做的?canvas做出来吗?css呢?

本文介绍了一种使用CSS3 clip-path和border-radius属性创建独特圆角效果的方法,通过JavaScript精确控制路径实现自定义切割,适用于实现气泡图样式的图形设计。作者分享了详细的代码示例和一个详细教程链接,帮助读者理解并实践。
摘要由CSDN通过智能技术生成

提供一个兼容性不高的方法,效果还行,利用css3的clip-path属性和border-radius属性。

代码地址:看这里,其中图片右上端和右下的圆角和左上左下的圆角的半径不一样,是因为被剪切掉了,所以要加大半径来模拟效果。

分割线,不过有个思路,可以用js控制切割的路径,比如说向右边的圆角,那是四分之一弧,可以模拟100个或者更多个点,他们之间的连线就可以大概模拟出一个四分之一弧了。要计算大量的坐标,题主可以试试,我还在试

---------- 好了,更新----------------------------------------------

看效果:点这里

代码主要就是生成polygon函数的参数,polygon是多边形,其中我给那个小三角的位置固定了,没有整成参数。

左上和左下的圆角是用的border-radius生成的,右上角和右下角的是绘制路径剪切而成

/**

@r {number} 圆角的宽度

@x {number} 图片的宽度

@y {number} 图片的高度

*/

function makeTopPointPos(r,x,y){

var angle,rx,ry,a,b,item;var arr=[];

for(var i=0;i<2000;i++){

angle=i/1000*Math.PI/2;

rx=0.95*x-r+r*Math.cos(angle);

ry=r-r*Math.sin(angle);

a=rx/x*100+'%';

b=ry/y*100+'%';

item=a+' '+b;

arr.push(item);

}

return arr;

}

function makeBottomPointPos(r,x,y){

var angle,rx,ry,a,b,item;var arr=[];

for(var i=0;i<2000;i++){

angle=i/1000*Math.PI/2;

rx=0.95*x-r+r*Math.sin(angle);

ry=y-r+r*Math.cos(angle);

a=rx/x*100+'%';

b=ry/y*100+'%';

item=a+' '+b;

arr.push(item);

}

return arr;

}

var topPoints=makeTopPointPos(20,200,200).join(',');

var bottomPoints=makeBottomPointPos(20,200,200).join(',');

function makeParams(r,x,y){

var rtx=(0.95*x-r)/x*100+'%';

var rty=r/y*100+'%';

var rbx=(0.95*x-r)/x*100+'%';

var rby=(y-r)/y*100+'%';

var html='(0% 0%,0% 100%,'+rtx+' 100%,'+bottomPoints+', 95% '+rby+',95% 35%,100% 32%,95% 29%,95% '+rty+','+topPoints+','+rtx+' 0%)';

return html;

}

@沉然静寂 题主再来瞅瞅

-------更新-------------------------------

写了篇文章,可以很方便的得出这种气泡图的效果,可以来瞅瞅文章

参考:css-tricks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值