1. 動物吃自己的糞便是為什麼
2. 給出括弧所匹配的串所構成的集合的定義是什麼計算機編譯原理
括弧所匹配的串所構成的集合的定義,這個就是。他們括弧里的都屬於這個集合。
3. 如何將hbuider的less和css文件同步
用編譯軟體。這里推薦一個使用過的Koala(考拉) ,屬於less和sass編譯器。
將css目錄文件直接拖到編譯器就好了,之後在HBuilder里的less文件中編輯完之後保存,右角就會有koala同步到css文件的成功提示。
4. 大學生怎麼全面地學習前端開發
第1階段
前端核心基礎
第2階段
HTML5 + CSS3 + 移動端核心
第3階段
移動端
第4階段
伺服器端
第5階段
JavaScript高級
第6階段
前端必備
第7階段
高級框架
第8階段
小程序
5. 有沒有考拉(樹袋熊)的好詞好句
樹袋熊(又名考拉)
是澳大利亞奇特的珍貴原始樹棲動物,屬有袋哺乳類。
它性情溫順,體態憨厚,長相酷似小熊,生有一對大耳朵,鼻子扁平,無尾,身披一層濃密的灰褐色短毛,胸部、腹部、四肢內側和內耳皮毛呈灰白色,身長約80厘米,體重可達15千克左右。它四肢粗壯,尖爪銳利,善於攀樹,整日以樹為家,就連睡覺也不下來。由於樹袋熊從桉樹葉中得到了足夠的水分,因此,一般很少飲水,所以當地人稱它「克瓦勒」,意思就是「不喝水」。
白天,樹袋熊通常將身子蜷作一團棲息在桉樹上,晚間才外出活動,沿著樹枝爬上爬下,尋找桉葉充飢。它胃口很大,食路狹窄,非桉葉不吃。雖然澳大利亞有300多種桉樹,可樹袋熊只吃其中的12種 。它特別喜歡吃玫瑰桉樹、甘露桉樹和斑桉樹上的葉子 。一隻成年樹袋熊每天能吃掉1千克左右的桉樹葉。桉葉汁多味香,含有桉樹腦和水茴香萜,因此,樹袋熊的身上總是散發著一種馥郁清香的桉葉香味。
每年夏季是樹袋熊的交配時期,雌性樹袋熊懷孕一個月後,就生下幼仔,一般每胎僅產一仔,很少有雙胎 。小樹袋熊出生時體長只有2厘米左右,體重僅5.5 克,猶如一條小爬蟲,但能鑽進母親腹部的皮質育兒袋內,吸吮乳汁。五個月後,小樹袋熊體長可達16厘米,可它還撒嬌似地趴在母親背上,或者舒適地躺在母親懷中,直到一歲時,才依依不捨離開母親,開始獨立的野外生活。樹袋熊的壽命一般為12年左右。
在我的心目中有個天真可愛的機靈鬼,那就是樹袋熊。
穿著一身棕色的大衣;眼睛猶如兩個乒乓球一樣;還有一個亮晶晶的黑鑽石鼻子,在陽光下閃閃發光,猶如一顆星星般;它的耳朵機靈有趣;在睡覺時一會兒豎起來,一會又左搖右擺,頗像偵察機一樣在觀察著周圍的動靜看看有沒有危險。
這個調皮鬼的食物更是讓人覺得不可思議,因為是打遍天下無敵手的毒葯——桉樹葉,怎樣,夠你目瞪口呆了吧?其實也沒什麼奇怪的:樹袋熊有一個主胃、四個副胃,食物在主胃裡面,而毒素在副胃裡,通過大便排出體外。而能量通過主胃輸送到全身。
樹袋熊同樣也是一個不知天高地厚的傻瓜,但它也傻得可愛:遇到了毒蛇它也毫不畏懼,它就像玩一樣。它抓住蛇尾巴亂甩;還把蛇放在地上玩;還把蛇捲起球玩。這幫傻瓜遇到強勁無比的甲蟲還歡呼,真是讓人百思不得其解。
我酷愛樹袋熊,常在家裡觀看它的錄影片。甚至爸爸要去澳大利亞出差我也可憐巴巴地求爸爸帶我去,但還是沒去成。
I love樹袋熊,因為它實在是太可愛了。
http://www.zbct.cn/shownews.asp?newsid=1666
6. 自學前端,誰有前端學習路線圖嗎
前端自學的話比較辛苦,因為需要強大的自製力抵制各種誘惑,還有有努力學習的上進心、耐心堅持學下去;現在網上很多培訓機構都有免費的視頻教程進行學習,結合視頻,自己多練、多想、不懂就問才是制勝關鍵。
前端完整學習路線
第一階段:
HTML CSS:HTML進階、CSS進階、div css布局、HTML css整站開發。
第二階段:HTML5和移動Web開發
HTML5:HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本地存儲、SVG、Web Socket、Canvas。
CSS3:CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、background系列屬性改變、Transition、動畫、景深和深透、3D效果製作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁製作。
移動Web開發:跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果製作、Zepto.js、手機聚劃算頁面、手機滾屏。
第三階段:HTTP服務和AJAX編程
WEB伺服器基礎:伺服器基礎知識、Apache伺服器和其他WEB伺服器介紹、Apache伺服器搭建、HTTP介紹。
AJAX上篇:Ajax簡介和非同步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用。
AJAX下篇:JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。
第四階段:面向對象進階
面向對象終極篇:從內存角度到理解JS面向對象、基本類型、復雜類型、原型鏈、ES6中的面向對象、屬性讀寫許可權、設置器、訪問器。
面向對象三大特徵:繼承性、多態性、封裝性、介面。
設計模式:面向對象編程思維、單例模式、工廠模式、策略模式、觀察者模式、模板方法模式、代理模式、裝飾者模式、適配器模式、面向切面編程。
第五階段:封裝一個屬於自己的框架
框架封裝基礎:事件流、冒泡、捕獲、事件對象、事件框架、選擇框架。
框架封裝中級:運動原理、單物體運動框架、多物體運動框架、運動框架面向對象封裝。
框架封裝高級和補充:JQuery框架雛形、可擴展性、模塊化、封裝屬於傳智自己的框架。
第六階段:模塊化組件開發
面向組件編程:面向組件編程的方式、面向組件編程的實現原理、面向組件編程實戰、基於組件化思想開發網站應用程序。
面向模塊編程:AMD設計規范、CMD設計規范、RequireJS,LoadJS、淘寶的SeaJS。
第七階段:主流的流行框架
Web開發工作流:GIT/SVN、Yeoman腳手架、NPMer依賴管理工具、Grunt/Gulp/Webpack。
MVC/MVVM/MVW框架:Angular.js、Backbone.js、Knockout/Ember。
常用庫:React.js、Vue.js、Zepto.js。
第八階段:HTML5原生移動應用開發
Cordova:WebApp/NativeApp/HybirdApp簡介、Cordova簡介、與PhoneGap之間的關系、開發環境搭建、Cordova實戰(創建項目,配置,編譯,調試,部署發布)。
Ionic:Ionic簡介和同類對比、模板項目解析、常見組件及使用、結合Angular構建APP、常見效果(下拉刷新,上拉載入,側滑導航,選項卡)。
React Native:React Native簡介、React Native環境配置、創建項目,配置,編譯,調試,部署發布、原生模塊和UI組件、原生常用API。
HTML5 :HTML5 中國產業聯盟、HTML5 Plus Runtime環境、HBuilder開發工具、MUI框架、H5 開發和部署。
第九階段: Node.js全棧開發:
快速入門:Node.js發展、生態圈、Io.js、Linux/Windows/OS X環境配置、REPL環境和控制台程序、非同步編程,非阻塞I/O、模塊概念,模塊管理工具、開發流程,調試,測試。
核心模塊和對象:全局對象global,process,console,util、事件驅動,事件發射器、加密解密,路徑操做。
7. webstorm怎麼把less文件編譯成css
在webstorm里可以直接新建style sheet 文件呀,這個不就是CSS格式文件嗎。為什麼要用less文件?
8. 現在sass軟體有什麼好做的
1、安裝sass
1.安裝ruby
因為sass是用ruby語言寫的,所以需要安裝ruby環境
打開安裝包去安裝ruby,記住要勾選 下面選項來配置環境路徑
Add Ruby executables to your PATH
安裝完成之後繼續下一步操作
2.安裝sass
在cmd里通過gem安裝sass
gem是ruby的包管理工具,類似於nodejs 的npm
- gem install sass1
這個時候如果不翻牆的話是會出問題的,因為:
由於國內網路原因(你懂的),導致rubygems.org存放在 Amazon S3 上面的資源文件間歇性連接失敗。這時候我們可以通過gem sources命令來配置源,先移除默認的https://rubygems.org源,然後添加淘寶的源https://ruby.taobao.org/,然後查看下當前使用的源是哪個,如果是淘寶的,則表示可以輸入sass安裝命令gem install sass了
- $ gem sources --remove https://rubygems.org/
- $ gem sources -a https://ruby.taobao.org/ 【如果你系統不支持https,請將淘寶源更換成:gem sources -a http://gems.ruby-china.org】
- $ gem sources -l
- *** CURRENT SOURCES ***
- https://ruby.taobao.org
- # 請確保只有 ruby.taobao.org
- $ gem install sass1234567
安裝好之後執行sass -v就可以看到sass的版本了
實在實在不行,就安裝離線文件吧,但是失敗率也很高
gem install ./…/sass-3.4.22.gem
2、編譯sass文件的方式
1.命令行編譯
可以通過cmd命令行執行sass方法來編譯
例如:
- sass scss/a.scss:css/a.css1
sass 後面寫要編譯的sass文件的路徑,『:』後面寫的是
要輸出的目錄及名字
需要注意的是:必須有這個文件夾才能在裡面生成css
這樣的話寫一句執行一次編譯一次有些太麻煩
可以開啟一個watch來監聽文件變化來進行編譯
- sass --watch scss:css1
–watch表示要監聽 :前後的兩個都是文件夾,表示scss文件夾的文件改變就編譯到css文件夾
2.其他方式編譯
除了命令行工具其實還可以用考拉、gulp等工具進行編譯,但是ruby和sass是必須要安裝的
考拉的方式就不多做介紹了,大家i自己去看一下
gulp的話呢是需要gulp-sass的模塊來編譯,使用方式類似於gulp-less
這里是網址,點擊查看
3、sass四種風格
sass編譯的格式
sass編譯輸出的css有四種格式
nested 嵌套
compact 緊湊
expanded 擴展
compressed 壓縮
這些樣式會影響輸出的css的格式
簡單介紹一下:
css默認輸出的嵌套
- ul{
- font-size:15px;
- li{
- list-style:none;
- }
- }123456
—》
- ul {
- font-size: 15px; }
- ul li {
- list-style: none; }1234
緊湊compact
在編譯的時候需要執行
- sass --watch scss:css --style compact1
這個時候輸出的代碼就是
- ul { font-size: 15px; }
- ul li { list-style: none; padding: 5px; }12
compressed 壓縮
在編譯的時候需要執行
- sass --watch scss:css --style compressed1
—>
- ul{font-size:15px}ul li{list-style:none;animation:all 0.4s}1
expanded 擴展
更像是平時寫的css一樣
在編譯的時候需要執行
- sass --watch scss:css --style expanded1
—>
- ul {
- font-size: 15px;
- }
- ul li {
- list-style: none;
- animation: all 0.3s;
- }1234567
compressed 壓縮
更像是平時寫的css一樣
在編譯的時候需要執行
- sass --watch scss:css --style compressed1
—>
- .a{width:100px;height:100px;border:1px solid red}.a .b{background:red}1
4、sass與scss
sass的兩個語法版本
sass一開始用的是一種縮進式的語法格式
採用這種格式文件的後綴名是.sass
在sass3.0版本後我們常用的是sassy css語法,擴展名是.scss,更接近與css語法
兩個版本的區別
後綴名不同 .sass和.scss
語法不同,請看下面
新版:
- /*新版本
- 多行文本注釋*/
- //新版本
- //單行文本注釋
- @import "base";
- @mixin alert{
- color:red;
- background:blue;
- }
- .alert-warning{
- @include alert;
- }
- ul{
- font-size:15px;
- li{
- list-style:none;
- }
- }123456789101112131415161718
老版本:
- /*新版本
- 多行文本注釋
- //新版本
- 單行文本注釋
- @import "base"
- =alert
- color:red
- background:blue
- .alert-warning
- +alert
- ul
- font-size:15px
- li
- list-style:none1234567891011121314
5、變數、嵌套、混合、繼承拓展
變數的意義
在sass里我們可以定義多個變數來存放顏色、邊框等等的樣式,這樣就可以在下面想要使用樣式的時候使用變數了
這樣的優點就是便於維護,更改方便
變數的使用
可以通過$來定義變數,在變數名字中可以使用-和_來作為連接,並且-和_是可以互通的,就是用起來一模一樣。
變數的值可以是字元串、數字、顏色等等,在變數里還可以使用其他變數,使用的時候直接寫變數名就好了
例如
- $primary-color:#ff6600;
- $primary-border:1px solid $primary_color;
- div.box{
- background:$primary-color;
- }
- h1.page-header{
- border:$primary-border;
- }12345678
—》
- div.box {
- background: #ff6600;
- }
- h1.page-header {
- border: 1px solid #ff6600;
- }123456
嵌套的使用
合理的使用嵌套語法,可以使我們編寫代碼更為快捷
假設我們想寫這樣的css:
- .nav {
- height: 100px;
- }
- .nav ul {
- margin: 0;
- }
- .nav ul li {
- float: left;
- list-style: none;
- padding: 5px;
- }1234567891011
在sass里我們可以這樣寫
- .nav{
- height:100px;
- ul{
- margin:0;
- li {
- float:left;
- list-style:none;
- padding:5px;
- }
- }
- }1234567891011
大家會發現,寫出來的代碼父和子之間都有空格隔開,如果我們需要給a加上偽類的話我們這樣寫
- .nav{
- height:100px;
- a{
- color:#fff;
- :hover{
- color:#ff6600;
- }
- }
- }123456789
在裡面就會出現這樣的情況
- .nav a :hover {
- color: #ff6600;
- }123
我們發現在a和:hover之間有了空格,這樣是不好的,所以我們需要在寫的時候在:hover之前把a加上,這樣就需要用到在之類里引用父類選擇器的方式,我們可以用&符號代替父類
例如:
- .nav{
- height:100px;
- a{
- color:#fff;
- &:hover{
- color:#ff6600;
- }
- }
- }123456789
這樣就好了,下面來個完整的代碼:
- .nav{
- height:100px;
- ul{
- margin:0;
- li{
- float:left;
- list-style:none;
- padding:5px;
- }
- a{
- display:block;
- color:#000;
- &:hover{
- color:#f60;
- background:red;
- }
- }
- }
- & &-text{
- font-size:15px;
- }
- }
-----》
- .nav {
- height: 100px;
- }
- .nav ul {
- margin: 0;
- }
- .nav ul li {
- float: left;
- list-style: none;
- padding: 5px;
- }
- .nav ul a {
- display: block;
- color: #000;
- }
- .nav ul a:hover {
- color: #f60;
- background: red;
- }
- .nav .nav-text {
- font-size: 15px;
- }
嵌套屬性
我們可以把一些個復合屬性的子屬性來嵌套編寫,加快編寫速度,例如
- body{
- font:{
- family:Helvitica;
- size:15px;
- weight:bold;
- }
- }
- .nav{
- border:1px solid red{
- left:none;
- right:none;
- }
- }
- .page-next{
- transition:{
- property:all;
- delay:2s;
- }
- }12345678910111213141516171819
-----》
- body {
- font-family: Helvitica;
- font-size: 15px;
- font-weight: bold;
- }
- .nav {
- border: 1px solid red;
- border-left: none;
- border-right: none;
- }
- .page-next {
- transition-property: all;
- transition-delay: 2s;
- }1234567891011121314
mixin 混合
你可以把它想像成一個有名字的定義好的樣式
每一個mixin都有自己的名字,類似於js里的函數定義方法如下
- @mixin 名字(參數1,參數2...){
- ...
- }123
使用方法是在其他選擇器css樣式里通過@include引入,其實就相當於將mixin里的代碼寫入到這個選擇器的css里,如下:
- @mixin alert {
- color:#f60;
- background-color:#f60;
- a{
- color:pink;
- }
- &-a{
- color:red;
- }
- }
- .alert-warning{
- @include alert;
- }12345678910111213
-----》
- .alert-warning {
- color: #f60;
- background-color: #f60;
- }
- .alert-warning a {
- color: pink;
- }
- .alert-warning-a {
- color: red;
- }12345678910
剛才是沒有參數的mixin,mixin也可以擁有參數,需要注意的是:
形參的名字前要加$
傳參的時候只寫值的話要按順序傳
傳參的時候不想按順序的話需要加上形參名字
例如:
- @mixin alert($color,$background) {
- color:$color;
- background-color:$background;
- a{
- color:darken($color,10%);//把顏色加深百分之十
- }
- }
- .alert-warning{
- @include alert(red,blue);
- }
- .alert-info{
- @include alert($background:red,$color:blue);
- }12345678910111213
------》
- .alert-warning {
- color: red;
- background-color: blue;
- }
- .alert-warning a {
- color: #cc0000;
- }
- .alert-info {
- color: blue;
- background-color: red;
- }
- .alert-info a {
- color: #0000cc;
- }1234567891011121314
繼承拓展 extend
如果我們有一個選擇器想要擁有另一個選擇所有的東西,不管是樣式還是子元素等等,可以使用@extend來繼承
大家需要注意的是,++b繼承a的時候,a的子元素設置了樣式,也會給b的子元素設置樣式++,達到完全一樣的情況,例如:
- .alert {
- padding:5px;
- }
- .alert a {
- font:{
- weight:bold;
- size:15px;
- }
- }
- .alert-info {
- @extend .alert;
- backgournd:skyblue;
- }12345678910111213
----》
- .alert, .alert-info {
- padding: 5px;
- }
- .alert a, .alert-info a {
- font-weight: bold;
- font-size: 15px;
- }
- .alert-info {
- backgournd: skyblue;
- }12345678910
partials
在以前咱們編寫css的時候,一個css引入另一個css需要使用@import,其實這是不好的,會多發一次http請求,影響咱們站點的響應速度。
在sass里,咱們可以把小的sass文件分出去,叫做partials,在某個sass里通過@import 『partials名』去引入,注意路徑喲,這樣的話就可以把partials里的代碼引到咱們大的sass里一起編譯
需要注意的是 partials的文件名前要加_
_base.sass :
- body{
- margin:0;
- padding:0;
- }1234
style.sass :
- @import "base";
- .alert {
- padding:5px;
- }
- .alert a {
- font:{
- weight:bold;
- size:15px;
- }
- }
- .alert-info {
- @extend .alert;
- backgournd:skyblue;
- }1234567891011121314
----------->
- body {
- margin: 0;
- padding: 0;
- }
- .alert, .alert-info {
- padding: 5px;
- }
- .alert a, .alert-info a {
- font-weight: bold;
- font-size: 15px;
- }
- .alert-info {
- backgournd: skyblue;
- }1234567891011121314
這樣的話我們就可以把模塊化的思想引入到sass里了
comment注釋
sass里的注釋有三種
多行注釋
單行注釋
強制注釋
多行注釋:壓縮後不會出現在css里 /*/
單行注釋: 不會出現在css里 //
強制注釋:壓縮後也會出現在css里 /! */
6、數據類型與函數
數據類型
在sass里有數字、字元串、列表、顏色等類型
在cmd里 輸入
- sass -i1
就會進入到交互模式,輸入的計算可以馬上得到結果
type-of()可以用來得到數據類型,如:
- type-of(5) -> number1
注意數字類型的可以包含單位,如:
- type-of(5px) -> number1
字元串類型:
- type-of(hello) -> string
- type-of('hello') -> string12
list類型:
- type-of(1px solid red) -> list
- type-of(5px 10px) -> list12
顏色:
- type-of(red) -> color
- type-of(rgb(255,0,0) -> color
- type-of(#333) -> color123
number 計算
- 2+9 -》10
- 2*8 -》16
- (8/2) ->4 //除法要寫括弧123
也可以包含單位
- 5px + 5px -> 10px
- 5px -2 ->3px
- 5px *2 ->10px
- 5px * 2px ->10px*px //這樣就不對了喲
- (10px/2px) -> 5//除法單位取消
- 3+2*5px->13px123456
好吧,都是一些小學的數學題,很簡單對吧
處理數字的函數
絕對值
- abs(10) -> 10;
- abs(10px) -> 10px;
- abs(-10px) -> 10px;123
四捨五入相關
- round(3.4)->3 //四捨五入
- round(3.6)->4
- ceil(3.2)->4 //向上取整
- ceil(3.6)->4
- floor(3.2)->3 //向下取整
- floor(3.9)->3
- percentage(600px/1000px) ->65% //百分之
- min(1,2,3) -> 1 //最小值
- max(2,3,4,5) -> 5 //最大值123456789
字元串相關
- //帶引號和不帶引號的字元串想加為帶引號的字元串
- "a" + b ->"ab"
- a + "b" ->"ab"
- //字元串+數字
- "ab" + 1 ->"ab1"
- //字元串 - 和 / 字元串
- "a" - b ->"a-b"
- "a" / b ->"a/b"
- //注意字元串不能相乘123456789
字元串函數
大寫:
- $word:"hello";
- to-upper-case($word) -> "HELLO"12
小寫:
- $word:"Hello";
- to-lower-case($word) -> "hello"12
得到length:
- $word:"Hello";
- str-length($word) -> 512
得到字元串在字元串里的位置:
- $word:"Hello";
- str-index($word,"el") -> 212
字元串中插入字元串:
- $word:"Hello";
- str-insert($word,"aa",2) -> "Haaello"12
顏色相關
在sass里除了關鍵字、十六進制、rgb和rgba之外還有一種顏色是HSL
分別表示的是 色相 0-360(deg) 飽和度 0-100% 明度 0-100%
例如:
- body {
- background-color:hsl(0,100%,50%);
- }
- -》
- body {
- background-color: red;
- }1234567
- body {
- background-color:hsl(60,100%,50%);
- }
- -》
- body {
- background-color: yellow;
- }1234567
也可以有透明喲
- body {
- background-color:hsl(60,100%,50%,0.5);
- }
- -》
- body {
- background-color: rgba(255,255,0,0.5);
- }1234567
顏色函數
lighten函數和darken函數可以把顏色加深或減淡,即調整明度,第一個參數為顏色,第二個參數為百分比,例如:
- $color:#ff0000;
- $light-color:lighten($color,30%);
- $dark-color:darken($color,30%);
- .a{
- color:$color;
- background:$light-color;
- border-color:$dark-color;
- }12345678
—》
- .a {
- color: #ff0000;
- background: #ff9999;
- border-color: #660000;
- }12345
saturate和desaturate函數可以調整顏色的純度
- $color:hsl(0,50%,50%);
- $saturate-color:saturate($color,50%);
- $desaturate-color:desaturate($color,30%);
- .a{
- color:$color;
- background:$saturate-color;
- border-color:$desaturate-color;
- }12345678
–》
- .a {
- color: #bf4040;
- background: red;
- border-color: #996666;
- }12345
用transparentize來讓顏色更透明
用opatify來讓顏色更不透明
- $color:rgba(255,0,0,0.5);
- $opacify-color:opacify($color,0.3);
- $transparentize-color:transparentize($color,0.3);
- .a{
- color:$color;
- background:$opacify-color;
- border-color:$transparentize-color;
- }12345678
—》
- .a {
- color: rgba(255, 0, 0, 0.5);
- background: rgba(255, 0, 0, 0.8);
- border-color: rgba(255, 0, 0, 0.2);
- }12345
列表類型
在sass里,用空格或者逗號隔開的值就是列表類型
如:
- 1px solid red
- Courier,microsoft yahei12
列表函數
sass里的列表類似與數組
- 獲取列表的長度
- length(5px 10x) 2
- 獲取列表中的第幾個元素
- nth(5px 10px,2) 10px
- 獲取一個元素在一個列表裡的下標
- index(1px solid red,solid) 2
- 給列表裡加入新的元素
- append(5px 10px,5px) 5px 10px 5px
- 連接兩個列表
- join(5px 10px,5px 0) 5px 10px 5px 012345678910
map類型
sass里的map類型類似與js里的object
- $map:(key1:value1,key2:value2,key3:value3);1
map 函數
- //定義一個map
- $color:(light:#ffffff,dark:#000000);
- //獲取map 的length
- length($color) ->2
- //得到map里key對應的值
- map-get($color,dark) ->#000000
- 獲取map里的所有鍵的列表
- map-keys($color) ->("light","dark") //列表類型
- 獲取map里的所有值的列表
- map-values($color) -> ("#ffffff","#000000") //列表類型
- 判斷map里是否含有這個key
- map-has-key($color,light) ->true
- 給map里添加鍵值對
- map-merge($color,(light-gray:#cccccc))
- ->(light:#ffffff,dark:#000000,light-gray:#cccccc)
- 移除map里的某個鍵值對
- map-remove($colors,light) ->(dark:#000000,light-gray:#cccccc)1234567891011121314151617
boolean類型
在sass里通過> < 比較得到的值就是布爾值 true 和false
- 5px>3px -> true
- 5px<2px -> false12
在sass里也可以有或 且 非
且:
- (5px > 3px) and (5px < 2px) -> false
- (5px > 3px) and (5px > 2px) -> true12
或:
- (5px > 3px) or (5px < 2px) -> true
- (5px < 3px) and (5px > 2px) -> false12
非:
- not(5px>3px) -> false1
interpolation
在sass里可以通過interpolation的方式來在變數名和屬性名上拼接變數值,例如
- $name:"info";
- $attr:"border";
- .alert-#{$name}{
- #{$attr}-color:red;
- }12345
---->
- .alert-info {
- border-color: red;
- }123
7、分支結構、循環結構、函數
分支結構
在sass里,可以使用@if讓我們根據一些條件來應用特定的樣式
結構:
- @if 條件 {
- }123
如果條件為真的話,括弧里的代碼就會釋放出來
例如:
- $use-refixes:true;
- .rounded{
- @if $use-refixes {
- -webkit-border-radius:5px;
- -moz-border-radius:5px;
- -ms-border-radius:5px;
- -o-border-radius:5px;
- }
- border-radius:5px;
- }12345678910
—>
- .rounded {
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- -ms-border-radius: 5px;
- -o-border-radius: 5px;
- border-radius: 5px;
- }1234567
如果是另外一種情況
- $use-refixes:false;1
—》
- .rounded {
- border-radius: 5px;
- }123
if else在sass里的寫法是:
- body{
- @if $theme == dark {
- background:black;
- } @else if $theme == light {
- background:white;
- } @else {
- background:gray;
- }
- }123456789
for循環
在sass里的for循環是這樣的
- @for $var form <開始值> through <結束值> {
- ...
- }123
還有一種是
- @for $var form <開始值> to <結束值> {
- ...
- }123
注意,開始值和結束值的關系可以是升序也可以是倒序,但是每次只能+1或者-1
這兩種有什麼區別呢?
區別就是 from 1 to 4 的話是執行三次,i的變化是 1 2 3
from 1 through 4 的話是執行四次,i的變化是 1 2 3 4
如:
from to
- $columns:4;
- @for $i from 1 to $columns{
- .col-#{$i}{
- width:100% / $columns * $i;
- }
- }123456
—》
- .col-1 {
- width: 25%;
- }
- .col-2 {
- width: 50%;
- }
- .col-3 {
- width: 75%;
- }123456789
from through
- $columns:4;
- @for $i from 1 through $columns{
- .col-#{$i}{
- width:100% / $columns * $i;
- }
- }123456
—>
- .col-1 {
- width: 25%;
- }
- .col-2 {
- width: 50%;
- }
- .col-3 {
- width: 75%;
- }
- .col-4 {
- width: 100%;
- }123456789101112
each 遍歷list類型
在sass里可以利用each方法來遍歷咱們的list類型的數據
list類型在js里類似於數組,那麼each類似於for in遍歷,結構如下:
- @each $item in $list{
- ...
- }123
例如:
- $colors:success error warning;
- $map:(success:green,warning:yellow,error:red);
- @each $color in $colors{
- .bg-#{$color}{
- background:map-get($map,$color);
- }
- }1234567
—>
- .bg-success {
- background: green;
- }
- .bg-error {
- background: red;
- }
- .bg-warning {
- background: yellow;
- }123456789
@while 循環
在sass里,擁有@while循環,比@for會更好用一些,@for循環只能從一個數到另一個數變化之間執行,每次變化都是1,while設置循環結構的話更為靈活;
結構:
- @while 條件{
- }123
eq:
- $i:6;
- @while $i>0{
- .item-#{$i}{
- width:$i*5px;
- }
- $i:$i - 2;
- }1234567
注意:$i - 2 需要用空格隔開喲
---------》
- .item-6 {
- width: 30px;
- }
- .item-4 {
- width: 20px;
- }
- .item-2 {
- width: 10px;
- }123456789
自定義函數
在sass里也可以定義函數,並且也可以有返回值
結構:
- @function 名稱 (參數1,參數2){
- @return ...
- }123
例如,我們做一個返回map里key對應的值的函數:
- $colors:(light:#ffffff,dark:#000000,gray:#555555);
- @function color($key){
- @return map-get($colors,$key);
- }
- body{
- background:color(light);
- color:color(dark);
- border-color:color(gray);
- }123456789
—》
- body {
- background: #ffffff;
- color: #000000;
- border-color: #555555;
- }