99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

網(wǎng)格如此簡單

2018-06-16 18:01 更新

絕大多數(shù)的網(wǎng)站都在使用一個網(wǎng)格。 他們可能沒有明確的使用網(wǎng)格系統(tǒng),但如果他們有一個向左浮動“主要內(nèi)容區(qū)”和一個向右浮動的“側(cè)邊欄”,這就是一個簡單的網(wǎng)格。

如果需要更復(fù)雜的布局,人們往往會借助框架。 他們猜想網(wǎng)格是超高難度的事情最好留給超級CSS書呆子。 這一理念導(dǎo)致這樣的事實(shí),很多網(wǎng)格系統(tǒng)是非常復(fù)雜的 。

下面是我如何構(gòu)建網(wǎng)格。 它一點(diǎn)都不難也不復(fù)雜。 甚至使他們靈活也不是一個大的任務(wù)。

容器

塊級元素的寬度和它的父元素一樣( width: auto; )。 我們可以把它的寬度看作是100%。 wrapper 對于網(wǎng)格可能語義不太好,但它只是一個普通的包裝器,所以div是合適的。

<div class="grid">
  <!-- 100% wide -->
</div>

讓我們從一個實(shí)用的,通用的需要開始:主要內(nèi)容區(qū)寬度為2/3和1/3寬的側(cè)邊欄。 我們只用2個div元素代表兩列并取的適當(dāng)?shù)念惷?/p>

<div class="grid">
  <div class="col-2-3">
     Main Content
  </div>
  <div class="col-1-3">
     Sidebar
  </div>
</div>

為了讓他們水平排列,我們只需要浮動他們并設(shè)置合適的寬度。 我們選擇他們像下面這樣:

[class*='col-'] {
  float: left;
}

各個寬度的設(shè)置像下面這樣:

.col-2-3 {
  width: 66.66%;
}
.col-1-3 {
  width: 33.33%;
}

這就是全部的前提關(guān)于簡單網(wǎng)格。

給容器清除浮動

父元素會發(fā)生坍塌高度變?yōu)?,因?yàn)樗淖釉厝扛樱拥脑貙⒚撾x標(biāo)準(zhǔn)流。 下面讓我們修補(bǔ)這種情況通過clear屬性。 你只需像下面這樣:

.grid:after {
  content: "";
  display: table;
  clear: both;
}

間隙

網(wǎng)格最難的部分是間隙(列之間的空隙)。 到目前為止,我們已經(jīng)使用百分比制成了靈活的網(wǎng)格。 我們可以使所有復(fù)雜數(shù)學(xué)計(jì)算并且讓我們的間隙也使用百分比,但無論如何我個人不喜歡百分比的間隙,我喜歡固定像素尺寸的間隙。 此外,我們正試圖解決這個問題。

第一步是使用 box-sizing: border-box;。

*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

現(xiàn)在,當(dāng)我們設(shè)置元素的寬度,這個寬度=width+padding+border。

第二步是給除了最后一個以外的所有列的右內(nèi)邊距設(shè)置一個固定值。

[class*='col-'] {
  padding-right: 20px;
}
[class*='col-']:last-of-type {
  padding-right: 0;
}

這就是基本間隙的所有設(shè)置了。

外部間隙

需要設(shè)置外部間隙(父元素的內(nèi)邊距)?我喜歡使用一個可選類:

<div class="grid grid-pad">
  Grid with outside gutters also
</div>

第一步是給網(wǎng)格父元素添加左內(nèi)邊距(以及可選的的頂部和底部內(nèi)邊距):

.grid-pad {
  padding: 20px 0 20px 20px;
}

第二步是重新設(shè)置最后一列的右內(nèi)邊距

.grid-pad > [class*='col-']:last-of-type {
  padding-right: 20px;
}

更多列選擇

超級簡單:

.col-1-2 {
  width: 50%;
}
.col-1-4 {
  width: 25%;
}
.col-1-8 {
  width: 12.5%;
}

做你想做的效果,只要確保列分?jǐn)?shù)加起來為1。 耶,需要一點(diǎn)點(diǎn)思考,但比平常更容易。

Sass

在這里我不過分使用它,但使用它讓所有事情變得更加簡潔(還可用less):

* {
  @include box-sizing(border-box);
}

$pad: 20px;

.grid {
  background: white;
  margin: 0 0 $pad 0;
  
  &:after {
    /* Or @extend clearfix */
    content: "";
    display: table;
    clear: both;
  }
}

[class*='col-'] {
  float: left;
  padding-right: $pad;
  .grid &:last-of-type {
    padding-right: 0;
  }
}
.col-2-3 {
  width: 66.66%;
}
.col-1-3 {
  width: 33.33%;
}
.col-1-2 {
  width: 50%;
}
.col-1-4 {
  width: 25%;
}
.col-1-8 {
  width: 12.5%;
}

/* Opt-in outside padding */
.grid-pad {
  padding: $pad 0 $pad $pad;
  [class*='col-']:last-of-type {
    padding-right: $pad;
  }
}

模塊

我喜歡這些網(wǎng)格內(nèi)工作的“模塊”。

<div class="grid">
  <div class="col-2-3">
     <article class="module">
        stuff
     </article>
     <article class="module">
        stuff
     </article>
  </div>
  <div class="col-1-3">
    <aside class="module">
       Sidebar stuff. Sub modules?
    </aside>
  </div>
</div>

將內(nèi)容分解成塊這種方法看起不錯。 額外的副作用是每個模塊可以自己的內(nèi)邊距,來是文本內(nèi)容和網(wǎng)格的邊緣保持距離。

成果

這是在CodePen上的一個例子

瀏覽器不支持

工作僅僅在IE 8+,和所有其他標(biāo)準(zhǔn)的東西看起來是好的。 如果你需要支持IE 7,你將不得不做一些其他的工作)。

此外,F(xiàn)lexbox讓這變得更好更容易(有多種方法,包括從新設(shè)置盒子模型),但我認(rèn)為,我們大約需要一年事件,直到我們可以開始考慮使用它。

相關(guān)

查看OOCSS grids

注:本文為翻譯文章,原文章名稱《Don’t Overthink It Grids

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號