我希望用蓝色透明蒙版覆盖视频,中间有一个剪切圆圈。切出的圆圈将被涂成红色并且也是透明的。
我需要能够使用javascript轻松调整圆圈(和剪切)的大小。
最终会看起来像这样:
https://i.stack.imgur.com/ORVyQ.jpg
我无法使用透明的PNG或SVG并只是调整大小,因为我需要能够使用javascript设置颜色。
最有效的方法是什么?
这是我目前所拥有的,但我不认为这是最好的方式。
https://jsfiddle.net/tbristol/j60u8pLm/
特别是因为我正在使用第二个SVG元素并使用顶部调整它:-18px,我认为它不会很好地扩展或调整好。
svg:nth-child(2) {
margin-top:-100%;
position:relative;
top:-18px;
}
答案 0 :(得分:3)
我认为你正在推翻解决方案。
您需要做的就是在背景顶部放置一个半透明的SVG。不需要口罩。
var circ = document.getElementById("circ");
// Every second update the position and size of the circle
window.setInterval(function() {
circ.setAttribute("cx", getRandomNumberMinMax(30, 70) + "%");
circ.setAttribute("cy", getRandomNumberMinMax(30, 70) + "%");
circ.setAttribute("r", getRandomNumberMinMax(20, 40) + "%");
}, 1000);
function getRandomNumberMinMax(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
body {
background-image: url(http://bennettfeely.com/clippy/pics/pittsburgh.jpg);
margin: 0;
padding: 0;
}
svg {
position: absolute;
height: 100%;
width: 100%;
}
<body>
<svg>
<g opacity="0.5">
<rect x="0" y="0" width="100%" height="100%" fill="blue" />
<circle id="circ" cx="50%" cy="40%" r="30%" fill="red" />
</g>
</svg>
</body>