console
const popover = document.getElementById("mypopover")
const colorDom = document.querySelector('.color')
const rangeDom = document.querySelector('#range')
rangeDom.addEventListener('change',(e)=>{
let range = e.target.value;
popover.showPopover()
popover.innerText=`进度:${range}%`
const pre= Number((range-0.3).toFixed(2))
const current= Number(range)
const colorChangeFrames = {
'--pre':pre+'%',
'--current':current+'%'
};
colorDom.animate({
'--pre':pre+'%',
'--current':current+'%'
}, {
duration: 300,
iterations: 1,
fill: 'forwards'
});
})
<div class="father">
<h4>放图片放视频,都不会被设置了mask的区域遮挡</h4>
<h4>放图片放视频,都不会被设置了mask的区域遮挡</h4>
<h4>放图片放视频,都不会被设置了mask的区域遮挡</h4>
<div class="item color ">
<h6>可以放弹幕,可以放弹幕,</h6>
<h6>去掉background,制作弹幕层</h6>
<h6>mask-image使用人物剪影透明图片同步变化</h6>
<h6>实现弹幕不遮挡主要内容</h6>
</div>
<br>
<br>
<input type="range" id="range" name="volume" min="0" max="100" />
<div popover id="mypopover"></div>
</div>
<script>
</script>
.father {
position:relative;
width: 220px;
height: 220px;
background: yellow;
}
@property --pre{
syntax: '<percentage>';
inherits: false;
initial-value: 99.99%;
}
@property --current{
syntax: '<percentage>';
inherits: false;
initial-value: 100%;
}
.color{
position:absolute;
left:20px;
top:20px;
width: 180px;
height: 180px;
border-radius: 50%;
background: conic-gradient(
/* from 表示颜色以及角度开始的地方 默认是顶部为0deg,
设置了180deg之后就是以原来的180deg作为现在的0deg
*/
from 180deg,
#fff -1deg, #f00 1deg,
#ff0, #0f0,
#0ff, #00f,
#f0f var(--pre),
#000 var(--current)
);
mask-image: radial-gradient(
rgba(36, 36, 3,0) 50px,#f10 51px
);
}
.innerbox{
width:100%;
height:100%;
}
.rotate180{
transform:rotate(180deg);
}
#mypopover{
padding:16px;
background:rgba(2,3,4,.3);
border:none;
border-radius:4px;
}
h4{
color:green;
}
h6{
color:white;
}