在Chrome中为<video>标记添加边框半径

Aar*_*ron 5 css video html5 google-chrome css3

我已经看到这个问题弹出了几次没有任何明确的解决方案.

我正在加载一个简单的视频

<video src="" controls></video>
Run Code Online (Sandbox Code Playgroud)

在我的页面上.该视频可以跨浏览器工作和播放(不显示此问题的所有格式设置,因为它不相关).

然后我将边界半径应用于视频标签.这适用于Chrome以外的功能.我甚至可以拉起控制台并看到应用于视频标签的border-radius,但它不会渲染边框半径.

有人熟悉这个问题吗?我已经读过它是Chrome中的一个错误,但我不确定它是否已经解决或是否有解决方法?

A.M*_*M.K 6

我不确定,但我认为这就是"使用SVG"的含义:

我们的想法是创建一个与视频宽度和高度相同的HTML覆盖元素,在其上设置多个SVG背景(border-radius无论背景颜色是什么),并使其"鼠标不可见"(pointer-events: none):

演示:http://jsfiddle.net/pe3QS/3/

CSS(减去SVG):

#video-container {
    position: relative;
}

#overlay {
    position: absolute;
    width: 320px;
    height: 240px;
    left: 0;
    top: 0;
    pointer-events: none;
    background-image: url('data:image/svg+xml...');
    background-position: top right, top left, bottom left, bottom right;
    background-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="video-container">
    <video width="320" height="240" src="http://www.w3schools.com/html/movie.ogg" type="video/ogg" controls></video>
    <div id="overlay"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

你也可以使用一个伪元素(不在video元素上,它不会显示):

演示:http://jsfiddle.net/pe3QS/2/

CSS:

#video-container:after {
    position: absolute;
    width: 320px;
    height: 240px;
    content: " ";
.....
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="video-container">
    <video width="320" height="240" src="http://www.w3schools.com/html/movie.ogg" type="video/ogg" controls></video>
</div>
Run Code Online (Sandbox Code Playgroud)

修改SVG非常简单,只需更改fill每个SVG的属性即可.

这可能也可以通过JS完成.