從Medium網(wǎng)頁大背景講述網(wǎng)頁前端知識
Medium是由Twitter的聯(lián)合創(chuàng)始人:Evan Williams和Biz Stone創(chuàng)辦于2012年8月創(chuàng)辦的一個(gè)文章寫作、閱讀平臺(tái)。注意,我這里并沒有用很多網(wǎng)站上援引的博客平臺(tái)是因?yàn)镸edium的出現(xiàn)塑造了一種新的社會(huì)化自我營銷渠道。在首頁引入的Welcome to Medium里,我們看到它的初衷是為了讓人們更好地寫作,但是作為Twitter的一個(gè)延伸,它依舊搭載在一個(gè)社交性很強(qiáng)的平臺(tái)之上。這也讓在Medium中寫作的人更愿意去分享、營銷、推廣自己的寫作內(nèi)容,甚至成為一些知名Developers, Designers and even Managers的發(fā)布渠道。例如:Facebook的Product Design Director Julie Zhuo就曾經(jīng)通過在Medium上發(fā)表文章來解釋Facebook為何revert掉在視覺層面上非常突出的新版界面。而更讓人覺得特別的是,每當(dāng)我看到好的文章分享到twitter上時(shí),都會(huì)有作者親自來favorite你的tweet,這簡直就是自我運(yùn)營啊,有木有! 好啦,閑話說完,我們進(jìn)入主題。
首頁布局
大背景圖或是視頻,已經(jīng)成為累當(dāng)今服務(wù)性網(wǎng)站設(shè)計(jì)的一個(gè)趨勢,隨著網(wǎng)速越來越快、屏幕越來越大,一張巨幅首頁圖片無論從視覺沖擊力還是從性能上都已經(jīng)不再是不可能實(shí)現(xiàn)的功能。那我們來看一下這個(gè)首頁的布局是如何實(shí)現(xiàn)的: HTML:
<div class="container surface-container" id="container">
<div class="surface" id="..." style="display: block; visibility: visible;">
::before
<div class="screen-content surface-content">
<div class="image-fill layout-fill promo-fill" style="background-image: url('xxx.jpeg')">
<div class="layout-fill align-middle">
::before
<div class="align-block layout-fill-width">
<div class="layout-single-column">...</div>
<div class="align-center">...</div>
</div>
<footer class="footer ..."></footer>
</div>
</div>
</div>
::after
</div>
</div>
CSS: 為了實(shí)現(xiàn)全window的覆蓋,第一個(gè)要做的就是設(shè)置html, body
的height
為100%,寬度的話,應(yīng)為是自動(dòng)全覆蓋,就無需多做設(shè)置。.container
只是作為一個(gè)過度,同樣設(shè)置到100%的高度(這里我會(huì)暫時(shí)忽略除了layout之外的屬性設(shè)置)。 再深一層是便是.surface
,除了再次繼承了滿高度、滿寬度外,還定義了box-sizing: border-box;
,請移位MDN來理解。這里要注意它加了.suface:before, .surface:after
的屬性,是為了自動(dòng)生成clearfix的效果來阻止float溢出,但其實(shí)在這個(gè)首頁之中并沒有用到。
html, body, .container {
height: 100%;
}
.surface {...}
.surface:before, .surface:after {
display: table;
content: " ";
}
.surface:after {
clear: both;
}
在往里面的幾個(gè).screen-content, .surface-content
只是繼續(xù)控制高度,和一些默認(rèn)背景顏色。直到下面這一層才定義了覆蓋整個(gè)背景大圖的屬性,而具體的背景圖片是只額姐加到了DOM的這個(gè)div
里面(我想原因應(yīng)該是有一些數(shù)據(jù)binding在里面,這樣好做更新):
.image-fill, {
background-position: center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.image-fill {
background-color: rgba(0, 0, 0, 0.9);
}
.promo-fill {
background-color: #000;
}
大背景圖
在這里,為了實(shí)現(xiàn)圖片可以滿背景覆蓋,最主要的一個(gè)元素就是background-size: cover;
,這個(gè)屬性一共有以下幾個(gè)可能的值:
background-size: <length> | <percentage> | auto | cover | contain;
它們分別代表的意思是:
-
background-size: 50% | 120px | auto;
設(shè)置了背景圖片的寬度,高度則自動(dòng)計(jì)算。默認(rèn)的auto
維持了背景圖原有的大小。 -
background-size: 50% auto;
同時(shí)強(qiáng)制定義了寬度和高度。 -
background-size: auto, auto, [...];
定義給多個(gè)背景圖片(注意被一個(gè)定義會(huì)用逗號隔開,與auto auto
并不是一個(gè)意思)。 -
background-size: cover;
這樣定義的背景圖片會(huì)被修改圖片大?。ㄩL寬比例不變),以確保剛剛好覆蓋整個(gè)Element。 -
background-size: contain;
背景圖片會(huì)被修改大?。ㄩL寬比例不變),以確保剛剛好被這個(gè)Element包裹在里面。
下面幾張圖分別展示了集中不同的情況: 當(dāng)background-size
設(shè)置為cover
時(shí),即使屏幕被拉窄拉寬,圖片依舊很好地覆蓋著整個(gè)屏幕(更多的比對還可以訪問MDN):
contain
時(shí),圖片長寬比并不發(fā)生變化,卻會(huì)被包在window里面:
50% 100%
時(shí),圖片長寬比按照設(shè)置的數(shù)值被拉伸:
注意,這里的背景圖片都是按照默認(rèn)的會(huì)重復(fù)鋪排在x和y軸上,所以當(dāng)背景圖不能覆蓋element的時(shí)候,便會(huì)出現(xiàn)重復(fù)的樣式。此外,background-position: center;
也定義了圖片按照所屬element的中心位置來調(diào)整大小。
兼容性
這樣圖片全頁面覆蓋的實(shí)現(xiàn)方法就說明完了,contain & cover
屬性的兼容性如下:
- Chrome 3.0+
- Firefox 3.6 (1.9.2)+
- IE 9.0+
- Opera 10.0+
- Safari 4.1+
如果為了實(shí)現(xiàn)同樣的效果,卻要面對恐怖的IE7/8,腫么破,請嘗試如下:
.background-cover {
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='PATH_TO_BACKGROUND_IMAGE',
sizingMethod='scale');
-ms-filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='PATH_TO_BACKGROUND_IMAGE',
sizingMethod='scale');
}
但是要小心,這個(gè)實(shí)現(xiàn)方法會(huì)使得起內(nèi)部的鏈接點(diǎn)擊失效(請給我大MS 32個(gè)贊),而且這個(gè)實(shí)現(xiàn)的是background-size: 100% 100%
的效果?;蛘呖梢酝ㄟ^jQuery (jquery.backgroundSize.js)來實(shí)現(xiàn)。
其他示例
這里面是一些好看的大圖覆蓋的例子,但是并不是所有的頁面都是通過background-size
來實(shí)現(xiàn)的:
- http://www.whitmansnyc.com/
- https://chrome.google.com/webstore/detail/momentum/laookkfknpbbblfpciffpaejjkokdgca?hl=en
-
http://quinntonharris.strikingly.com/
- 其實(shí)現(xiàn)方式其實(shí)是背景圖很大,大小設(shè)置為auto,而覆蓋效果則是通過設(shè)置外面一層的div大小來實(shí)現(xiàn)的。
-
http://www.lattrapereve.fr/
- 背景視頻大小是根據(jù)window大小的變化,用javascript來修改的。
本文地址:http://irelandcustomcontracting.com/tutorial/id2044.html
您可能還喜歡
- 關(guān)于第三方注冊和本地注冊的選擇
- 8大網(wǎng)頁前端界面必備jQuery插件
- 掌上指路標(biāo) —– APP架構(gòu)與導(dǎo)航設(shè)計(jì)
- 時(shí)尚電商網(wǎng)站交互分析
- 軟件推薦為移動(dòng)設(shè)計(jì)而生-Justinmind
- TGideas實(shí)例:加載,不只是少一點(diǎn)點(diǎn)
- 網(wǎng)頁設(shè)計(jì)中引人入勝的引導(dǎo)頁設(shè)計(jì)
- 體驗(yàn)新版Apple AppStore ——App設(shè)計(jì)從
- 確認(rèn)按鈕在左邊,取消按鈕在右邊?
- 交互設(shè)計(jì)從登錄開始
- 專訪:石墨文檔產(chǎn)品總監(jiān)羅穎
- UI設(shè)計(jì)不得不知的移動(dòng)端UI尺寸適
- 光音移動(dòng)設(shè)計(jì)規(guī)范 — 表單類
- 體驗(yàn)設(shè)計(jì)中的排序問題
- 網(wǎng)頁設(shè)計(jì)精粹 網(wǎng)頁中那些迷人的按
- aliued:響應(yīng)式設(shè)計(jì)的現(xiàn)狀與趨勢
- 10個(gè)智能對象處理的ps技巧
- 網(wǎng)頁UI - 原子設(shè)計(jì)理論(上)
- 如何通過設(shè)計(jì)提升banner點(diǎn)擊率?
- 晉小彥視覺設(shè)計(jì)系列文章(二):全屏