Stylus 條件

2023-09-11 15:52 更新

條件(Conditionals)

條件

條件提供了語言的劉控制,否則就是純粹的靜態(tài)語言。提供的條件有導入、混入、函數(shù)以及更多。下面的例子純粹示例,并不是使用建議。

if / else if / else

這沒什么好說的,跟一般的語言一致,if表達式滿足(true)的時候執(zhí)行后面語句塊,否則,繼續(xù)后面的else if或else.

下面這個例子,根據(jù)overload的條件,決定是使用padding還是margin.

overload-padding = true

if overload-padding
  padding(y, x)
    margin y x

body
  padding 5px 10px

另外的例子:

box(x, y, margin = false)
  padding y x
  if margin
    margin y x

body
  box(5px, 10px, true)

另外的box()幫手:

box(x, y, margin-only = false)
  if margin-only
    margin y x
  else
    padding y x
除非(unless)

熟悉Ruby程序語言的用戶應該都知道unless條件,其基本上與if相反,本質(zhì)上是(!(expr)).

下面這個例子中,如果disable-padding-override是undefined或false, padding將被干掉,顯示margin代替之。但是,如果是true, padding將會如期繼續(xù)輸出padding 5px 10px.

disable-padding-override = true

unless disable-padding-override is defined and disable-padding-override
  padding(x, y)
    margin y x

body
  padding 5px 10px
后綴條件

Stylus支持后綴條件,這就意味著if和unless可以當作操作符;當右邊表達式為真的時候執(zhí)行左邊的操作對象。

例如,我們定義negative()來執(zhí)行一些基本的檢查。下面我們使用塊式條件:

negative(n)
  unless n is a 'unit'
    error('無效數(shù)值')
  if n < 0
    yes
  else
    no

接下來,我們利用后綴條件讓我們的方法簡潔。

negative(n)
  error('無效數(shù)值') unless n is a 'unit'
  return yes if n < 0
  no

當然,我們可以更進一步。如這個n < 0 ? yes : no可以用布爾代替:n < 0.

后綴條件適用于大多數(shù)的單行語句。如,@import, @charset, 混合書寫等。當然,下面所示的屬性也是可以的:

pad(types = margin padding, n = 5px)
  padding unit(n, px) if padding in types
  margin unit(n, px) if margin in types

body
  pad()

body
  pad(margin)

body
  apply-mixins = true
  pad(padding, 10) if apply-mixins

生成為:

body {
  padding: 5px;
  margin: 5px;
}
body {
  margin: 5px;
}
body {
  padding: 10px;
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號