欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年09月23日 08:48:58   作者:liuxianan  
這篇文章主要介紹了transform實(shí)現(xiàn)HTML5 video標(biāo)簽視頻比例拉伸的相關(guān)資料,需要的朋友可以參考下

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

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

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

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

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

<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>

不過(guò)這一屬性兼容性不太好,IE全軍覆沒(méi),安卓要4.4.3以上才支持:

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

解決方法一

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

沒(méi)錯(cuò),這就是我說(shuō)的第一種解決方法,但是這對(duì)于少量視頻沒(méi)啥問(wèn)題,如果有很多個(gè)視頻,全部轉(zhuǎn)碼又重新上傳也不太現(xiàn)實(shí)。剛開(kāi)始我也確實(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)高度變小,也就是寬高比變大了??聪聢D:

舉個(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)任意比例的視頻拉伸了,不過(guò)變形過(guò)程中需要注意位置可能發(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>

相關(guān)文章

  • IDEA+Git+Gitlab使用詳細(xì)教程

    IDEA+Git+Gitlab使用詳細(xì)教程

    這篇文章主要介紹了IDEA+Git+Gitlab使用詳細(xì)教程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • elasticsearch索引index之merge底層機(jī)制的合并講解

    elasticsearch索引index之merge底層機(jī)制的合并講解

    這篇文章主要為大家介紹了elasticsearch索引index之merge底層機(jī)制的合并,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • VScode設(shè)置語(yǔ)言為中文以及解決中文注釋亂碼問(wèn)題

    VScode設(shè)置語(yǔ)言為中文以及解決中文注釋亂碼問(wèn)題

    VSCode默認(rèn)是英文語(yǔ)言環(huán)境,習(xí)慣了用中文,下面這篇文章主要給大家介紹了關(guān)于VScode設(shè)置語(yǔ)言為中文以及解決中文注釋亂碼問(wèn)題的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • markdown簡(jiǎn)介和語(yǔ)法介紹

    markdown簡(jiǎn)介和語(yǔ)法介紹

    這篇文章主要介紹了markdown簡(jiǎn)介和語(yǔ)法介紹,本文重點(diǎn)介紹了常用的一些markdown語(yǔ)法,可以做為一個(gè)簡(jiǎn)明版的入門指南,另本文還提供了一個(gè)在線學(xué)習(xí)markdown的簡(jiǎn)明教程,需要的朋友可以參考下
    2014-07-07
  • 頁(yè)面制作統(tǒng)一的頭尾的方法(asp+js)

    頁(yè)面制作統(tǒng)一的頭尾的方法(asp+js)

    有時(shí)候我們需要統(tǒng)一頁(yè)面的頭尾,如果不是獨(dú)立,每次要修改文件,就要所有的模板頁(yè)面都要修改增加麻煩,所以,獨(dú)立頭尾調(diào)用,就只需要修改兩個(gè)頁(yè)面就可以了。
    2009-04-04
  • 一文了解Hive是什么

    一文了解Hive是什么

    Hive?是基于?Hadoop?的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類?SQL?查詢功能,對(duì)Hive是什么及優(yōu)缺點(diǎn)感興趣的朋友跟隨小編一起看看吧
    2022-05-05
  • gb2312的詳細(xì)介紹

    gb2312的詳細(xì)介紹

    gb2312的詳細(xì)介紹,需要的朋友可以參考一下
    2013-03-03
  • 將Sublime?Text?設(shè)置成中文版的完整教程

    將Sublime?Text?設(shè)置成中文版的完整教程

    這篇文章主要介紹了將Sublime?Text?設(shè)置成中文版的完整教程,需要自己添加之后才會(huì)有這一項(xiàng),對(duì)Sublime?Text中文版設(shè)置方法感興趣的朋友一起看看吧
    2022-01-01
  • i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)

    i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)

    i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率),需要的朋友可以參考下。
    2011-01-01
  • npm script 的文件監(jiān)聽(tīng)和自動(dòng)刷新的命令詳解

    npm script 的文件監(jiān)聽(tīng)和自動(dòng)刷新的命令詳解

    文件監(jiān)聽(tīng)的作用是為了實(shí)現(xiàn)自動(dòng)化,釋放雙手和精力,提高效率,讓開(kāi)發(fā)者更加關(guān)注于開(kāi)發(fā)。這篇文章主要介紹了npm script 的文件監(jiān)聽(tīng)和自動(dòng)刷新,需要的朋友可以參考下
    2019-06-06

最新評(píng)論