filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度)。
blur(px) 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一起, 所以值越大越模糊;
grayscale(%) 将图像转换为灰度图像。值定义转换的比例。值为100%则完全转为灰度图像,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;
invert(%) 反转输入图像。值定义转换的比例。100%的价值是完全反转。值为0%则图像无变化。值在0%和100%之间,则是效果的线性乘子。 若值未设置,值默认是0。
sepia(%) 将图像转换为深褐色。值定义转换的比例。值为100%则完全是深褐色的,值为0%图像无变化。值在0%到100%之间,则是效果的线性乘子。若未设置,值默认是0;
.none { -webkit-filter: none; filter: none; } .blur { -webkit-filter: blur(3px); filter: blur(3px); } .grayscale { -webkit-filter: grayscale(1); filter: grayscale(1); } .invert { -webkit-filter: invert(1); filter: invert(1); } .sepia { -webkit-filter: sepia(1); filter: sepia(1); } button#snapshot { margin: 0 10px 25px 0; width: 110px; } video { object-fit: cover; }
该Document方法querySelector(), 返回Element文档中与指定选择器或选择器组匹配的第一个。如果未找到匹配项,null则返回。
匹配是使用文档节点的深度优先预序遍历完成的,从文档标记中的第一个元素开始,并按子节点数量的顺序迭代顺序节点。
const filterSelect = document.querySelector('select#filter'); const video = window.video = document.querySelector('video');
filterSelect.onchange = function() { video.className = filterSelect.value; };
navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then(handleSuccess).catch(handleError); function handleSuccess(stream) { video.srcObject = stream; } function handleError(error) { console.log('navigator.MediaDevices.getUserMedia error: ', error.message, error.name); }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="./index.css"> </head> <body> <video playsinline autoplay></video> <label for="filter">Filter: </label> <select id="filter"> <option value="none">None</option> <option value="blur">Blur</option> <option value="grayscale">Grayscale</option> <option value="invert">Invert</option> <option value="sepia">Sepia</option> </select> <script src="./index.js"></script> </body> </html>
效果展示:
i