国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 vue腳手架中配置Sass的方法

vue腳手架中配置Sass的方法

Jun 29, 2018 pm 02:49 PM
vue

本篇文章主要介紹了vue腳手架中配置Sass的方法,內(nèi)容挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。

世界上最成熟、最穩(wěn)定、最強大的專業(yè)級CSS擴展語言!

兼容CSS
Sass完全兼容所有版本的CSS。我們對此嚴格把控,所以你可以無縫地使用任何可用的CSS庫。

特性豐富
Sass擁有比其他任何CSS擴展語言更多的功能和特性。Sass核心團隊不懈努力,一直使其保持領先地位。

成熟
Sass已經(jīng)經(jīng)過其核心團隊超過8年的精心打造。

行業(yè)認可
一次又一次地,行業(yè)把Sass作為首選CSS擴展語言。

社區(qū)龐大
數(shù)家科技企業(yè)和成百上千名開發(fā)者為Sass提供支持。

框架
有無數(shù)的框架使用Sass構建。比如Compass,Bourbon,和Susy。

我是在vue腳手架中安裝的

1 安裝

npm install --save-dev sass-loader
//sass-loader依賴于node-sass
npm install --save-dev node-sass

2 配置: 在build文件夾下的webpack.base.conf.js的rules里面添加配置

{
 test: /\.sass$/,
 loaders: ['style', 'css', 'sass']
}
// 不知道為什么我配置完就打包不了, 不配置就是好用的

3 在APP.vue中修改style標簽

<style lang="scss">

4 使用

(1) 變量

1-1) 使用變量

sass讓人們受益的一個重要特性就是它為css引入了變量。你可以把反復使用的css屬性值 定義成變量,然后通過變量名來引用它們,而無需重復書寫這一屬性值?;蛘撸瑢τ趦H使用過一 次的屬性值,你可以賦予其一個易懂的變量名,讓人一眼就知道這個屬性值的用途。

sass使用$符號來標識變量(老版本的sass使用!來標識變量。改成$是多半因為!highlight-color看起來太丑了。)

1-2) 變量聲明

$back: red
#app
 color: $back
// 變量聲明也分為全局變量和局部變量 

// 這樣也是好用的

$highlight-color: #F90;
$highlight-border: 1px solid $highlight-color;
.selected {
 border: $highlight-border;
}

//編譯后

.selected {
 border: 1px solid #F90;
}

1-3) 變量命名

在sass中使用-和_其實是一樣的 例如$link-color和$link_color其實指向的是同一個變量。

$link-color: blue;
a {
 color: $link_color;
}

//編譯后
a {
 color: blue;
}

(2) 嵌套css規(guī)則

css中重復寫選擇器是非常惱人的。如果要寫一大串指向頁面中同一塊的樣式時,往往需要 一遍又一遍地寫同一個ID:

#content article h1 { color: #333 }
#content article p { margin-bottom: 1.4em }
#content aside { background-color: #EEE }

像這種情況,sass可以讓你只寫一遍,且使樣式可讀性更高。在Sass中,你可以像俄羅斯套娃那樣在規(guī)則塊中嵌套規(guī)則塊。sass在輸出css時會幫你把這些嵌套規(guī)則處理好,避免你的重復書寫。

#content {
 article {
 h1 { color: #333 }
 p { margin-bottom: 1.4em }
 }
 aside { background-color: #EEE }
}

 /* 編譯后 */
#content article h1 { color: #333 }
#content article p { margin-bottom: 1.4em }
#content aside { background-color: #EEE }

(2-1) 父選擇器的標識符&;

使用后代選擇器和為了偽類的時候可能就是比較麻煩了 不知道怎么寫。這個時候&就派上用場了

article a {
 color: blue;
 &:hover { color: red }
}

// 編譯后

// 其實&相當于是父級
article a { color: blue }
article a:hover { color: red }

(2-2) 群組選擇器的嵌套;

在處理群組的時候只需要用,分割就好了,就能完美的解析不用內(nèi)么麻煩

.container {
 h1, h2, h3 {margin-bottom: .8em}
}

<!--編譯后-->

.container h1 {margin-bottom: .8em}
.container h2 {margin-bottom: .8em}
.container h3 {margin-bottom: .8em}

這種也是一樣的

nav, aside {
 a {color: blue}
}
//編譯后
nav a, aside a {color: blue}

(2-3) 子組合選擇器和同層組合選擇器:>、+和~;

上邊這三個組合選擇器必須和其他選擇器配合使用,以指定瀏覽器僅選擇某種特定上下文中的元素。

article {
 // 同層全體組合選擇器
 ~ article { border-top: 1px dashed #ccc }
 // 直接子元素
 > section { background: #eee }
 dl > {
 dt { color: #333 }
 dd { color: #555 }
 }
 // 同層相鄰組合選擇器
 nav + & { margin-top: 0 }
}

(2-4) 嵌套屬性;

在sass中,除了CSS選擇器,屬性也可以進行嵌套。盡管編寫屬性涉及的重復不像編寫選擇器那么糟糕,但是要反復寫border-styleborder-widthborder-color以及border-*等也是非常煩人的。在sass中,你只需敲寫一遍border:

nav {
 border: {
 style: solid;
 width: 1px;
 color: #ccc;
 }
}

// 編譯后
nav {
 border-style: solid;
 border-width: 1px;
 border-color: #ccc;
}

你甚至還可以這樣寫

nav {
 border: 1px solid #ccc {
 left: 0px;
 right: 0px;
 }
}

// 編譯后
nav {
 border: 1px solid #ccc;
 border-left: 0px;
 border-right: 0px;
}

3 導入SASS文件;

css有一個特別不常用的特性,即@import規(guī)則,它允許在一個css文件中導入其他css文件。然而,后果是只有執(zhí)行到@import時,瀏覽器才會去下載其他css文件,這導致頁面加載起來特別慢。

sass也有一個@import規(guī)則,但不同的是,sass的@import規(guī)則在生成css文件時就把相關文件導入進來。這意味著所有相關的樣式被歸納到了同一個css文件中,而無需發(fā)起額外的下載請求。

4 默認變量值

一般情況下,你反復聲明一個變量,只有最后一處聲明有效且它會覆蓋前邊的值。舉例說明:

$link-color: blue;
$link-color: red;
a {
color: $link-color; // red
}

但是你不想這種情況你可以使用sass的!default標簽可以實現(xiàn)這個目的。它很像css屬性中!important標簽的對立面,不同的是!default用于變量,含義是:如果這個變量被聲明賦值了,那就用它聲明的值,否則就用這個默認值。

5 注釋

body {
 color: #333; // 這種注釋內(nèi)容不會出現(xiàn)在生成的css文件中
 padding: 0; /* 這種注釋內(nèi)容會出現(xiàn)在生成的css文件中 */
}

6 混合器

如果你的整個網(wǎng)站中有幾處小小的樣式類似(例如一致的顏色和字體),那么使用變量來統(tǒng)一處理這種情況是非常不錯的選擇。但是當你的樣式變得越來越復雜,你需要大段大段的重用樣式的代碼,獨立的變量就沒辦法應付這種情況了。你可以通過sass的混合器實現(xiàn)大段樣式的重用。

混合器使用@mixin標識符定義??瓷先ズ芟衿渌腃SS @標識符,比如說@media或者@font-face。這個標識符給一大段樣式賦予一個名字,這樣你就可以輕易地通過引用這個名字重用這段樣式。下邊的這段sass代碼,定義了一個非常簡單的混合器,目的是添加跨瀏覽器的圓角邊框。

@mixin rounded-corners {
 -moz-border-radius: 5px;
 -webkit-border-radius: 5px;
 border-radius: 5px;
}

然后就可以在你的樣式表中通過@include來使用這個混合器,放在你希望的任何地方。@include調(diào)用會把混合器中的所有樣式提取出來放在@include被調(diào)用的地方。如果像下邊這樣寫:

notice {
 background-color: green;
 border: 2px solid #00aa00;
 @include rounded-corners;
}

//sass最終生成:
// 編譯后
.notice {
 background-color: green;
 border: 2px solid #00aa00;
 -moz-border-radius: 5px;
 -webkit-border-radius: 5px;
 border-radius: 5px;
}

混合器太好用了,一不小心你可能會過度使用。大量的重用可能會導致生成的樣式表過大,導致加載緩慢。所以,首先我們將討論混合器的使用場景,避免濫用。

(6-1)給混合器傳參;

混合器并不一定總得生成相同的樣式??梢酝ㄟ^在@include混合器時給混合器傳參,來定制混合器生成的精確樣式。當@include混合器時,參數(shù)其實就是可以賦值給css屬性值的變量。如果你寫過JavaScript,這種方式跟JavaScript的function很像:

@mixin link-colors($normal, $hover, $visited) {
 color: $normal;
 &:hover { color: $hover; }
 &:visited { color: $visited; }
}

當混合器被@include時,你可以把它當作一個css函數(shù)來傳參。如果你像下邊這樣寫:

a {
 @include link-colors(blue, red, green);
}

//Sass最終生成的是:
a { color: blue; }
a:hover { color: red; }
a:visited { color: green; }

其實@mixin 的方法還有很多 可以官網(wǎng)查看

7 使用選擇器繼承來精簡CSS;

使用sass的時候,最后一個減少重復的主要特性就是選擇器繼承?;贜icole Sullivan面向?qū)ο蟮腸ss的理念,選擇器繼承是說一個選擇器可以繼承為另一個選擇器定義的所有樣式。這個通過@extend語法實現(xiàn),如下代碼:

//通過選擇器繼承繼承樣式
.error {
 border: 1px solid red;
 background-color: #fdd;
}
.seriousError {
 @extend .error;
 border-width: 3px;
}

.seriousError不僅會繼承.error自身的所有樣式,任何跟.error有關的組合選擇器樣式也會被.seriousError以組合選擇器的形式繼承,如下代碼:

//.seriousError從.error繼承樣式
.error a{ //應用到.seriousError a
 color: red;
 font-weight: 100;
}
h1.error { //應用到hl.seriousError
 font-size: 1.2rem;
}

關于@extend有兩個要點你應該知道。

跟混合器相比,繼承生成的css代碼相對更少。因為繼承僅僅是重復選擇器,而不會重復屬性,所以使用繼承往往比混合器生成的css體積更小。如果你非常關心你站點的速度,請牢記這一點。
繼承遵從css層疊的規(guī)則。當兩個不同的css規(guī)則應用到同一個html元素上時,并且這兩個不同的css規(guī)則對同一屬性的修飾存在不同的值,css層疊規(guī)則會決定應用哪個樣式。相當直觀:通常權重更高的選擇器勝出,如果權重相同,定義在后邊的規(guī)則勝出。

混合器本身不會引起css層疊的問題,因為混合器把樣式直接放到了css規(guī)則中,而繼承存在樣式層疊的問題。被繼承的樣式會保持原有定義位置和選擇器權重不變。通常來說這并不會引起什么問題,但是知道這點總沒有壞處。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,更多相關內(nèi)容請關注PHP中文網(wǎng)!

相關推薦:

如何用vue快速開發(fā)app的腳手架工具

關于vue如何引入sass全局變量的解析

以上是vue腳手架中配置Sass的方法的詳細內(nèi)容。更多信息請關注PHP中文網(wǎng)其他相關文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
怎樣開發(fā)一個完整的PythonWeb應用程序? 怎樣開發(fā)一個完整的PythonWeb應用程序? May 23, 2025 pm 10:39 PM

要開發(fā)一個完整的PythonWeb應用程序,應遵循以下步驟:1.選擇合適的框架,如Django或Flask。2.集成數(shù)據(jù)庫,使用ORM如SQLAlchemy。3.設計前端,使用Vue或React。4.進行測試,使用pytest或unittest。5.部署應用,使用Docker和平臺如Heroku或AWS。通過這些步驟,可以構建出功能強大且高效的Web應用。

前端路由(Vue Router、React Router)的工作原理及配置方法? 前端路由(Vue Router、React Router)的工作原理及配置方法? May 20, 2025 pm 07:18 PM

前端路由系統(tǒng)的核心是將URL映射到組件,VueRouter和ReactRouter通過監(jiān)聽URL變化并加載相應組件實現(xiàn)無刷新頁面切換。配置方法包括:1.嵌套路由,允許在父組件中嵌套子組件;2.動態(tài)路由,根據(jù)URL參數(shù)加載不同組件;3.路由守衛(wèi),在路由切換前后執(zhí)行邏輯如權限檢查。

Vue的反應性轉(zhuǎn)換(實驗,然后被刪除)的意義是什么? Vue的反應性轉(zhuǎn)換(實驗,然后被刪除)的意義是什么? Jun 20, 2025 am 01:01 AM

ReactivitytransforminVue3aimedtosimplifyhandlingreactivedatabyautomaticallytrackingandmanagingreactivitywithoutrequiringmanualref()or.valueusage.Itsoughttoreduceboilerplateandimprovecodereadabilitybytreatingvariableslikeletandconstasautomaticallyreac

Vue.js 與 React 在組件化開發(fā)中的核心差異是什么? Vue.js 與 React 在組件化開發(fā)中的核心差異是什么? May 21, 2025 pm 08:39 PM

Vue.js和React在組件化開發(fā)中的核心差異在于:1)Vue.js使用模板語法和選項式API,而React使用JSX和函數(shù)式組件;2)Vue.js采用響應式系統(tǒng),React則使用不可變數(shù)據(jù)和虛擬DOM;3)Vue.js提供多個生命周期鉤子,React則更多使用useEffect鉤子。

如何在VUE應用程序中實施國際化(I18N)和本地化(L10N)? 如何在VUE應用程序中實施國際化(I18N)和本地化(L10N)? Jun 20, 2025 am 01:00 AM

國際化和傾斜度invueAppsareprimandermedusingthevuei18nplugin.1.installvue-i18nvianpmoryarn.2.createlo calejsonfiles(例如,en.json,es.json)fortranslationMessages.3.setupthei18ninstanceinmain.jswithlocaleconfigurationandmessagefil

Vue 響應式原理及在數(shù)組更新時不觸發(fā)視圖更新的解決方案? Vue 響應式原理及在數(shù)組更新時不觸發(fā)視圖更新的解決方案? May 20, 2025 pm 06:54 PM

Vue.js處理數(shù)組更新時,視圖未更新是因為Object.defineProperty無法直接監(jiān)聽到數(shù)組變化。解決方法包括:1.使用Vue.set方法修改數(shù)組索引;2.重新賦值整個數(shù)組;3.使用Vue重寫過的變異方法操作數(shù)組。

使用VUE中的V-For指令使用關鍵屬性(:key)的好處是什么? 使用VUE中的V-For指令使用關鍵屬性(:key)的好處是什么? Jun 08, 2025 am 12:14 AM

Usingthe:keyattributewithv-forinVueisessentialforperformanceandcorrectbehavior.First,ithelpsVuetrackeachelementefficientlybyenablingthevirtualDOMdiffingalgorithmtoidentifyandupdateonlywhat’snecessary.Second,itpreservescomponentstateinsideloops,ensuri

您如何優(yōu)化VUE中大型列表或復雜組件的重新渲染? 您如何優(yōu)化VUE中大型列表或復雜組件的重新渲染? Jun 07, 2025 am 12:14 AM

優(yōu)化Vue中大型列表和復雜組件性能的方法包括:1.使用v-once指令處理靜態(tài)內(nèi)容,減少不必要的更新;2.實現(xiàn)虛擬滾動,僅渲染可視區(qū)域的內(nèi)容,如使用vue-virtual-scroller庫;3.通過keep-alive或v-once緩存組件,避免重復掛載;4.利用計算屬性和偵聽器優(yōu)化響應式邏輯,減少重渲染范圍;5.遵循最佳實踐,如在v-for中使用唯一key、避免模板中的內(nèi)聯(lián)函數(shù),并使用性能分析工具定位瓶頸。這些策略能有效提升應用流暢度。

See all articles