首先你要在html頁(yè)面頭部加上下面的代碼,其次你要把頁(yè)面中的寬度修改為百分比,不能不用固定尺寸,一些小的模塊可以用固定尺寸。再就是css中要應(yīng)用到媒體查詢,也就是@media,不懂可以百度。

銀川網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),銀川網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為銀川近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的銀川做網(wǎng)站的公司定做!
meta?name="viewport"?content="width=device-width,?initial-scale=1"/
有兩種
1.通過(guò)設(shè)置viewport參數(shù)
2.使用css3中的縮放
兩種方法都需要獲取當(dāng)前屏幕大小然后根據(jù)網(wǎng)頁(yè)寬度來(lái)計(jì)算縮放比例,然后進(jìn)行縮放。但是因?yàn)槟壳笆謾C(jī)種類(lèi)繁多,瀏覽器種類(lèi)也很多,所以每種方法各自都有不少的問(wèn)題。
/spanmeta name=“viewport” content=“width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes” /
在網(wǎng)頁(yè)的中增加以上這句話,可以讓網(wǎng)頁(yè)的寬度自動(dòng)適應(yīng)手機(jī)屏幕的寬度。
其中:
width=device-width :表示寬度是設(shè)備屏幕的寬度
initial-scale=1.0:表示初始的縮放比例
minimum-scale=0.5:表示最小的縮放比例
maximum-scale=2.0:表示最大的縮放比例
user-scalable=yes:表示用戶是否可以調(diào)整縮放比例
曾幾何時(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ò)可以看看我家喵星人的處女秀。
stylevideo {
object-fit:fill;
width:800px;
height:320px;}/styleh1測(cè)試視頻比例拉伸:/h1video src="" controls autoplay loop/video
但是,這一屬性兼容性不太好,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種情況,寬高比變大和寬高比變小。
3.1.?完整DEMO演示
先來(lái)看個(gè)完整的DEMO,視頻主角是我家的喵星人,阿喵說(shuō):哎呀,要露臉了,好害羞~~~
3.2.?寬高比變大
保持寬度不變,調(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); // 新高度 / 舊高度
3.3.?寬高比變小
寬高比減小時(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 htmlhtml 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;
使用百分比,比如
img
src='../a.ipg'
style='width:50%'
/
這樣就會(huì)保持屏幕的50%的寬度。
如果有上級(jí)標(biāo)簽,比如:
div
img
src='../a.ipg'
style='width:50%'
/
/div
那圖片大小就是div寬度的50%,div沒(méi)有設(shè)置寬度就會(huì)默認(rèn)是屏幕寬度,如果設(shè)置了寬度,就要注意
分析設(shè)計(jì)圖
假設(shè)設(shè)計(jì)圖大小為1080px。這也就意味著,在開(kāi)發(fā)時(shí),需要兼容的最大分辨率為1080px,最小的為320px。
2.?調(diào)整視口
代碼實(shí)例:
!DOCTYPE?html
head
meta?charset="UTF-8"?/
title布局之路-移動(dòng)端開(kāi)發(fā)實(shí)例/title
meta?name="viewport"?content="width=device-width,user-scalable?=?no"?/
link?rel="stylesheet"?type="text/css"?href="css/reset.css"?/
/head
body
div?class="wrap"/div
/body
/html
代碼解析:由于使用不同設(shè)備打開(kāi)網(wǎng)頁(yè)時(shí),寬度均有所不同,所以不能講視口設(shè)置為固定值,應(yīng)當(dāng)為width=device-width,即將視口設(shè)置為當(dāng)前設(shè)備的寬度。
3. 確定設(shè)計(jì)圖的最小字體
瀏覽器(部分)能夠顯示的最小字體未12px,當(dāng)移動(dòng)端頁(yè)面寬度為320px時(shí),要保證最小字體為12px,那么在1080px的設(shè)計(jì)圖中,最小字體應(yīng)當(dāng)為42px。
代碼實(shí)例:
style?type="text/css"
html?{
font-size:?42px;
}
/style
4. 按照設(shè)計(jì)圖的像素進(jìn)行開(kāi)發(fā)
按照正常網(wǎng)頁(yè)開(kāi)發(fā)流程,進(jìn)行網(wǎng)頁(yè)開(kāi)發(fā)即可。
5. 使用百分比和rem替換px
代碼效果對(duì)比:
/*使用固定像素*/
.box?{
float:?left;
width:?658px;
font-size:?72px;
text-align:?center;
line-height:?195px;
}
/*使用百分比和rem*/
.box?{
float:?left;
width:?60.93%;
font-size:?1.71rem;
text-align:?center;
line-height:?4.64rem;
}
代碼解析:
水平方向的值,將具體像素調(diào)整為百分比。百分比的計(jì)算是根據(jù)父級(jí)的內(nèi)容區(qū)寬度進(jìn)行計(jì)算的。
例如,父級(jí)寬度為1080px, 子級(jí)元素為197px,那么子元素轉(zhuǎn)換為百分比為:197/1080*100%=18.24%。需要注意的是百分比根據(jù)父級(jí)計(jì)算,當(dāng)標(biāo)簽結(jié)構(gòu)級(jí)別不同時(shí),計(jì)算公式中的“分母”也有所不同,在開(kāi)發(fā)時(shí)這個(gè)地方很容易出現(xiàn)問(wèn)題,請(qǐng)務(wù)必注意。
垂直方向的值,將具體像素調(diào)整為rem,與水平方向相比,垂直方向的計(jì)算就比較簡(jiǎn)單。例如,行高為195px,HTML標(biāo)簽當(dāng)前的字體大小為42px,將行高轉(zhuǎn)換為rem單位,即195/42= 4. 64rem。
感應(yīng)式設(shè)計(jì),簡(jiǎn)單來(lái)說(shuō),就是當(dāng)用不同設(shè)備訪問(wèn)時(shí),能夠根據(jù)設(shè)備的寬度和高度對(duì)設(shè)備進(jìn)行動(dòng)態(tài)的適配;例如,用iPhone4、iPhone5、iPhone6、PC、iPad訪問(wèn)同一個(gè)網(wǎng)址,正好能打開(kāi)一個(gè)適合該設(shè)備的一個(gè)HTML5的頁(yè)面,不留白邊,不變形。這就算是感應(yīng)式設(shè)計(jì)了,也就是本文說(shuō)的“屏幕自適應(yīng)”。由于設(shè)備分辨率不同,長(zhǎng)寬比不同,如果設(shè)計(jì)一次,就要適應(yīng)所有的屏幕(包括PC),這個(gè)幾乎是不可能的。主要有以下三種情況:
1. 如果等比例縮放,內(nèi)部位置關(guān)系會(huì)發(fā)生變化,會(huì)嚴(yán)重影響用戶體驗(yàn);同時(shí),設(shè)備屏幕之間不存在等比例的關(guān)系,所以同樣會(huì)有部分屏幕內(nèi)容無(wú)法顯示或留白邊;
2. 如果把小屏幕適配好,放在更高的大屏幕里面,那兩邊就會(huì)有白邊;或者把圖扯大,這樣就會(huì)變形;
3. 如果把大屏幕適配好,放在小屏幕中,就有些部分會(huì)丟失。
除非借助未來(lái)的AI(人工智能)的發(fā)展,否則很難自動(dòng)解決這個(gè)問(wèn)題。以前的網(wǎng)站設(shè)計(jì),其實(shí)也是分開(kāi)幾種版面進(jìn)行設(shè)計(jì)的,例如,根據(jù)寬度為多少時(shí)候采用一種設(shè)計(jì)板式。
所以,我就納悶了,現(xiàn)在HTML5工具到底是如何實(shí)現(xiàn)感應(yīng)式的呢?
經(jīng)研究發(fā)現(xiàn),一共有兩種方式:
第一種,偽“感應(yīng)式”設(shè)計(jì):(HTML5模板類(lèi)方案)
上圖是HTML5模板類(lèi)測(cè)試結(jié)果,依次是iPhone4、iPhone5、iPhone6
可以看出iPhone4時(shí),變形最嚴(yán)重,iPhone5效果最好,iPhone6是等比例縮放后,兩側(cè)邊緣,有些像素顯示不了。
因此,這種“感應(yīng)式”,稱(chēng)之為偽“感應(yīng)式”HTML5工具,在設(shè)計(jì)時(shí)不會(huì)留白邊,但是要求盡量把內(nèi)容都往中間放,需要設(shè)計(jì)一張名為“背景”的底圖,用于拉伸時(shí)用。
存在的問(wèn)題:
1. 內(nèi)容都要居中放置,別放上下個(gè)邊;例如,把按鈕放到最下面,iPhone打開(kāi)后,就會(huì)看不到按鈕;
2. 不可能適應(yīng)PC、Pad等設(shè)備。
結(jié)論:
簡(jiǎn)單、應(yīng)急時(shí)使用。
第二種,多版面感應(yīng)式設(shè)計(jì):(VXPLO互動(dòng)大師方案)
用于互動(dòng)大師,通過(guò)添加 Device控件的方式,實(shí)際上還是需要設(shè)計(jì)幾個(gè)版面(設(shè)計(jì)上多數(shù)可以Ctrl-C +Ctrl-V,所以設(shè)計(jì)上并不算麻煩),因此本質(zhì)上是真正的“感應(yīng)式”設(shè)計(jì),只要稍微勤快點(diǎn)兒,是可以一個(gè)URL地址,完美適應(yīng)多個(gè)屏幕的,包括PC和Pad。用于互動(dòng)大師,通過(guò)添加 Device控件的方式,實(shí)際上還是需要設(shè)計(jì)幾個(gè)版面(設(shè)計(jì)上多數(shù)可以Ctrl-C +Ctrl-V,所以設(shè)計(jì)上并不算麻煩),因此本質(zhì)上是真正的“感應(yīng)式”設(shè)計(jì),只要稍微勤快點(diǎn)兒,是可以一個(gè)URL地址,完美適應(yīng)多個(gè)屏幕的,包括PC和Pad。
結(jié)論:要做真正的“感應(yīng)式”設(shè)計(jì),自動(dòng)適應(yīng)多個(gè)屏幕,又不想寫(xiě)代碼,就只能用互動(dòng)大師去做。設(shè)計(jì)中不會(huì)出現(xiàn)任何變形或丟失情況,不過(guò)需要多設(shè)計(jì)幾個(gè)版面,一般如果是手機(jī)端的輕應(yīng)用設(shè)計(jì)iPhone 4 5 6的分辨率就可以了。
文章標(biāo)題:包含html5自適應(yīng)寬度的詞條
URL地址:http://chinadenli.net/article16/dsgsedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)頁(yè)設(shè)計(jì)公司、虛擬主機(jī)、外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)