使用 Bulma


一、起因

最近我在學習 SASS,通過它,可以將 CSS 像編程語言一樣書寫。

在最近之前,我又學習了 Flex 布局,用起來很方便。

所以,我學習了 Bulma 這個純 CSS 框架——使用 Flex 布局(瀏覽器支持 IE10+),源碼使用 SASS 編寫。

在開始進入 Bulma 學習之前,先對“Flex 布局”和“SASS”的概念進行介紹。

二、Flex 布局

2.1 基本概念

采用 Flex 布局的元素,稱為 Flex 容器(flex container),簡稱"容器"。

.box {
    display: flex;
}

容器的所有子元素自動成為容器成員,稱為 Flex 項目(flex item),簡稱"項目"。

2.2 容器的屬性

以下6個屬性設置在容器上。

  1. flex-direction:默認值 row,表示項目在水平方向、從左向右排列。
  2. flex-wrap:默認值 nowrap,表示項目在水平方向排列時,不論有多少,都不換行。這樣太固執了,你可以設置為 wrap,這樣在水平空間不夠時,后面的項目就會自動換行了。
  3. flex-flow:是 flex-direction 屬性和 flex-wrap 屬性的簡寫形式,默認值你可能會想到—— row nowrap。非必要時,不設置這個屬性,單獨設置上面的兩個屬性會好些。
  4. justify-content:項目水平方向上的對齊方式,默認 flex-start,左對齊。還可取值 center,表示居中對齊。
  5. align-items:項目垂直方向上的對齊方式,默認 stretch,在項目未設置高度或設為 auto,項目將占滿整個容器的高度。
  6. align-content:定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。默認 stretch,跟 align-items 默認情況差不多,不過這里是多行項目占滿整個容器的高度。

2.3 項目的屬性

  1. order:項目的排列順序,默認為 0。數值越小,排列越靠前。
  2. flex-grow:項目的放大比例,默認為 0,總是不放大。如果屬性值都為 1,項目將等分剩余空間(如果有的話)。
  3. flex-shrink:項目的縮小比例,默認為 1,即如果空間不足,該項目將縮小。如果一個項目的 flex-shrink 屬性為 0,其他項目都為 1,則空間不足時,前者不縮小。
  4. flex-basis:項目占據的水平方向上的寬度(在分配多余空間之前)。默認值為 auto。可以設為跟 width 屬性一樣的值(比如 350px),則項目將占據固定空間。
  5. flex:是 flex-grow, flex-shrink 和 flex-basis的簡寫形式,默認值為0 1 auto。后兩個屬性可選。
  6. align-self:個性化“align-items”,即允許單個項目有與其他項目不一樣的對齊方式,可覆蓋父元素 align-items 屬性設置。

三、SASS

SASS 是 "CSS預處理器"(css preprocessor)。它的基本思想是,用一種專門的編程語言,進行網頁樣式設計,然后再編譯成正常的CSS文件。

原生 CSS 代碼很難重用也無法進行數學運算,SASS 提供了這些功能。下面介紹它的基本用法。

3.1 變量

SASS允許使用變量,所有變量以$開頭。

$blue : #1875e7
div
  color : $blue

如果變量需要鑲嵌在字符串之中,就必須需要寫在 #{} 之中。

$side : left
.rounded
  border-#{$side}-radius: 5px

3.2 嵌套

SASS允許選擇器嵌套。比如,下面的CSS代碼:

div h1 {
  color: red
}

可以寫成:

div
  hi
    color: red

在嵌套的代碼塊內,可以使用 & 引用父元素。比如 a:hover 偽類,可以寫成:

a
  &:hover
    color: #ffb3ff

3.3 注釋

SASS共有兩種注釋風格。

標准的CSS注釋 /* comment */ ,會保留到編譯后的文件。

單行注釋 // comment,只保留在 SASS 源文件中,編譯后被省略。

/* 后面加一個感嘆號(!),表示這是“重要注釋”。即使是壓縮模式編譯,也會保留這行注釋,通常可以用於聲明版權信息。

/*!
  重要注釋!
*/

3.4 Mixin

Mixin 是可以重用的代碼塊。使用 @mixin 命令,來定義這樣一個代碼塊。

@mixin left
  float: left
  margin-left: 10px

使用 @include 命令,調用這個 mixin。

div
  @include left

mixin 的強大之處,在於可以指定參數和缺省值。

@mixin left($value: 10px)
  float: left
  margin-right: $value

使用的時候,根據需要加入參數:

div
  @include left(20px)

給 Mixin 傳遞內容塊,舉個例子:

@mixin apply-to-ie6-only
  html
    @content

@include apply-to-ie6-only
  #logo
    background-image: url(/logo.gif)

會被編譯為

* html #logo
  background-image: url(/logo.gif)

這種語法在 Bulma 中被使用,用在對特定元素在不同的媒體查詢情況下的樣式設定。

3.5 插入文件

@import 命令,用來插入外部文件。

@import "path/filename.sass"

// 或者

@import "path/filename"

如果插入的是 .css 文件,則等同於 CSS 的 import 命令。

@import "foo.css";

3.6 自定義函數

SASS 允許用戶編寫自己的函數。

@function double($n)
  @return $n * 2

#sidebar
  width: double(5px)

四、深入學習

4.1 Flex 布局

  1. http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
  2. http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

4.2 SASS

  1. http://www.ruanyifeng.com/blog/2012/06/sass.html
  2. http://sass-lang.com/documentation/file.SASS_REFERENCE.html

(完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM