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

Vue中使用sass實現(xiàn)換膚功能

 更新時間:2018年09月07日 15:30:30   作者:anjingxiansheng  
這篇文章主要介紹了Vue中使用sass實現(xiàn)換膚功能,實現(xiàn)此功能用到了三個主要文件(base.scss、mixin.scss、varibale.scss),需要的朋友可以參考下

先給大家展示下效果圖:

 

先給大家看一下目錄和主要文件:

解釋一下主要文件:

base.scss: 一些通用樣式文件。

mixin.scss: 定義mixin方法的文件。

varibale.scss: 顏色,字體,背景的配置文件

以下就拿封裝的head組件代碼來展示以下實現(xiàn)邏輯,現(xiàn)在大家主要是來理解,不要著急復制代碼,在文章最后會貼出三個主要文件的代碼的。

為什么會在 background:$background-color-theme; 地方標注錯誤?

如果之前用過sass的同學可能會知道,這樣雖然實現(xiàn)了css樣式變量化,但是后期沒有辦法作出靈活更改的。

所以需要把設置背景顏色封裝成一個mixin方法(包括字體大小,字體顏色,都需要進行封裝)

請看mixin.scss中的代碼:

主要原理:

通過設置html的attribute屬性在封裝的函數(shù)中進行判斷,進行相應的設置不同的顏色

css中 [ ] 可以識別到在html標簽上設置的屬性,所以在html上對應屬性發(fā)生變化時,就會執(zhí)行相應的樣式,

這一步有點類似于平時給div添加一個.active屬性,css自動執(zhí)行相應樣式。

更換主題時的具體操作:

下邊是主要文件完整的代碼

base.scss示例代碼:

@charset "utf-8";
$font_default_color:$font-color-shallow3;
$font_default_size:$font_medium_s;
*{
 margin:0;padding:0;box-sizing:border-box;color:$font_default_color;
 /*@include font-dpr($font_default_size);*/
}
a{text-decoration:none;color:$font_default_color;}
.sub-page { //routerView
 position: fixed;top: 0;bottom: 0;width: 100%;background:#fff;right: 0;left: 0;z-index: 5;
}
#content{width:100%;position:absolute;@include px2rem(top,88px);bottom:0;overflow-x:auto;}
.width{
 width:100%;
}
/*豎向居中*/
.table-cell{
 display:table-cell;vertical-align:middle;text-align:center;
}
.middle{
 vertical-align:middle;
}
/*彈性盒*/
.flex{
 display: inline-flex;display: -webkit-flex;display: flex;
}
/*彈性盒-子元素可豎向居中*/
.flex-middle{
 display :flex; display:-webkit-flex; align-items:center; -webkit-align-items:center; justify-content:center ;
}
.tl{
 text-align:left;
}
.tc{
 text-align:center;
}
.tr{
 text-align:right;
}
.fl{
 float:left;
}
.fr{
 float:right;
}
.clear::after{
 /*原理: overflow!=visible ;display!=block;float!=none;position!=static||relative 都可為元素創(chuàng)建BFC;消除邊距重疊或者浮動產(chǎn)生的影響*/
 content:'';overflow:hidden;clear:both;
}

mixin.scss示例代碼:

@charset "utf-8";
@import "./variable";/*引入配置*/
@mixin font_size($size){/*通過該函數(shù)設置字體大小,后期方便統(tǒng)一管理;*/
 @include font-dpr($size);
}
@mixin font_color($color){/*通過該函數(shù)設置字體顏色,后期方便統(tǒng)一管理;*/
 color:$color;
 [data-theme="theme1"] & {
 color:$font-color-theme1;
 }
 [data-theme="theme2"] & {
 color:$font-color-theme2;
 }
 [data-theme="theme3"] & {
 color:$font-color-theme3;
 }
}
@mixin bg_color($color){/*通過該函數(shù)設置主題顏色,后期方便統(tǒng)一管理;*/
 background-color:$color;
 [data-theme="theme1"] & {
 background-color:$background-color-theme1;
 }
 [data-theme="theme2"] & {
 background-color:$background-color-theme2;
 }
 [data-theme="theme3"] & {
 background-color:$background-color-theme3;
 }
}
/*px轉rem*/
@mixin px2rem($property,$px,$px2:false,$px3:false,$px4:false){
 $rem:75px;/* 設計稿尺寸/10 */
 @if $px and $px2 and $px3 and $px4 {
 #{$property}: ($px / $rem) + rem ($px2 / $rem) + rem ($px3 / $rem) + rem ($px4 / $rem) + rem;
 }
 @else if $px and $px2 {
 #{$property}: ($px / $rem) + rem ($px2 / $rem) + rem;
 //[data-model='pad'] & {#{$property}: ($px * 1.4 / $rem) + rem ($px2 * 1.4 / $rem) + rem;}
 }
 @else{
 #{$property}: ($px / $rem) + rem!important;
 //[data-model='pad'] & {#{$property}: ($px * 1.4 / $rem) + rem;}
 }
}
/*根據(jù)dpr計算font-size*/
@mixin font-dpr($font-size){
 font-size: $font-size;
 //[data-model="pad"] & { font-size: $font-size * 1.4; }
 [data-dpr="2"] & { font-size: $font-size * 2;}
 [data-dpr="3"] & { font-size: $font-size * 3;}
}
/*彈性盒屬性*/
%flexbox{
 display: inline-flex;display: -webkit-flex;display: flex;
}
/*彈性盒比例*/
@mixin flex($num:1){
 -webkit-box-flex:$num;-moz-box-flex:$num;-webkit-flex:$num;-ms-flex:$num;flex:$num;
}
/*超行溢出顯示省略號*/
@mixin overflow($num:1,$fontSize:0,$lineHeight:1.5){
 display: -webkit-box;-webkit-line-clamp:$num; overflow: hidden;
 /*! autoprefixer: off */
 -webkit-box-orient: vertical;
 /* autoprefixer: on */
 @if $fontSize!=0 and $lineHeight{/*高度需要撐開*/
 line-height:$lineHeight;
 @if $lineHeight < 1.2 {
  line-height:1.2; /*最小需要1.2,否則在部分安卓機下第$num+1行會頂部漏出*/
 }
 height: $num * $fontSize * $lineHeight;
 [data-dpr="2"] & { height: $num * $fontSize * $lineHeight * 2!important;}
 [data-dpr="3"] & { height: $num * $fontSize * $lineHeight * 3!important;}
 }
}
//transition兼容寫法
@mixin transition($content:all .2s){
 -moz-transition: $content;
 -webkit-transition: $content;
 -o-transition: $content;
 transition: $content;
}
//transfrom兼容
@mixin translateX($num:-50%){
 -ms-transform: translateX($num);
 -moz-transform: translateX($num);
 -webkit-transform: translateX($num);
 -o-transform: translateX($num);
 transform: translateX($num);
}
@mixin translateY($num:-50%){
 -ms-transform: translateY($num);
 -moz-transform: translateY($num);
 -webkit-transform: translateY($num);
 -o-transform: translateY($num);
 transform: translateY($num);
}
@mixin rotate($deg:90deg){
 -ms-transform:rotate($deg);
 -moz-transform:rotate($deg);
 -webkit-transform:rotate($deg);
 -o-transform:rotate($deg);
 transform:rotate($deg);
}

variable.scss示例代碼:

//顏色定義規(guī)范
$background-color-theme: #3f8e4d;//背景主題顏色默認
$background-color-theme1: red;//背景主題顏色1
$background-color-theme2: #652BF5;//背景主題顏色2
$background-color-theme3: deepskyblue;//背景主題顏色3
$background-color-themesec: #edc148;//背景次要主題顏色
$font-color-theme : #3f8e4d;//字體主題顏色默認
$font-color-theme1 : red;//字體主題顏色1
$font-color-theme2 : #652BF5;//字體主題顏色2
$font-color-theme3 : deepskyblue;//字體主題顏色3
$font-color-themesec : #edc148;//字體次要主題顏色
$font-color-shallow0 : #000;
$font-color-shallow1 : #111;
$font-color-shallow2 : #222;
$font-color-shallow3 : #333;
$font-color-shallow4 : #444;
$font-color-shallow5 : #555;
$font-color-shallow6 : #666;
$font-color-shallow7 : #777;
$font-color-shallow8 : #888;
$font-color-shallow9 : #999;
$font-color-shallowdb : #dbdbdb;
//字體定義規(guī)范
$font_little_s:10px;
$font_little:12px;
$font_medium_s:14px;
$font_medium:16px;
$font_large_s:18px;
$font_large:20px;

mine.vue中更換主題時的操作代碼

<template>
 <div id="bookcaselist">
 <v-head :title="title" :showBack="showBack"></v-head>
 <div id="content">
  <p @click="changeTheme('theme1')"></p>
  <p @click="changeTheme('theme2')"></p>
  <p @click="changeTheme('theme3')"></p>
 </div>
 <v-foot :activeIndex="3"></v-foot>
 </div>
</template>
<script>
export default {
 name: 'mine',
 data () {
 return {
  title: '我的',
  showBack: false
 }
 },
 methods: {
 changeTheme (theme) {
  window.document.documentElement.setAttribute('data-theme', theme)
 }
 },
 components: {
 }
}
</script>
<style scoped="" lang="scss">
 p{
 @include px2rem(width,100px);
 @include px2rem(height,100px);
 @include px2rem(margin,20px);
 float:left;
 }
 p:first-child{
 background-color:red;
 }
 p:nth-child(2){
 background-color:#652BF5;
 }
 p:last-child{
 background-color:deepskyblue;
 }
</style>

其實過程和邏輯都比較簡單,大家理解一下,有不明白的地方在下方評論區(qū)評論,有錯誤的地方也歡迎大家指出,看到后我會回復

總結

以上所述是小編給大家介紹的Vue中使用sass實現(xiàn)換膚功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • Vue.directive 自定義指令的問題小結

    Vue.directive 自定義指令的問題小結

    這篇文章主要介紹了Vue.directive 自定義指令的問題小結,需要的朋友可以參考下
    2018-03-03
  • vue3.0中sass全局的使用過程

    vue3.0中sass全局的使用過程

    這篇文章主要介紹了vue3.0中sass全局的使用過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue下使用nginx刷新頁面404的問題解決

    vue下使用nginx刷新頁面404的問題解決

    這篇文章主要介紹了vue下使用nginx刷新頁面404的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Vue3+Vite項目按需自動導入配置以及一些常見問題修復

    Vue3+Vite項目按需自動導入配置以及一些常見問題修復

    Vite是一種新型前端構建工具,能夠顯著提升前端開發(fā)體驗,下面這篇文章主要給大家介紹了關于Vue3+Vite項目按需自動導入配置以及一些常見問題修復的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • nuxt使用vuex存儲及獲取用戶信息踩坑的解決

    nuxt使用vuex存儲及獲取用戶信息踩坑的解決

    這篇文章主要介紹了nuxt使用vuex存儲及獲取用戶信息踩坑的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3通過JSON渲染ElementPlus表單的流程步驟

    Vue3通過JSON渲染ElementPlus表單的流程步驟

    這篇文章主要介紹了Vue3通過JSON渲染ElementPlus表單的流程步驟,文中通過代碼示例和圖文給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-10-10
  • 在Vue 中使用Typescript的示例代碼

    在Vue 中使用Typescript的示例代碼

    這篇文章主要介紹了在Vue 中使用Typescript的示例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • 使用vue2實現(xiàn)購物車和地址選配功能

    使用vue2實現(xiàn)購物車和地址選配功能

    這篇文章主要介紹了使用vue2實現(xiàn)購物車和地址選配功能,本文通過實例代碼相結合的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2018-03-03
  • Vue 應用中結合vux使用微信 jssdk的方法

    Vue 應用中結合vux使用微信 jssdk的方法

    今天小編就為大家分享一篇Vue 應用中結合vux使用微信 jssdk的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue使用引用庫中的方法附源碼

    vue使用引用庫中的方法附源碼

    當vue使用庫中的getvalue方法時,需要調用相關方法,通過定義ref=“”,使用this.$refs.exampleEditor._setValue(''),具體示例代碼參考下本文,對vue使用引用庫中的方法,感興趣的朋友一起看看吧
    2021-07-07

最新評論