【数据帧封装 源码】【知了导航源码】【网络架构源码】html5自适应源码_h5自适应代码

时间:2024-11-16 22:27:19 分类:MFC充值系统源码 来源:2020钓鱼源码

1.html5?自适自适???ӦԴ??

html5自适应源码_h5自适应代码

html5????ӦԴ??

       曾几何时,项目中有碰到视频比例拉伸的应源应代需求,但是码h码发现这个看似再普通不过的一个需求,找遍全网至今都没有找到解决方法。自适自适因为强制给video标签设置width和height的应源应代话只会将video的显示区域拉伸,但是码h码数据帧封装 源码里面的视频还是保持原始比例,怎么调都没用:

       因为当我横向拉伸时:

       当我纵向拉伸时:

       -- :: 更新:

       感谢 @RileyRen 提醒,自适自适原来还有object-fit这一属性,应源应代把它设置为fill就满足需求了,码h码泪奔~,自适自适这篇文章就当看个笑话吧,应源应代哎,码h码不过可以看看我家喵星人的自适自适知了导航源码处女秀。

       <style>video {

       object-fit:fill;

       width:px;

       height:px;}</style><h1>测试视频比例拉伸:</h1><video src="1.z0.glb.clouddn.com/miaoxingren_p.mp4" controls autoplay loop></video>

       但是应源应代,这一属性兼容性不太好,码h码IE全军覆没,安卓要4.4.3以上才支持:

       所以我这个方法还是有一点点价值的,哈哈。

       解决方法一

       有人会说,网络架构源码既然网页上拉伸不了比例,那么直接把视频用转码工具拉伸比例然后重新转码不就是了?

       没错,这就是我说的第一种解决方法,但是这对于少量视频没啥问题,如果有很多个视频,全部转码又重新上传也不太现实。指标bisa源码刚开始我也确实是这么做的,但是后来发现还有其它方法。

       解决方法二

       就是标题说的,借用transform来实现视频比例拉伸。分2种情况,宽高比变大和宽高比变小。windows源码树

       3.1. 完整DEMO演示

       先来看个完整的DEMO,视频主角是我家的喵星人,阿喵说:哎呀,要露脸了,好害羞~~~

       ///-html5-video-resize/

       3.2. 宽高比变大

       保持宽度不变,调整rotateX即可实现高度变小,也就是宽高比变大了。看下图:

       举个例子,假如原始视频分辨率是*(:9),我想把它调成:7,也就是*,那么:

       cos θ = 新高度 / 旧高度 = /

       用js计算角度(单位是deg):

       var rotate = (Math.acos(/)*/Math.PI).toFixed(2); // 新高度 / 旧高度

       3.3. 宽高比变小

       宽高比减小时,以高度为基准,调整rotateY即可实现宽度变小,也就是宽高比变小了。

       举个例子,假如原始视频分辨率是*(:9),我想把它调成4:3,也就是*,那么:

       cos θ = 新宽度 / 旧宽度 = /

       用js计算角度(单位是deg):

       var rotate = (Math.acos(/)*/Math.PI).toFixed(2); // 新宽度 / 旧宽度

       总结

       综上,有了这2个方法就可以实现任意比例的视频拉伸了,不过变形过程中需要注意位置可能发现的变化。

       附

       附上前面演示选择的DEMO:

       <!DOCTYPE html><html lang="zh"><head>

       <meta charset="utf-8">

       <meta name="viewport" content="width=device-width, initial-scale=1.0">

       <title>旋转比例模拟</title>

       <style type="text/css">.content {

       position: absolute;

       width: px;

       height: px;

       -webkit-perspective: px;

       perspective: px;

       left: px;

       top: px;}.wrapper {

       position: absolute;

       width: px;

       height: px;

       transform: rotateY(-deg) rotateX(0deg);

       border: solid 2px #;}.wrapper.rotate{

       transform: rotateY(-deg) rotateX(deg);}.wrapper:after {

       content: '';

       display: block;

       position: absolute;