为IFrame添加边框并不重要 - 你可以这样做,例如:
border: 4px solid #000;
-moz-border-radius: 15px;
border-radius: 15px;
问题在于,当您将内容加载到该IFrame时,内容会与角落中的边框重叠,如下所示:
任何想法如何解决这个问题?例如。是否有一个JavaScript库来处理这个......
答案 0 :(得分:13)
你也可以这样做:
<div style="padding:10px;background:#000;webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 20px;width:560px;margin:0 auto;overflow:hidden;">
<iframe src="http://www.youtube.com/embed/MOVIEID?fs=1&autoplay=1&loop=1&rel=0&border=0&modestbranding=1" width="560" height="315" frameborder="0"></iframe>
</div>
我还在上面的示例中包含了所有youtube选项:
1:autoplay = 1(0/1 |自动播放电影)
2:loop = 1(0/1循环打开/关闭)
3:rel = 0(在电影结束后隐藏相关电影,这并不总是有效)
4:border = 0(删除youtube边框)
5:modestbranding = 1(删除youtube徽标)
答案 1 :(得分:9)
将iframe放在包装元素中,并为包装元素提供此CSS属性:
transform: translateY(0px);
.corner-wrapper {
display: block;
overflow: hidden;
width: 300px;
height: 150px;
border-radius: 10px;
transform: translateZ(0px);
border: 3px solid #eee;
}
&#13;
<div class="corner-wrapper">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d77935.71780117304!2d9.691260439866745!3d52.37964560033004!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47b00b514d494f85%3A0x425ac6d94ac4720!2sHannover!5e0!3m2!1sde!2sde!4v1458445807305" width="300" height="150" frameborder="0" style="border:0" allowfullscreen></iframe>
</div>
&#13;
答案 2 :(得分:7)
使用此属性:
border: 4px solid #000;
-moz-border-radius: 15px;
border-radius: 15px;
overflow: hidden;
答案 3 :(得分:2)
我知道这是一个相当陈旧的主题,但我找到了一个有效的工作,其他人都没有覆盖。
您所看到的是z索引问题。您需要做的就是将您的iFrame放入DIV,并将DIV和iframe的位置设置为绝对。然后在CSS中设置z-index。它适用于泡泡中的Youtube视频!
<style>
#player-wrapper{
border-radius:50%;
border:solid 1px #999;
width:360px;
height:360px;
overflow:hidden;
position:absolute;
left:50%;
top:90px;
margin-left:-130px;
z-index:10;
}
#player-wrapper iframe{
position:absolute;
left:50%;
margin-left:-320px;
z-index:9;
}
</style>
<div id="player-wrapper">
<iframe id="player" frameborder="0" allowfullscreen="1" title="YouTube video player" width="640" height="360" src="https://www.youtube.com/embed/rTMMraosnzg></iframe>
</div>
答案 4 :(得分:1)
您可以使用Malsap jQuery圆角插件。它不会解决实际问题,但它会给你圆角但没有问题。
答案 5 :(得分:1)
边界半径尚未得到很好的支持或一致性。如果你想要所需的效果,请尝试在元素周围使用DIV并使用图形,并在CSS中隐藏溢出。如果您的iframe高度不同,您可能需要查看滑动门tehnique。
http://www.alistapart.com/articles/slidingdoors/
希望这有帮助。
祝你好运!答案 6 :(得分:0)
盒子阴影会圆角。只是边界的厚度的传播距离和模糊值为0.这是一个黑客,但HTML中没有?
box-shadow: 0 0 0 1px #000;
将添加1像素边框。前两个零是偏移量。第三个零点是你想给阴影增加多少模糊(无)。 1px是你想要阴影走多远的距离。最后一个参数是边框的颜色。大多数人都忽略了传播,因为他们希望他们的阴影与元素的大小相同。
以下是我执行此操作的示例,该示例至少适用于IE9和Chrome 17:http://www.philihp.com/blog/2012/i-made-a-gps-locator-for-myself/
答案 7 :(得分:0)
如果您还没有想到这一点,试试这个......对我有用:
我注意到如果你尝试对标签进行外部测试,它就不起作用了。在iframe代码中设置样式。
祝你好运!
答案 8 :(得分:0)
工作解决方案:(2019年) 这样,您便可以应用所需的任何其他CSS,保持iframe动态,并仍然与iframe交互。
将此JavaScript(或jquery)功能添加到您的页面:
纯JavaScript解决方案:
function setIframeBorder(){
let iframeBorder = document.getElementsByTagName('iframe-border');
for(let i = 0; i < iframeBorder.length; i++){
let iframe = iframeBorder[i].getElementsByTagName('iframe')[0];
let width = iframeBorder[i].getAttribute('width'); let height = iframeBorder[i].getAttribute('height');
if(width){iframeBorder[i].style['width'] = width;} if(height){iframeBorder[i].style['height'] = height;}
iframe.style['width'] = '100%'; iframe.style['height'] = '100%';
iframeBorder[i].style['overflow'] = 'hidden'; iframeBorder[i].style['display'] = 'inline-block';
iframe.style['position'] = 'relative'; iframe.style['margin'] = '0';
}
}
setInterval(setIframeBorder, 10);
jquery解决方案:
function setIframeBorderJquery(){
$('iframe-border').each(function(){
$(this).css({'overflow': 'hidden', 'display': 'inline-block', 'width': $(this).attr('width'), 'height': $(this).attr('height')});
$('iframe', this).css({'position': 'relative', 'margin': '0', 'width': '100%', 'height': '100%'});
});
}
setInterval(setIframeBorderJquery, 10);
css :(可选)
iframe-border{
border-radius: 20px;
}
用法:
<iframe-border width="560" height="315">
<iframe src="https://www.youtube-nocookie.com/embed/ESjRtD0VoRk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</iframe-border>
答案 9 :(得分:0)
将css属性overflow: hidden;
添加到iframe
的父元素中可以正常工作!
像这样:
<html>
<body>
<div style="border-radius:10px;overflow: hidden;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/YE7VzlLtp-4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<div/>
</body>
</html>
答案 10 :(得分:-2)
您错过了overflow
和position
属性。这应该有效:
border: 4px solid #000;
-moz-border-radius: 15px;
border-radius: 15px;
overflow: hidden;
position: relative;