使用CSS实现弹性视频html5案例实践


Posted in HTML / CSS onDecember 26, 2012

当我编码Elemin Theme(我最近设计的一个响应式的站点)的时候,我遇到的一个跳帧就是,如何能让嵌入式的视频在尺寸变化上变得更加灵活。使用max-width:100% 和height:auto可以让html5的video标签很好的工作,但是这个解决方案不适用于iframe 或者 object标签的内嵌代码。通过几小时的寻找资料和实验,我最终找到了解决办法。当你在进行响应式设计的时候,这一css技巧能派上用场。

灵活的html5 video标签
使用html5的video,可以通过设置max-width:100%让他变得灵活。前面的介绍中,已经提到他不适用于常用的iframe和object中的内嵌代码。

复制代码
代码如下:

video {
max-width: 100%;
height: auto;
}

灵活的Object & Iframe 内嵌视频
这个技巧相当简单,你需要为video添加一个<div>容器,并且将div的padding-bottom属性值设置在50%到60%之间。然后设置子元素(ifame或者object)的width和height为100%,并且使用绝对定位。这样会迫使内嵌对象自动扩充到最大。
CSS
复制代码
代码如下:

.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

HTML
复制代码
代码如下:

<div class="video-container">
<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>

在固定宽度下实现灵活性
如果限制了视频的宽度,那么我们需要一个额外的<div>容器包裹video,并为div设置固定宽度和max-width:100%。
CSS
复制代码
代码如下:

.video-wrapper {
width: 600px;
max-width: 100%;
}

HTML
复制代码
代码如下:

<div class="video-wrapper">
<div class="video-container">
<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>
<!-- /video -->
</div>
<!-- /video-wrapper -->

兼容性
这个技巧支持所有的浏览器,包括:Chrome, Safari, Firefox, Internet Explorer, Opera, iPhone 和 iPad。
HTML / CSS 相关文章推荐
使用HTML5和CSS3表单验证功能
May 05 HTML / CSS
css图标制作教程制作云图标
Jan 19 HTML / CSS
CSS书写规范、顺序和命名规则
Mar 06 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
Sep 10 HTML / CSS
html+css实现自定义图片上传按钮功能
Sep 04 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
Jan 31 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
Jan 31 HTML / CSS
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
Apr 14 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
May 11 HTML / CSS
HTML5 canvas基本绘图之绘制线条
Jun 27 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
Dec 14 HTML / CSS
使用canvas仿Echarts实现金字塔图的实例代码
Nov 11 HTML / CSS
HTML5中实现拖放效果无须借助javascript
Dec 26 #HTML / CSS
html5 application cache遇到的严重问题
Dec 26 #HTML / CSS
html5 web本地存储将取代我们的cookie
Dec 26 #HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 #HTML / CSS
html5声频audio和视频video等新特性详细说明
Dec 26 #HTML / CSS
html5-Canvas可以在web中绘制各种图形
Dec 26 #HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
Dec 25 #HTML / CSS
You might like
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
JavaScript this 深入理解
2009/07/30 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python实现矩阵打印
2019/03/02 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
交警正风肃纪剖析材料
2014/10/29 职场文书
成本会计实训报告
2014/11/05 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle