欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在weex中愉快的使用scss的方法步驟

 更新時間:2020年01月02日 08:30:44   作者:雨林  
這篇文章主要介紹了在weex中愉快的使用scss的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

weex 是一個可以利用 vue 或者 Rax 編寫跨平臺手機應(yīng)用的框架。為了讓在 weex 有更好的樣式編寫體驗,遂有了以下的方案。

1.初始化一個 weex 工程

npm install weex-toolkit -g
weex create weex-test
cd weex-test
npm run start

這時候就可以在瀏覽器看到界面了

2.接著為了可以在vue里面寫scss, 我們需要安裝兩個東西, sass-loader、node-sass

npm install -D sass-loader@7.3.1 node-sass

在這里要注意一點sass-loader要安裝 7 版本的,不然會報錯,這是因為sass版本高導致的,接下來就可以愉快的寫scss,還要注意一點需要在style標簽加上語言標記scss

<style lang="scss">
</style>

3.為了更好的組織項目結(jié)夠和樣式的統(tǒng)一,我們會把一些主題顏色、字體大小、文字顏色提取到一個scss文件,我們把它命名為variable.scss如下:

$theme-color: blue;

$font-big: 32px;
$font-nor: 28px;
$font-small: 24px;

我們把它放到項目的src/common/scss下, 需要的時候就在vue文件中引用, 比如在 index.vue 頁面引用

<style lang="scss">
@import './common/scss/variable.scss'
div {
  background-color: $theme-color;
}
</style>

這樣就可以讓應(yīng)用的主體部分的樣式保持一致了。

4.在 weex 中有一些屬性不支持簡寫的方式比如 border,還有一些需要寫兩三條的樣式如文字超出隱藏,這種樣式我們可以將它們定義成scss的混合宏(mixin),我們把它命名為mixins.scss

@mixin border($width, $style, $color) {
  border-width: $width;
  border-style: $style;
  border-color: $color;
}
@mixin border-top($width, $style, $color) {
  border-top-width: $width;
  border-top-style: $style;
  border-top-color: $color;
}

我們把它放到項目的src/common/scss下, 需要的時候就在vue文件中引用, 比如在 index.vue 頁面引用

<style lang="scss">
@import './common/scss/variable.scss';
@import './common/scss/mixins.scss';
div {
  @include border(1px, solid, $theme-color);
}
</style>

這樣我們就可以將一些常用的css代碼寫進混合宏了

5.在weex中由于不支持類名的權(quán)重覆蓋,只支持后面的定義的同類樣式覆蓋前面的樣式,這樣就會導致我們不能很好的組織 css 代碼, 又不能利用 scss 的優(yōu)勢代碼層級嵌套。為此我們引入BEM命名方法,并通過scss的混合宏讓其在寫法上支持嵌套,首先我們在 src/common/scss 下創(chuàng)建 bem.scss,并寫入如下代碼:

$namespace: '';
$element-separator: '__';
$modifier-separator: '--';

@mixin b($block) {
  @if $namespace == '' {
    $B: $block !global;
  } @else {
    $B: $namespace+'-'+$block !global;
  }

  @if '#{&}' == '' {
    .#{$B} {
      @content;
    }
  } @else {
    @at-root {
      .#{$B} {
        @content;
      }
    }
  }

}

@mixin e($element) {
  $E: $element !global;
  $selector: &;

  @if str-index('#{&}', '__') {
    @at-root {
      .#{$B + $element-separator + $element} {
        @content;
      }
    }
  } @else {
    @at-root {
      #{&+$element-separator+$E} {
        @content;
      }
    }
  }

}
@mixin m($modifier) 
  $M: $modifier !global;
  @at-root {
    #{&+$modifier-separator+$M} {
      @content;
    }
  }
}

由于weex不支持層級所以我們只能用@at-root將所有類名提升到第一層。接著我們在index.vue中引入這個文件:

<template>
  <div class="header">
    <div :class="['header__back', `header__back--${status}`]"></div>
    <div class="header__content"></div>
    <div class="header__other"></div>
  </div>
</template>
<script>
export default {
  data(){
    return {
      status: 'black'
    }
  }
}
</script>
<style lang="scss">
@import './common/scss/variable.scss';
@import './common/scss/mixins.scss';
@import './common/scss/bem.scss'

@include b('header') {
  height: 100px;
  width: 750px;
  flex-direction: row;
  align-items: center;
  @include e('back') {
    flex: 1;
    @include m('black') {
      background-color: #000000;
    }
    @include m('white') {
      background-color: #ffffff;
    }
  }
  @include e('content') {
    flex: 3;
  }
  @include e('other') {
    flex: 1;
  }
}
</style>

編譯后的樣式為:

.header {
  height: 100px;
  width: 750px;
  flex-direction: row;
  align-items: center;
}
.header__back {
  flex: 1;
}
.header__back--black {
  background-color: #000000;
}
.header__back--white {
  background-color: #ffffff;
}
.header__content {
  flex: 3;
}
.header__other {
  flex: 1;
}

這樣看起來用scss的寫法代碼的結(jié)構(gòu)性和可維護性就會更好一些。

6.由于這三個文件都是需要在每一個vue文件引入的,為了偷一下懶,我們可以用sass-resources-loader 這個loader來讓每一個vue文件都注入這幾個scss文件

npm install -D sass-resources-loader

然后修改根目錄下的 configs/utils.js ,找到如下,進行更改

 const generateLoaders = (loader, loaderOptions) => {
  let loaders = options.useVue ? [cssLoader] : []
  if (options.usePostCSS) {
   loaders.push(postcssLoader)
  }
  if (loader) {
   loaders.push({
    loader: loader + '-loader',
    options: Object.assign({}, loaderOptions, {
     sourceMap: options.sourceMap
    })
   })
  }

  //這里加入以下代碼
  if (loader === 'sass') {
   loaders.push({
    loader: 'sass-resources-loader',
    options: {
     resources: [
      path.resolve(__dirname, '../src/common/scss/variable.scss'),
      path.resolve(__dirname, '../src/common/scss/mixins.scss'),
      path.resolve(__dirname, '../src/common/scss/bem.scss')
     ]
    }
   })
  }

  if (options.useVue) {
   return ['vue-style-loader'].concat(loaders)
  }
  else {
   return loaders
  }
 }

這樣就可以在weex工程中愉快的編寫scss了

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Javascript異步流程控制之串行執(zhí)行詳解

    Javascript異步流程控制之串行執(zhí)行詳解

    這篇文章主要給大家介紹了關(guān)于Javascript異步流程控制之串行執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JavaScript防抖與節(jié)流超詳細全面講解

    JavaScript防抖與節(jié)流超詳細全面講解

    在開發(fā)中我們經(jīng)常會遇到一些高頻操作,比如:鼠標移動,滑動窗口,鍵盤輸入等等,節(jié)流和防抖就是對此類事件進行優(yōu)化,降低觸發(fā)的頻率,以達到提高性能的目的。本文就教大家如何實現(xiàn)一個讓面試官拍大腿的防抖節(jié)流函數(shù),需要的可以參考一下
    2022-10-10
  • 關(guān)于在IE下的一個安全BUG --可用于跟蹤用戶的系統(tǒng)鼠標位置

    關(guān)于在IE下的一個安全BUG --可用于跟蹤用戶的系統(tǒng)鼠標位置

    本篇文章小編將為大家介紹,關(guān)于在IE下的一個安全BUG --可用于跟蹤用戶的系統(tǒng)鼠標位置。需要的朋友可以參考一下
    2013-04-04
  • Javascript實現(xiàn)鼠標框選操作  不是點擊選取

    Javascript實現(xiàn)鼠標框選操作 不是點擊選取

    這篇文章主要介紹了Javascript實現(xiàn)鼠標框選操作,不是點擊選取,利用鼠標進行框選,感興趣的小伙伴們可以參考一下
    2016-04-04
  • js實現(xiàn)簡易購物車功能

    js實現(xiàn)簡易購物車功能

    這篇文章主要為大家詳細介紹了js實現(xiàn)簡易購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JavaScript模板引擎實現(xiàn)原理實例詳解

    JavaScript模板引擎實現(xiàn)原理實例詳解

    這篇文章主要介紹了JavaScript模板引擎實現(xiàn)原理,結(jié)合實例形式詳細分析了JavaScript模板引擎原理、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-12-12
  • Javascript ES6中對象類型Sets的介紹與使用詳解

    Javascript ES6中對象類型Sets的介紹與使用詳解

    這篇文章主要給大家介紹了關(guān)于Javascript ES6中Sets的介紹與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-07-07
  • 前端用echarts繪制含有多個分層的波形圖關(guān)鍵代碼

    前端用echarts繪制含有多個分層的波形圖關(guān)鍵代碼

    每次實現(xiàn)各種圖表時,總會用到echarts,不得不說確實是一個非常好用的開源庫,這篇文章主要給大家介紹了關(guān)于前端用echarts繪制含有多個分層的波形圖的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 利用了jquery的ajax實現(xiàn)二級聯(lián)互動菜單

    利用了jquery的ajax實現(xiàn)二級聯(lián)互動菜單

    二級聯(lián)互動菜單,利用了jquery的ajax實現(xiàn),具體實現(xiàn)如下,喜歡的朋友可以參考下
    2013-12-12
  • 談?wù)勎覍avaScript DOM事件的理解

    談?wù)勎覍avaScript DOM事件的理解

    DOM與事件是JavaScript最核心的組成部分之一,他們賦予了頁面無限的想象空間,你根本無法離開他們,否則js將寸步難行。本文給大家分享我對javascript dom事件的了解,對javascript dom事件相關(guān)知識感興趣的朋友一起學習吧
    2015-12-12

最新評論