【问题标题】:Add a Border Radius to <video> tag in Chrome在 Chrome 中为 <video> 标签添加边框半径
【发布时间】:2013-05-07 01:16:30
【问题描述】:

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

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

<video src="" controls></video>

到我的页面。该视频在跨浏览器上运行良好(未显示此问题的所有格式设置,因为它不相关)。

然后我将边框半径应用于视频标签。这有效,除了在 Chrome 中。 我什至可以打开控制台并查看应用于视频标签的边框半径,但它没有呈现边框半径。

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

【问题讨论】:

  • rounded corners on html5 video 的可能重复项
  • 是的,正如我在问题中所说:我已经看到这个问题出现了几次,但没有任何明确的解决方案。您引用的链接已有一年多的历史,解决方案是浏览器错误。我特地问是否有人知道它是否已解决。
  • 然后给其中一个副本添加赏金,说明你想知道它是否已经解决。
  • 您的视频需要响应式吗?如果没有,并且您不需要可点击视频(按钮等),您可以用透明图像覆盖它。但这是很多如果。另一种选择是为视频添加一些填充,使用漂亮的背景颜色,然后以这种方式将其四舍五入。创建一个漂亮的框架。
  • 谢谢,是的,我需要对视频进行控制和交互,这样叠加层就不起作用了。我见过填充技巧,当我第一次看到它时,它看起来有点蹩脚,但看起来并不吸引人。太糟糕了 Chrome 似乎早就知道这个问题了。

标签: html google-chrome video css


【解决方案1】:

我不确定,但我认为这就是“使用 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;
}

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>

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

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

CSS:

#video-container:after {
    position: absolute;
    width: 320px;
    height: 240px;
    content: " ";
.....

HTML:

<div id="video-container">
    <video width="320" height="240" src="http://www.w3schools.com/html/movie.ogg" type="video/ogg" controls></video>
</div>

SVG 的修改非常简单,只需更改它们的 fill 属性即可。

这可能也可以通过 JS 来完成。

【讨论】:

  • 感谢您的详细回答。小提琴无法正常工作,只是显示视频。 SVG 根本不是必需的,但有人在我在别处读到的问题上推荐的可能解决方案之一。似乎 IE9/10 和 Firefox 可以处理视频标签上的简单边框半径,但其他人无法正确呈现它。
  • 我运行的是 Chrome 26,你运行的是其他版本吗?这是我看到的:i.imgur.com/85pTKeW.png
  • 哦,伙计,我在看 FF。 :p 对不起,漫长的一天。是的,它看起来很棒。现在,我对 SVG 知之甚少,但边界半径是否可以缩放,还是类似于加载图像?非常感谢您的帮助。
  • 没问题。是的,由于 SVG 是矢量,您可以无限缩放它们。最简单的方法是使用 SVG 变换比例属性(AFAIK,它与 CSS 相同),您可以将其放在每个属性的 &lt;g transform=" 之后。您还必须更改 SVG 的宽度和高度属性。这是一个演示:jsfiddle.net/pe3QS/6
  • 这是一个非常快速(但很脏)的 jQuery 插件:jsfiddle.net/pe3QS/7 :D(我很无聊)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2020-07-20
  • 1970-01-01
相关资源
最近更新 更多