摘要:那我們來看一下這個(gè)首頁的布局是如何實(shí)現(xiàn)的為了實(shí)現(xiàn)全的覆蓋,第一個(gè)要做的就是設(shè)置的為,寬度的話,應(yīng)為是自動(dòng)全覆蓋,就無需多做設(shè)置。
我們就從Medium開始本文發(fā)表于前端觀察,最新改動(dòng)可訪問我的博客或是相關(guān)Github Repo。
大家好,我是新人kalasoo,現(xiàn)在還處在“試用期”,作為一個(gè)自學(xué)出來的前端新手,能夠加入前端觀察實(shí)在是異常興奮。既然要一起來維護(hù)這個(gè)關(guān)于前端的博客,我一定會(huì)努力爭(zhēng)取我所寫的內(nèi)容可以追上這里文章的質(zhì)量水平。作為開始,我會(huì)做一個(gè)小小的系列來分析那些有名、特別、設(shè)計(jì)感十足或是交互體驗(yàn)出眾的網(wǎng)站。同時(shí)我還會(huì)認(rèn)真閱讀其前端代碼,為大家重現(xiàn)那些神奇的效果是如何實(shí)現(xiàn)的,當(dāng)然也會(huì)盡我所知引用更多的資源來豐富內(nèi)容。希望這個(gè)系列可以讓大家更加了解前端技術(shù),同時(shí)也可以鍛煉我自己。
決定第一個(gè)來做這個(gè)網(wǎng)站的原因很簡(jiǎn)單,那就是好看??!由于Medium的出現(xiàn)嚴(yán)重影響改變了博客、發(fā)布平臺(tái)的風(fēng)格以及編輯器等前端組建的設(shè)計(jì),我們會(huì)分多期來分析各種細(xì)節(jié)是如何實(shí)現(xiàn)的。我們尤整體走向局部,所以我們先從整體布局來分析:
首頁布局以及大背景圖
網(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ì)化自我營(yíng)銷渠道。在首頁引入的Welcome to Medium里,我們看到它的初衷是為了讓人們更好地寫作,但是作為Twitter的一個(gè)延伸,它依舊搭載在一個(gè)社交性很強(qiáng)的平臺(tái)之上。這也讓在Medium中寫作的人更愿意去分享、營(yíng)銷、推廣自己的寫作內(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,這簡(jiǎn)直就是自我運(yùn)營(yíng)啊,有木有!
好啦,閑話說完,我們進(jìn)入主題。
首頁布局大背景圖或是視頻,已經(jīng)成為累當(dāng)今服務(wù)性網(wǎng)站設(shè)計(jì)的一個(gè)趨勢(shì),隨著網(wǎng)速越來越快、屏幕越來越大,一張巨幅首頁圖片無論從視覺沖擊力還是從性能上都已經(jīng)不再是不可能實(shí)現(xiàn)的功能。那我們來看一下這個(gè)首頁的布局是如何實(shí)現(xiàn)的:
HTML:
::before::after::before......
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;,請(qǐng)移位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:| | 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ì)用逗號(hào)隔開,與auto auto并不是一個(gè)意思)。
background-size: cover; 這樣定義的背景圖片會(huì)被修改圖片大?。ㄩL(zhǎng)寬比例不變),以確保剛剛好覆蓋整個(gè)Element。
background-size: contain; 背景圖片會(huì)被修改大?。ㄩL(zhǎng)寬比例不變),以確保剛剛好被這個(gè)Element包裹在里面。
下面幾張圖分別展示了集中不同的情況:
當(dāng)background-size設(shè)置為cover時(shí),即使屏幕被拉窄拉寬,圖片依舊很好地覆蓋著整個(gè)屏幕(更多的比對(duì)還可以訪問MDN):
contain時(shí),圖片長(zhǎng)寬比并不發(fā)生變化,卻會(huì)被包在window里面:
50% 100%時(shí),圖片長(zhǎng)寬比按照設(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)同樣的效果,卻要面對(duì)恐怖的IE7/8,腫么破,請(qǐng)嘗試如下:
.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)擊失效(請(qǐng)給我大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來修改的。
下期預(yù)告下一期,我們會(huì)深入探討Medium上的側(cè)邊推進(jìn)欄sidebar的實(shí)現(xiàn),而這個(gè)推進(jìn)效果其實(shí)有好多種不一樣的方法,有的可以在mobile上實(shí)現(xiàn)滑動(dòng)效果,有的會(huì)有更好地兼容性。敬請(qǐng)大家期待。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87586.html
前端LeetCode刷題 下面是已刷的題目的目錄。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,歡迎關(guān)注。 數(shù)組類 26 刪除排序數(shù)組中的重復(fù)項(xiàng) 27 移除元素 35 搜索插入位置 66 加1 80 medium 刪除排序數(shù)組中的重復(fù)項(xiàng)2 88 合并兩個(gè)有序數(shù)組 167 兩數(shù)之和II - 輸入有序數(shù)組 118 楊輝三角 169 easy 求眾數(shù) 1...
摘要:前端日?qǐng)?bào)精選專題之跟著學(xué)節(jié)流冴羽的博客全家桶仿微信項(xiàng)目,支持多人在線聊天和機(jī)器人聊天騰訊前端團(tuán)隊(duì)社區(qū)編碼的奧秘模塊實(shí)現(xiàn)入門淺析知乎專欄前端每周清單發(fā)布新版本提升應(yīng)用性能的方法中文寇可往吾亦可往用實(shí)現(xiàn)對(duì)決支付寶的微信企業(yè)付款到零 2017-06-20 前端日?qǐng)?bào) 精選 JavaScript專題之跟著 underscore 學(xué)節(jié)流 - 冴羽的JavaScript博客 - SegmentFau...
摘要:前端日?qǐng)?bào)精選精讀與提案知乎專欄第期認(rèn)識(shí)引擎記錄一次利用工具進(jìn)行性能優(yōu)化的真實(shí)案例簡(jiǎn)書中的使用規(guī)則教程繼承的實(shí)現(xiàn)方法個(gè)人文章中文譯組件渲染性能探索個(gè)人文章周刊第期表單性能的改進(jìn)實(shí)踐知乎專欄簡(jiǎn)單可重用的圖表庫知乎專欄 2017-07-08 前端日?qǐng)?bào) 精選 精讀 TC39 與 ECMAScript 提案 - 知乎專欄【第989期】認(rèn)識(shí) V8 引擎記錄一次利用 Timeline/Perform...
摘要:前端日?qǐng)?bào)點(diǎn)關(guān)注,不迷路精選前端團(tuán)隊(duì)工作流遷移記譯新語法私有屬性知乎專欄前端每周清單大前端技術(shù)生命周期模型發(fā)布面向生產(chǎn)環(huán)境的前端性能優(yōu)化模塊實(shí)現(xiàn)入門淺析知乎專欄中文一個(gè)線下沙龍中國(guó)最大的前端技術(shù)社區(qū)單頁面博客從前端到后端基于 2017-06-13 前端日?qǐng)?bào) 點(diǎn)關(guān)注,不迷路:-P 精選 ESLint v4.0.0 released - ESLint - Pluggable JavaScri...
閱讀 1987·2021-11-23 10:03
閱讀 4193·2021-11-22 09:34
閱讀 2495·2021-10-08 10:05
閱讀 2259·2019-08-30 15:53
閱讀 1698·2019-08-30 13:56
閱讀 1169·2019-08-29 16:52
閱讀 1118·2019-08-26 13:31
閱讀 3358·2019-08-26 11:45