国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > HTML5 > 正文

transform實(shí)現(xiàn)HTML5 video標(biāo)簽視頻比例拉伸實(shí)例詳解

2024-07-21 02:02:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

曾幾何時(shí),項(xiàng)目中有碰到視頻比例拉伸的需求,但是發(fā)現(xiàn)這個(gè)看似再普通不過的一個(gè)需求,找遍全網(wǎng)至今都沒有找到解決方法。因?yàn)閺?qiáng)制給video標(biāo)簽設(shè)置width和height的話只會(huì)將video的顯示區(qū)域拉伸,但是里面的視頻還是保持原始比例,怎么調(diào)都沒用:

因?yàn)楫?dāng)我橫向拉伸時(shí):

當(dāng)我縱向拉伸時(shí):

2016-09-21 11:15:40 更新:

感謝 @RileyRen 提醒,原來(lái)還有object-fit這一屬性,把它設(shè)置為fill就滿足需求了,淚奔~,這篇文章就當(dāng)看個(gè)笑話吧,哎,不過可以看看我家喵星人的處女秀。

<style>video { object-fit:fill; width:800px; height:320px;}</style><h1>測(cè)試視頻比例拉伸:</h1><video src="http://7xnzpx.com1.z0.glb.clouddn.com/miaoxingren_360p.mp4" controls autoplay loop></video>

不過這一屬性兼容性不太好,IE全軍覆沒,安卓要4.4.3以上才支持:

所以我這個(gè)方法還是有一點(diǎn)點(diǎn)價(jià)值的,哈哈。

解決方法一

有人會(huì)說(shuō),既然網(wǎng)頁(yè)上拉伸不了比例,那么直接把視頻用轉(zhuǎn)碼工具拉伸比例然后重新轉(zhuǎn)碼不就是了?

沒錯(cuò),這就是我說(shuō)的第一種解決方法,但是這對(duì)于少量視頻沒啥問題,如果有很多個(gè)視頻,全部轉(zhuǎn)碼又重新上傳也不太現(xiàn)實(shí)。剛開始我也確實(shí)是這么做的,但是后來(lái)發(fā)現(xiàn)還有其它方法。

解決方法二

就是標(biāo)題說(shuō)的,借用transform來(lái)實(shí)現(xiàn)視頻比例拉伸。分2種情況,寬高比變大和寬高比變小。

完整DEMO演示

先來(lái)看個(gè)完整的DEMO,視頻主角是我家的喵星人,阿喵說(shuō):哎呀,要露臉了,好害羞~~~

http://demo.liuxianan.com/2016/01/09/html5-video-resize/

寬高比變大

保持寬度不變,調(diào)整rotateX即可實(shí)現(xiàn)高度變小,也就是寬高比變大了。看下圖:

舉個(gè)例子,假如原始視頻分辨率是640*320(16:9),我想把它調(diào)成16:7,也就是640*280,那么:

cos θ = 新高度 / 舊高度 = 280 / 360

用js計(jì)算角度(單位是deg):

var rotate = (Math.acos(280/360)*180/Math.PI).toFixed(2); // 新高度 / 舊高度

寬高比變小

寬高比減小時(shí),以高度為基準(zhǔn),調(diào)整rotateY即可實(shí)現(xiàn)寬度變小,也就是寬高比變小了。

舉個(gè)例子,假如原始視頻分辨率是640*320(16:9),我想把它調(diào)成4:3,也就是480*320,那么:

cos θ = 新寬度 / 舊寬度 = 480 / 640

用js計(jì)算角度(單位是deg):

var rotate = (Math.acos(480/640)*180/Math.PI).toFixed(2); // 新寬度 / 舊寬度

總結(jié)

綜上,有了這2個(gè)方法就可以實(shí)現(xiàn)任意比例的視頻拉伸了,不過變形過程中需要注意位置可能發(fā)現(xiàn)的變化。

附上前面演示選擇的DEMO:

<!DOCTYPE html><html lang="zh"><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>旋轉(zhuǎn)比例模擬</title> <style type="text/css">.content { position: absolute; width: 400px; height: 300px; -webkit-perspective: 400px; perspective: 400px; left: 100px; top: 100px;}.wrapper { position: absolute; width: 320px; height: 240px; transform: rotateY(-30deg) rotateX(0deg); border: solid 2px #000;}.wrapper.rotate{ transform: rotateY(-30deg) rotateX(50deg);}.wrapper:after { content: ''; display: block; position: absolute; width: 400px; left: -40px; top: 120px; height: 2px; background: black;}.wrapper img{ width: 100%; height: 100%;} </style></head><body> <div class="content"> <div class="wrapper">  <img src="http://test.liuxianan.com/sample.jpg"/> </div> <div class="wrapper rotate">  <img src="http://test.liuxianan.com/sample.jpg"/> </div> </div></body></html>

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 错那县| 揭东县| 尼勒克县| 嘉义市| 南溪县| 交口县| 德安县| 枣强县| 遵义市| 金山区| 平凉市| 津市市| 乾安县| 小金县| 泽库县| 南皮县| 工布江达县| 宁强县| 遵义县| 增城市| 石首市| 塔河县| 西和县| 梅州市| 邵武市| 托克托县| 同心县| 武隆县| 徐水县| 开远市| 南京市| 黑龙江省| 林芝县| 乐都县| 拉萨市| 玛纳斯县| 织金县| 涞源县| 睢宁县| 成都市| 古浪县|