摘要:當(dāng)你改變一些基本配色之后,你會(huì)發(fā)現(xiàn)框架完全不同了。的變量以開頭,賦值與相同,后面的代表它是可覆蓋的。通過遍歷字典,拿到和,設(shè)置相應(yīng)的值即可。
這是一個(gè)系列,帶著大家封裝一個(gè)純 CSS 框架,從零學(xué)習(xí) SASS 語法。
代碼倉(cāng)庫(kù)點(diǎn)我傳送
因?yàn)楹?jiǎn)單,強(qiáng)依賴原生 Javascript 對(duì)虛擬 DOM 不友好(如 React、Vue、Angular),使用虛擬 DOM 對(duì)使用原生 Javascript 編程(JQuery)不友好。沒有代碼是最棒的代碼,部署在任何地方,運(yùn)行在任何地方。
我會(huì)告訴我叫 IE 嗎?
看這表情,我會(huì)騙你?抄刀開干
首先你得準(zhǔn)備一個(gè)設(shè)計(jì)稿,什么?你沒有?
首先得為 UI 選擇一些基本色調(diào),這其實(shí)是最核心的。當(dāng)你改變一些基本配色之后,你會(huì)發(fā)現(xiàn)框架完全不同了。
搭建開發(fā)環(huán)境初始化一個(gè) Nodejs 項(xiàng)目,安裝 parcel 打包工具,讓 parcel 來幫我們處理可編譯文件,使用簡(jiǎn)單,速度奇快,小微項(xiàng)目用 parcel 有如神助。
mkdir NicoUI && cd NicoUI npm init -y npm i parcel-bundler -D
創(chuàng)建開始文件
touch index.html index.sass
在 index.html 引入 index.sass 文件,我們使用 sass 開發(fā),最終編譯成 css。我搜索了一大圈 github 的前端項(xiàng)目,大多數(shù)還是 sass 的,雖然筆者個(gè)人用的 stylus,但是為了讓大家更好的在公司合作,這里使用 sass 語法。
創(chuàng)建 src/vars/_color.sass 定義顏色變量,在 index.sass 里面導(dǎo)入
@import "./src/vars/_color.sass"
美美噠顏色,彩虹一樣。sass 的變量以 $ 開頭,賦值與 css 相同,后面的 !default 代表它是可覆蓋的。
添加重置樣式,保證所有瀏覽器默認(rèn)樣式的一致性,可以在 https://github.com/jgthms/min... 找到最簡(jiǎn)潔的一個(gè)版本。把里面的 sass 文件復(fù)制過來,存到 src 目錄下,導(dǎo)入到 index.sass 中。
初始化全局樣式的初始化,比如基本行高,文字大小,字體樣式等。新建 src/initinal.sass 文件,在 index.sass 導(dǎo)入它。
html 設(shè)置背景色與字體大小,body 設(shè)置字體大小為 1rem ,rem 代表基于 root 的 em 大小,1rem 即為 $body-size 大小,即16px.
$body-background-color: #fff !default $body-size: 16px !default $body-color: $dark !default $line-height: 1.6 !default $font: BlinkMacSystemFont, -apple-system !default html background: $body-background-color font-size: $body-size min-width: 375px body font-size: 1rem color: $body-color font-family: $font line-height: $line-height a color: $blue text-decoration: none &:hover color: $deep-blue .meta color: $gray font-size: .8rem按鈕
新建 src/button.sass ,先設(shè)置一下按鈕的基本樣式,因?yàn)闃邮娇梢员?button 或者 a 標(biāo)簽使用,我們希望 a 標(biāo)簽,鼠標(biāo)是小手,而 button 不是。& 可以引用上一級(jí)別的選擇器,而假如 & 想放在后面,當(dāng)做字符串,要通過 #{} 包裹起來。
.btn a#{&}
會(huì)編譯成
.btn a.btn
而
.btn @at-root a#{&}
會(huì)編譯成
a.btn
我們按照設(shè)計(jì)的,添加邊框與顏色,以及添加 hover 的顏色加深,darken 是 sass 內(nèi)置的函數(shù),第一個(gè)參數(shù)是顏色,第二個(gè)參數(shù)是加深的百分比。
.btn color: $gray border: 1px solid $light outline: none padding: .5rem 1rem cursor: default border-radius: 4px font-size: .8rem display: inline-block &.block display: block @at-root a#{&} cursor: pointer &:hover color: darken($gray, 20%) border: 1px solid darken($light, 5%) &.large font-size: .9rem padding: .7rem 1.2rem &.small font-size: .7rem padding: .3rem .7rem &.text border: none
然后我們?cè)俳o按鈕添加顏色,現(xiàn)在我們先寫一個(gè)。
.btn &.green color: #fff background: $green border-color: $green &:hover background: darken($green, 4%) &.outline color: $green background: transparent border-color: $green transition: background .2s &:hover background: $green color: #fff
寫好了之后,我們通過循環(huán),把所有的顏色都補(bǔ)全,$colors 是一個(gè)字典,是一個(gè)鍵值對(duì),可以理解為 JavaScript 里面的對(duì)象。通過 @each 遍歷字典,拿到 key 和 value,設(shè)置相應(yīng)的值即可。
$colors: ("green": $green, "blue": $blue, "yellow": $yellow, "red": $red) .btn @each $name, $color in $colors &.#{$name} color: #fff background: $color border-color: $color &:hover background: darken($color, 4%) &.outline color: $color background: transparent border-color: $color transition: background .2s &:hover background: $color color: #fff
在 html 添加一些對(duì)應(yīng) class 的節(jié)點(diǎn),看看效果吧。
注:所有優(yōu)質(zhì)內(nèi)容全網(wǎng)同時(shí)發(fā)布,包括簡(jiǎn)書、知乎、掘金、大魚號(hào)、微信號(hào)、掘金等。
掃描下面二維碼,關(guān)注微信公眾號(hào),每周免費(fèi)獲取精品前端小課連載,每周更新,還在等什么?趕快關(guān)注吧。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/116899.html
摘要:官網(wǎng)是圍繞構(gòu)建的,是一個(gè)免費(fèi)的開源框架。官網(wǎng)在壓縮后僅為,以移動(dòng)優(yōu)先的理念為中心。官網(wǎng)被稱為輕量級(jí)響應(yīng)式現(xiàn)代化,是一個(gè)基于的框架。通過添加主題或自定義組件能夠幫你進(jìn)一步開發(fā)個(gè)性化的。官網(wǎng)有時(shí)框架可以包含僅對(duì)其原始開發(fā)人員有意義的類名。 翻譯:瘋狂的技術(shù)宅原文:https://1stwebdesigner.com/mo... 本文首發(fā)微信公眾號(hào):前端先鋒歡迎關(guān)注,每天都給你推送新鮮的...
摘要:我承認(rèn)從搞笑文章你糟蹋了中得到了一點(diǎn)靈感,不過我要再次說明,我無意嘲笑框架作者。庫(kù)很好啊,我希望看到大家一致贊同遠(yuǎn)離的是框架。 原文《No more JS frameworks》 中文版翻譯:老碼農(nóng) 翻譯版: 日語 JS 框架看上去就像死亡和納稅,必然發(fā)生,無法避免。如果我能變成一只蒼蠅趴在墻上,我就能確定每次啟動(dòng)一個(gè)新項(xiàng)目的時(shí)候,他們討論的第一個(gè)問題肯定是:我們要用哪個(gè) JS ...
摘要:規(guī)范名稱定義,便于維護(hù)。譬如關(guān)于的定義在格式化的中會(huì)聲明為,而在基本樣式的中又可能會(huì)聲明所以在中會(huì)出現(xiàn)多次定義。盡量減少連接數(shù)和的大小?;诎姹镜氖褂媚壳笆褂幂^廣的是版本和,其中的最新版本是的最新版本。 隨著CSS3和HTML5的流行,我們的WEB頁面不僅需要更人性化的設(shè)計(jì)理念,而且需要更酷的頁面特效和用戶體驗(yàn)。作為開發(fā)者,我們需要了解一些寶貴的CSS UI開源框架資源,它們可以幫助我...
摘要:規(guī)范名稱定義,便于維護(hù)。譬如關(guān)于的定義在格式化的中會(huì)聲明為,而在基本樣式的中又可能會(huì)聲明所以在中會(huì)出現(xiàn)多次定義。盡量減少連接數(shù)和的大小?;诎姹镜氖褂媚壳笆褂幂^廣的是版本和,其中的最新版本是的最新版本。 隨著CSS3和HTML5的流行,我們的WEB頁面不僅需要更人性化的設(shè)計(jì)理念,而且需要更酷的頁面特效和用戶體驗(yàn)。作為開發(fā)者,我們需要了解一些寶貴的CSS UI開源框架資源,它們可以幫助我...
摘要:規(guī)范名稱定義,便于維護(hù)。譬如關(guān)于的定義在格式化的中會(huì)聲明為,而在基本樣式的中又可能會(huì)聲明所以在中會(huì)出現(xiàn)多次定義。盡量減少連接數(shù)和的大小?;诎姹镜氖褂媚壳笆褂幂^廣的是版本和,其中的最新版本是的最新版本。 隨著CSS3和HTML5的流行,我們的WEB頁面不僅需要更人性化的設(shè)計(jì)理念,而且需要更酷的頁面特效和用戶體驗(yàn)。作為開發(fā)者,我們需要了解一些寶貴的CSS UI開源框架資源,它們可以幫助我...
閱讀 1896·2021-11-24 09:39
閱讀 2133·2021-09-22 15:50
閱讀 1990·2021-09-22 14:57
閱讀 699·2021-07-28 00:13
閱讀 1064·2019-08-30 15:54
閱讀 2355·2019-08-30 15:52
閱讀 2686·2019-08-30 13:07
閱讀 3786·2019-08-30 11:27