使用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 相关文章推荐
CSS3 绘制BMW logo实的现代码
Apr 25 HTML / CSS
CSS图片翻转动画技术详解(IE也实现了)
Apr 03 HTML / CSS
利用css3画个同心圆示例代码
Jul 03 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
Sep 24 HTML / CSS
canvas绘制文本内容自动换行的实现代码
Jan 14 HTML / CSS
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
Dec 13 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
May 07 HTML / CSS
HTML5本地存储之IndexedDB
Jun 16 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 HTML / CSS
canvas画图被放大且模糊的解决方法
Aug 11 HTML / CSS
AmazeUI图片轮播效果的示例代码
Aug 20 HTML / CSS
微信小程序纯CSS实现无限弹幕滚动效果
Sep 23 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
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
php函数与传递参数实例分析
2014/11/15 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
python使用KNN算法手写体识别
2018/02/01 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
高三自我鉴定
2013/10/23 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
保姆聘用合同
2015/09/21 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Golang流模式之grpc的四种数据流
2022/04/13 Golang