大前端的自動化工廠(2)—— SB Family

来源:https://www.cnblogs.com/dashnowords/archive/2018/08/12/9460722.html
-Advertisement-
Play Games

原文鏈接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f 我坦白我是標題黨,SB只是 的簡寫。 一. SASS/SCSS ,也稱為 ,是CSS預編譯語言的一種,常見的預編譯語言還包括 ,`Stylus 變數定義 函 ...



原文鏈接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f

我坦白我是標題黨,SB只是SCSS-Bourbon的簡寫。

一. SASS/SCSS

SASS,也稱為SCSS,是CSS預編譯語言的一種,常見的預編譯語言還包括LESS,Stylus,除了語法風格之外它們之間沒有什麼太大的區別,從一種語言遷移到另一種語言只需要花半天通讀一下文檔就可以了。預編譯語言為CSS提供了變數定義,函數定義,層級嵌套等等一系列擴展功能,使開發者更容易編寫和管理項目中的CSS代碼。筆者使用的是SCSS/SASS,因為相關工具庫更全面一些,儘管名稱偶爾會帶來一些瑕疵(建議使用SCSS)。LESS在和Sublime集成時有一些小問題,可能是版本問題,stylus是新興起的,開發生態並不完善。

二. SCSS-Bourbon Family

由於SCSS最初使用Ruby on Rails編寫的,所以github上提供的安裝方式幾乎都是通過gem install安裝的,但實際上在npm倉庫里也可以找到對應的項目。另一方面,SCSS輔助工具庫中的工具都是以_開頭的,也就是說定義mixin的代碼並不會被編譯到產出的CSS文件中,可以放心使用。

【Bourbon】是筆者非常喜歡的工具包,首先它很符合漸進式開發的思想,每個插件只實現一個特定的功能,同時,它的所有插件都是自己開發的(ThoughtBot在收購後維護著整個Bourbon工具鏈),這又保證了工具的質量。

bourbon——函數庫

♒ 通過npm install -g bourbon安裝.

bourbon已經更新至5.1.0版本,官方文檔對許多mixin並沒有提供說明,建議使用前通讀一下library目錄里每一個獨立的文件,其中的註釋部分標明瞭該函數的用法。例如實用triangle( )函數來生成一個類,使其偽類包含一個指定尺寸和方向的三角形,又或者是使用tint( )shade( )方法讓顏色按照半分比變亮或變暗,當然你也可以自行去擴展bourbon的基礎功能。

SCSS代碼為:

@import "bourbon";
.triangle-down {
    &::after{
     content:'';   
     @include triangle("down", 2rem, 1rem, #b25c9c);
    }
}

編譯後的代碼:

.triangle-down::after {
  content: '';
  border-style: solid;
  height: 0;
  width: 0;
  border-color: #b25c9c transparent transparent;
  border-width: 1rem 1rem 0;
}

CSS是可以諸如六邊形等很多形狀的,你完全可以在網上學習它們的實現方法,然後將其編寫為擴展的mixin加入到自己的常用工具箱中。

Bitters——腳手架

♒ 通過npm install -g bourbon-bitters安裝

Bitters是Bourbon工具家族裡的腳手架,它將你的基礎樣式分拆為*_bass* , *_buttons* , *_forms* , *_layout* , *_lists* , *_media* , *_tables* , *_typography* , *_variables* 等幾個不同的文件並提供一些初始樣式,開發中可以將與基礎模塊相關的樣式擴展寫在這些文件中,這樣的做法可以在一定程度上降低項目的維護難度。

當然你也可以直接引入normolize.css來對項目進行樣式的重置。

Neat——網格工具

♒ 通過npm install -g bourbon-neat安裝.

我們使用的第三方UI框架中,幾乎都使用經典的12列佈局,但總有些產品經理會提出希望將某一列的寬度擴展到1.5倍這種需求,或者有些場景下你希望對整個網頁的佈局進行更精細的控制,這個時候輕量級的網格工具Neat就派上用場了,輕量,強大,易用,輕鬆實現網格劃分,網格嵌套,響應式佈局等複雜的功能。具體的使用文檔可以訪問其官方網站Neat官方網址查看文檔。

使用示例:

下麵簡單的幾行代碼編譯為CSS後,就可以實現將頁面分為間距為20px的10列,左側邊欄占2列,右側內容區占8列;然後又將右側內容區分為間距為10px的6列,每個表格項占1列。

@import "neat";
/*定義網格*/
$sidebar-layout:(
    columns: 10,
    gutter: 20px
);

$list-layout: (
    columns: 6,
    gutter: 10px
);
/*使用網格*/
.sidebar-layout{
    @include grid-container;
}
.sidebar-layout__sidebar{
    @include grid-column(2,$sidebar-layout);
}

.sidebar-layout__content{
    @include grid-column(8,$sidebar-layout);
}

.list-layout{
    @include grid-container;
    @include grid-collapse($list-layout);
}

.list-item{
    @include grid-column(1, $list-layout);
}

Coolor——自動化配色工具

♒ 訪問http://coolor.co

Coolor.co其實並不是Bourbon家族的成員,但你應該會喜歡它,這是一個免費的網站(移動端是收費的),在你指定一個主題色後,它會為你返回一組漂亮的包含5個顏色的配色方案,如果不滿意直接一鍵切換就可以了,從此冒充設計師看誰還敢攔著你~

三. CSS Evolution

隨著前端構建工具的興起,CSS的開發也進入了一個全新的階段,自動化構建工具(例如webpack)帶來了新的開發方式,SASSBEM的年代,還只能通過限制命名規則的方式來避免CSS衝突和相互覆蓋。

CSS Modules藉助構建工具實現了真正的模塊化,webpack4中在css-loader配置項中就可以直接啟用CSS模塊化功能,使用起來非常方便。其原理就是通過構建工具將文件中的類名直接替換為Hash來實現。

Styled Components,實際上就是炒的火熱的CSS-In-Js的一種實現。新事物總是褒貶不一的,有人說它是大勢所趨,也有人說它很難用,筆者的建議是:繼續觀望。Styled Components概念的興起很有可能是React團隊的炒作行為,JSX已經將HTMLJS代碼放在一起編寫,使用起來感覺還不錯,如果又加上CSS-In-JS , 那麼相當於使用JSX同時編寫HTML+CSS+JS,你說這種鼓吹沒有私心誰信?以前使用<script><style>標簽把代碼都寫在<html>中,你們叫囂著"結構,樣式,行為三者分離",現在大伙把代碼分離了,你們又忽悠著大家把結構樣式行為混在一起寫到JSX里去,細思極恐。

上圖只是形象地描述了CSS技術的進化方向,並不代表後出現的就一定更好。如果在你的項目組裡通過命名規則約定就可以避免衝突,那真的沒必要為了炫技或者趕潮流就去把代碼全部改成CSS Modules或者 Styled Components的方式。

工具是為了讓工作變得更輕鬆,而不是變得更複雜。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本來這個號是為了找工作(記錄自己找工作期間刷代碼的所想所得,重要是假裝自己有一個技術博客...),但是排序演算法還沒刷完就找到了工作,所以就懶病繼續發作就沒寫了。現在工作了,真是什麼都不懂,為了記錄工作中遇到的問題,必須再把它撿起來。 最近的項目中要用到ExtJS,因為根本就不懂,所以就給我安排了一個 ...
  • 數組去重方法 方法一:運用splice()方法和雙層for迴圈(有點類似選擇排序) function norepeat(arr){ for(var i = 0;i < arr.length-1;i++){ for(var j = i+1;j<arr.length;j++){ if(arr[i] == ...
  • 使用方法 ...
  • 這裡通過自己手動的方式“做”一個jQuery來使用,需要5步 1. 訪問 https://jquery.com 2. 點擊download 3. 拉到最下方,點擊 JQuery CDN 4. 得到所有版本jQuery,其中uncompressed(未壓縮),minified(壓縮) 5. 選擇需要的 ...
  • 稍稍總結了下css文本的一些屬性用法,自己忘記的時候也可以用來查查,不用去查網站那麼麻煩。 下麵是部分總結,也希望對其他人有用 文本修飾 (1)text-decoration: 文本修飾(橫線) 4個屬性值 overline line-through underline blink (1)overl ...
  • 結果如下:顯示一個向左滑動的相冊[來回滾動] ...
  • 最近學習了VUE,自己為了學習做了個小小的博客,功能很簡單,不過開發過程中也遇到了很多坑,所以記錄下來方便以後使用。歡迎大家交流學習。 ...
  • 今天在github 上看到一個非常巧妙的項目:umpox/TinyEditor 使用簡單的瀏覽器就能構造一個簡單的實時運行代碼的基於瀏覽器的前端編輯器,只需要很少代碼; 使用方法: 粘貼如下代碼到瀏覽器地址欄,(我測試了Chrome), 即可得到這樣一個好用的編輯器。 我們分析下其代碼: 其構造了三 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...