CSS 響應(yīng)式布局案例(一)

本文轉(zhuǎn)載自我的個(gè)人博客灾炭。

本文講解如何利用純?cè)?code>CSS實(shí)現(xiàn)響應(yīng)式布局。

前段時(shí)間在freeCodeCamp看到幾個(gè)響應(yīng)式布局的案例。這幾個(gè)案例把原生CSS實(shí)現(xiàn)響應(yīng)式布局的知識(shí)點(diǎn)囊括得比較全面笆焰。想著可以總結(jié)一下谆奥,于是就有了這篇文章绰咽,文章應(yīng)該會(huì)分為三期蛉抓,這是第一期。

案例一

案例演示以及源碼網(wǎng)址進(jìn)去以后點(diǎn)擊Fork即可看到源碼剃诅。

知識(shí)點(diǎn):圖片的響應(yīng)式布局

tribute-page-1.gif

從上圖我們可以觀察到巷送,圖片的大小可以隨頁(yè)面可視區(qū)域的變化而變化,但是圖片并不會(huì)超過(guò)它的原始大小矛辕。這種方案既保證了圖片的完整顯示笑跛,又不至于被放得過(guò)大而失真。實(shí)現(xiàn)這一功能的CSS代碼其實(shí)很簡(jiǎn)單聊品,讓我們來(lái)看一看img標(biāo)簽相關(guān)的代碼:

  //html
  <img id="image" src="https://c2.staticflickr.com/4/3689/10613180113_fdf7bcd316_b.jpg" alt "pic from flickr">

  //css
  img{
    max-width: 100%;  //關(guān)鍵代碼
    display: block; 
    height: auto;
    margin: auto;
  }

max-width表示img標(biāo)簽可以達(dá)到的最大寬度飞蹂,100%是基于其父級(jí)容器元素而言的。一個(gè)img標(biāo)簽翻屈,如果我們不對(duì)它的長(zhǎng)寬進(jìn)行任何設(shè)定陈哑,那么它的大小將是它所包含的圖片的原始大小。但是加上max-width: 100%之后表示伸眶,img的寬度將不會(huì)超過(guò)其容器元素的寬度惊窖。這個(gè)時(shí)候可以分兩種情況:

1.容器元素的寬度大于img圖片的原始寬度:此時(shí)滿足max-width: 100%img將以其圖片的原始大小顯示厘贼。

  1. 容器元素的寬度小于img圖片的原始寬度界酒,這個(gè)時(shí)候會(huì)將img的寬度調(diào)整為其容器元素的寬度。

margin: auto保證img標(biāo)簽永遠(yuǎn)在容器元素內(nèi)居中嘴秸。

display: blockheight: auto在本例中其實(shí)是不必須的毁欣。當(dāng)你只設(shè)定了img標(biāo)簽的widthheight中的一個(gè)時(shí),圖片會(huì)自動(dòng)按比例的縮小或放大岳掐。

案例二

案例演示以及源碼網(wǎng)址進(jìn)去以后點(diǎn)擊Fork即可看到源碼凭疮。

知識(shí)點(diǎn):CSS3 新增單位 vw、vh串述、vmin执解、vmax

personal-portfolio-1.gif

在上圖中我們可以看到,無(wú)論我們?cè)趺锤淖円暣暗拇笮∑驶停灼羶?nèi)容始終恰好占據(jù)整個(gè)視窗的大小材鹦。我們來(lái)看一下這一部分的代碼:

  //html
  <div id="welcome-section" class="intro">
    <h1>Hey i'am Mimic</h1>
    <p>a web developer</p>
  </div>

  //css
  .intro {
    background: #e0ebe8;
    height: 55vh;  //關(guān)鍵代碼
    padding-top: 45vh;  //關(guān)鍵代碼
  }

這其中就用到了css的新增單位vh逝淹。vh是一個(gè)表示瀏覽器視窗高度的單位耕姊,所謂視窗,就是瀏覽器用來(lái)真正顯示內(nèi)容的區(qū)域栅葡,不包括工具欄等茉兰。1vh表示視窗高度的百分之一,100vh表示整個(gè)視窗的高度欣簇。注意规脸,我們這里雖然是使用了百分號(hào)的機(jī)制坯约,但是書(shū)寫(xiě)的時(shí)候不用寫(xiě)百分號(hào),只用寫(xiě)數(shù)字就好了莫鸭。在上端代碼中闹丐,heightpadding-top加起來(lái)正好是100vh,所以首屏內(nèi)容恰好占據(jù)整個(gè)視窗的大小被因。

類(lèi)似于vh的新增單位還有vw卿拴、vminvmax梨与。大家可以通過(guò)這篇文章了解一下堕花。

知識(shí)點(diǎn):媒體查詢(xún)(@media)

personal-portfolio-2.gif

在上圖中我們可以看到,幾個(gè)圓形鏈接隨著視窗寬度的縮小在不斷改變排列方式粥鞋,到最后變?yōu)榱碎L(zhǎng)方形缘挽,這其中就用到了媒體查詢(xún)。我們先看一下這部分的相關(guān)代碼:

  //html
  </div>
    <a  target="_blank" class="contact-details">Facebook</a>
    <a id='profile-link'  target="_blank" class="contact-details">GitHub</a>
    <a  target="_blank" class="contact-details">Twitter</a>
    <a href="mailto:example@example.com" class="contact-details">Send a mail</a>
    <a href="tel:555-555-5555" class="contact-details">Call me</a>
  </div>

  //css
  .contact-details {
    display: inline-block;   //關(guān)鍵代碼
    font-weight: bold;
    margin: 0 35px 45px 35px;
    list-style-type: none;
    border: 2px solid #90C695;
    border-radius: 100%;
    width: 100px;
    height: 100px;
    line-height: 100px;
    background: #e0ebe8;
    color: #008080;
    text-decoration: none;
  }
  .contact-details:hover {
    background: #E4F1FE;
    color: green;
  }
  @media (max-width: 367px) {  //關(guān)鍵代碼
    .contact-details {
      border: 2px solid #90C695;
      border-radius: 0;
      width: 90px;
      height: 20px;
      padding: 10px;
      line-height: normal;
    }
  }

圓形鏈接隨著視窗寬度的縮小在不斷改變排列方式是通過(guò)display: inline-block實(shí)現(xiàn)的呻粹。inline-block是一種介于inlineblock之間的樣式壕曼。

  1. display: inline-blockdisplay: inline最大的區(qū)別是inline-block可以設(shè)置自己的寬和高,inline樣式不可以等浊。
  2. display: inline-blockdisplay: block最大的區(qū)別是inline-block元素后面不會(huì)自動(dòng)加上換行符窝稿,所以幾個(gè)inline-block元素可以排列成一行,而block元素卻不可以凿掂。

鏈接由圓形變?yōu)殚L(zhǎng)方形是通過(guò)媒體查詢(xún)實(shí)現(xiàn)的伴榔,媒體查詢(xún)的標(biāo)識(shí)符是@media。而上段代碼中@media (max-width: 367px) {css-code}的含義就是當(dāng)視窗寬度小于367px時(shí)庄萎,執(zhí)行其代碼塊中的代碼css-code踪少。

上例只是媒體查詢(xún)最簡(jiǎn)單的一種寫(xiě)法,其完整寫(xiě)法應(yīng)該為:

  @media not|only mediatype and (expressions) {
    CSS-Code;
  }

其中糠涛,mediatype表示媒體類(lèi)型援奢,有四個(gè)可選項(xiàng):all表示所有類(lèi)型,print表示打印機(jī)忍捡,screen表示屏幕(電腦集漾,手機(jī),平板)砸脊,speech表示屏幕閱讀器具篇。具體用法如下:

  @media only screen and (min-width: 480px) {
    body {
      background-color: lightgreen;
    }
  }

上例的含義是,當(dāng)且僅當(dāng)媒體類(lèi)型為屏幕凌埂,寬度大于480px時(shí)驱显,將body標(biāo)簽的背景色改為淺綠色。而對(duì)于別的媒體類(lèi)型,比如打印機(jī)埃疫,則不會(huì)生效伏恐。更多關(guān)于媒體查詢(xún)的用法,可以參考這個(gè)網(wǎng)站栓霜。

以上就是第一期的內(nèi)容翠桦,我們下期見(jiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胳蛮,一起剝皮案震驚了整個(gè)濱河市秤掌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鹰霍,老刑警劉巖闻鉴,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茂洒,居然都是意外死亡孟岛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)督勺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渠羞,“玉大人,你說(shuō)我怎么就攤上這事智哀〈窝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵瓷叫,是天一觀的道長(zhǎng)屯吊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)摹菠,這世上最難降的妖魔是什么盒卸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮次氨,結(jié)果婚禮上蔽介,老公的妹妹穿的比我還像新娘。我一直安慰自己煮寡,他們只是感情好虹蓄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著幸撕,像睡著了一般薇组。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杈帐,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天体箕,我揣著相機(jī)與錄音专钉,去河邊找鬼挑童。 笑死累铅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的站叼。 我是一名探鬼主播娃兽,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼尽楔!你這毒婦竟也來(lái)了投储?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阔馋,失蹤者是張志新(化名)和其女友劉穎玛荞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呕寝,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勋眯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了下梢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片客蹋。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖孽江,靈堂內(nèi)的尸體忽然破棺而出讶坯,到底是詐尸還是另有隱情,我是刑警寧澤岗屏,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布辆琅,位于F島的核電站,受9級(jí)特大地震影響这刷,放射性物質(zhì)發(fā)生泄漏涎跨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一崭歧、第九天 我趴在偏房一處隱蔽的房頂上張望隅很。 院中可真熱鬧,春花似錦率碾、人聲如沸叔营。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绒尊。三九已至,卻和暖如春仔粥,著一層夾襖步出監(jiān)牢的瞬間婴谱,已是汗流浹背蟹但。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谭羔,地道東北人华糖。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瘟裸,于是被迫代替她去往敵國(guó)和親客叉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348