这种图片作背景的锯齿,而且内凹圆是透明的锯齿形状该如何实现呢,而且图片不能带锯齿.....要被逼疯了T_T!
可以使用canvas实现
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvas 图片锯齿</title>
<style type="text/css">
body {
background: #D3D3D3;
}
canvas {
border: 1px solid;
}
</style>
</head>
<body>
<canvas id="MyCanvas">
</canvas>
<script type="text/javascript">
var c = document.getElementById("MyCanvas"),
cxt = c.getContext("2d"),
image = new Image();
var r = 5;//锯齿半径
image.src = "http://placeimg.com/200/400/any/sepia";
image.onload = function() {
c.width = image.width;
c.height = image.height;
cxt.drawImage(this, 0, 0);
cxt.globalCompositeOperation = 'xor';
//上部
for(var i=r*2;i<c.width-r;i+=r*4) {
drawSawtooth(i,0,r,1);
}
//下部
for(var i=r*2;i<c.width-r;i+=r*4) {
drawSawtooth(i,c.height,r,0);
}
}
function drawSawtooth(x,y,r,d) { //d:方向
cxt.fillStyle='rgb(0,0,0)';
cxt.beginPath();
if(d==1) {
cxt.arc(x,y,r,Math.PI,0,true);
}else {
cxt.arc(x,y,r,0,Math.PI,true);
}
cxt.closePath();
cxt.fill();
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
div{
width: 400px;
height: 400px;
background-color: red;
padding: 20px 0;
overflow: hidden;
position: relative;
}
div:after,div:before{
content: '';
display: block;
width: 100%;
position: absolute;
border-top: 10px dotted yellow;
transform:translateY(-50%);
}
div:after{
top:0;
transform:translateY(-50%);
}
div:before{
bottom: 0;
transform:translateY(50%);
}
</style>
</head>
<body>
<div></div>
</body>
</html>
大体这样试试
这就是CSS-shape,实现方法很多,我推荐个用CSS实现的。使用box-shdow和box-radius做半圆的镂空图形,使用伪元素::before,::after分别做上下边的镂空图形,代码参考demo
3 回答4.9k 阅读✓ 已解决
5 回答2k 阅读
2 回答1.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.5k 阅读
4 回答2.2k 阅读
2 回答1k 阅读✓ 已解决
css3 mask属性。
主要代码
效果(在chrome和firefox测试可以): https://codepen.io/liuyaqi/pe...