如何用 CSS 網(wǎng)格快速做出網(wǎng)站原型

簡(jiǎn)評(píng):CSS 網(wǎng)格模塊是創(chuàng)建網(wǎng)站模型的絕佳工具晕讲。它是我嘗試過的任何其他系統(tǒng)中最快讓你體驗(yàn)布局的工具矢洲。

我們的網(wǎng)格

我們將從模仿一個(gè)經(jīng)典網(wǎng)站的非炒都祝基本的網(wǎng)格開始:


首先,我將解釋我們需要的 HTML 和 CSS 代碼琴拧,我將之分為 4 個(gè)部分。一旦你弄明白了嘱支,我們將繼續(xù)布局試驗(yàn)蚓胸。

如果你對(duì) CSS 網(wǎng)格完全陌生,你可能要瀏覽一下我的5 分鐘介紹 CSS 網(wǎng)格的文章除师。

1. 標(biāo)記

首先我們需要一點(diǎn)點(diǎn) HTML 代碼赢织。一個(gè)容器(我們把它變成網(wǎng)格的元素)和一些項(xiàng)目(標(biāo)題,菜單馍盟,內(nèi)容于置,頁腳)。

<div class="container">
  <div class="header">HEADER</div>
  <div class="menu">MENU</div>
  <div class="content">CONTENT</div>
  <div class="footer">FOOTER</div>
</div>

2. CSS 中的基礎(chǔ)設(shè)置

然后我們需要設(shè)置我們的網(wǎng)格贞岭,并聲明我們需要多少行和列八毯。這是我們最初的 CSS:

.container {
    display: grid;    
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: 50px 350px 50px;
    grid-gap: 5px;
}

稍后我們會(huì)添加更多代碼,但首先我想解釋一下瞄桨。

上面的代碼意思是:創(chuàng)建一個(gè)有 12 列的網(wǎng)格话速,每列寬度為總寬度的十二分之一。創(chuàng)建三行芯侥,第一行高 50px泊交,第二行高 350px乳讥,第三行高 50px,最后廓俭,網(wǎng)格中每個(gè)元素添加一個(gè)間隙云石。

3. 添加 grid-template-areas

讓我們能輕松體驗(yàn)布局的功能叫模版區(qū)域

把它添加到網(wǎng)格中研乒,我們只需要簡(jiǎn)單地給 container 添加一個(gè) grid-template-area 屬性即可汹忠。語法可能有點(diǎn)怪,因?yàn)樗幌袢魏纹渌?CSS 語法雹熬。就像這樣:

.container {
    display: grid;
    grid-gap: 5px;    
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: 50px 350px 50px;
    grid-template-areas:
        "h h h h h h h h h h h h"
        "m m c c c c c c c c c c"
        "f f f f f f f f f f f f";
}

grid-template-areas 屬性背后的邏輯是你在代碼中創(chuàng)建一個(gè)可視化的網(wǎng)格宽菜。你可以看到,它有 3 行竿报、12 列铅乡。就像我們?cè)诙x grid-template-columns 和 grid-template-rows 一樣。

每一行代表一行烈菌,每一個(gè)字符(h隆判,m,c僧界,f)代表一個(gè)網(wǎng)格元素侨嘀。

四個(gè)字符中的每一個(gè)都形成一個(gè)矩形:grid-area。

可能你已經(jīng)猜到了捂襟,我選擇的四個(gè)字符 h咬腕,m,c葬荷,f 分別代表了 header涨共,menu,content宠漩,footer举反。我當(dāng)然可以把它們換成我想要的任何字符,但使用它們描述的項(xiàng)目的第一個(gè)字符顯然比較合理扒吁。

4. 把網(wǎng)格區(qū)域賦給項(xiàng)目

現(xiàn)在我們需要連接字符和網(wǎng)格中的項(xiàng)目火鼻。我們將使用 grid-area 屬性:

.header {
    grid-area: h;
}
.menu {
    grid-area: m;
}
.content {
    grid-area: c;
}
.footer {
   grid-area: f;
}

布局結(jié)果如下:


試驗(yàn)布局

現(xiàn)在終于到了我們體驗(yàn)這個(gè)功能的強(qiáng)大時(shí)候了,我們可以輕松地實(shí)驗(yàn)布局雕崩。只需要修改一下 grid-template-areas 中的字符即可魁索。例如我們把上面的菜單移動(dòng)到右邊:

grid-template-areas:
        “h h h h h h h h h h h h”
        "c c c c c c c c c c m m”
        “f f f f f f f f f f f f”;

結(jié)果就會(huì)變成:


我們可以使用.來創(chuàng)建空白網(wǎng)格:

grid-template-areas:
        “. h h h h h h h h h h .”
        "c c c c c c c c c c m m”
        “. f f f f f f f f f f .”;

看起來是這樣的:


現(xiàn)在我推薦你看一下我的 CSS 網(wǎng)格課程,你可以自己實(shí)驗(yàn)代碼盼铁。

添加響應(yīng)能力

把這個(gè)和響應(yīng)能力相結(jié)合簡(jiǎn)直就是一大殺器粗蔚,以前這是不可能只用 HTML 和 CSS 就能達(dá)到這種效果的。假設(shè)當(dāng)你用手機(jī)瀏覽時(shí)想讓菜單放在標(biāo)題旁邊饶火,你可以這樣做:

@media screen and (max-width: 640px) {
    .container {
        grid-template-areas:
            "m m m m m m h h h h h h"
            "c c c c c c c c c c c c"
            "f f f f f f f f f f f f";
    }
}

結(jié)果看起來像這樣:


記住這些是用純 CSS 代碼完成的鹏控,不需要改動(dòng) HTML致扯。無論 div 標(biāo)簽在標(biāo)記中是如何放置的,我們都能隨意轉(zhuǎn)換当辐。

這被稱為源代碼的獨(dú)立性抖僵,這是 CSS 的一大進(jìn)步。

它讓 HTML 回歸本職工作:標(biāo)記內(nèi)容瀑构。至于樣式,那是 CSS 的工作刨摩。

英文原文:How to prototype websites quickly with CSS Grid
舊文推薦:
節(jié)約 Web 開發(fā)時(shí)間的 67 個(gè)工具寺晌、庫和資源
StackBlitz - 針對(duì) Web 開發(fā)者的在線 IDE
55 個(gè)頂尖 Web 設(shè)計(jì)與開發(fā)網(wǎng)站

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市澡刹,隨后出現(xiàn)的幾起案子呻征,更是在濱河造成了極大的恐慌,老刑警劉巖罢浇,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陆赋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嚷闭,警方通過查閱死者的電腦和手機(jī)攒岛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胞锰,“玉大人灾锯,你說我怎么就攤上這事⌒衢牛” “怎么了顺饮?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)凌那。 經(jīng)常有香客問我兼雄,道長(zhǎng),這世上最難降的妖魔是什么帽蝶? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任赦肋,我火速辦了婚禮,結(jié)果婚禮上励稳,老公的妹妹穿的比我還像新娘金砍。我一直安慰自己,他們只是感情好麦锯,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布恕稠。 她就那樣靜靜地躺著,像睡著了一般扶欣。 火紅的嫁衣襯著肌膚如雪鹅巍。 梳的紋絲不亂的頭發(fā)上千扶,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音骆捧,去河邊找鬼澎羞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敛苇,可吹牛的內(nèi)容都是我干的妆绞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼枫攀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼括饶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起来涨,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤图焰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蹦掐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體技羔,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年卧抗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藤滥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡社裆,死狀恐怖超陆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浦马,我是刑警寧澤时呀,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晶默,受9級(jí)特大地震影響谨娜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜磺陡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一趴梢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧币他,春花似錦坞靶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拍冠,卻和暖如春尿这,著一層夾襖步出監(jiān)牢的瞬間簇抵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工射众, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碟摆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓叨橱,卻偏偏與公主長(zhǎng)得像典蜕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罗洗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容