亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue中使用sass實現換膚功能

2019-11-19 12:59:33
字體:
來源:轉載
供稿:網友

先給大家展示下效果圖:

 

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

解釋一下主要文件:

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

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

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

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

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

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

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

請看mixin.scss中的代碼:

主要原理:

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

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

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

更換主題時的具體操作:

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

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 都可為元素創建BFC;消除邊距重疊或者浮動產生的影響*/ content:'';overflow:hidden;clear:both;}

mixin.scss示例代碼:

@charset "utf-8";@import "./variable";/*引入配置*/@mixin font_size($size){/*通過該函數設置字體大小,后期方便統一管理;*/ @include font-dpr($size);}@mixin font_color($color){/*通過該函數設置字體顏色,后期方便統一管理;*/ 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){/*通過該函數設置主題顏色,后期方便統一管理;*/ 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;} }}/*根據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示例代碼:

//顏色定義規范$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;//字體定義規范$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>

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情在线播放| 亚洲一区二区免费| 91精品国产高清自在线看超| 在线成人激情视频| 精品国产拍在线观看| 亚洲国产精品va在线看黑人| 亚洲视频视频在线| 欧美极品美女电影一区| 欧美人在线视频| 久久视频在线免费观看| 精品亚洲一区二区三区四区五区| 亚洲欧美综合区自拍另类| 欧美亚洲国产视频小说| 国产精品∨欧美精品v日韩精品| 国产97免费视| 久久久久久有精品国产| 成人午夜在线视频一区| 国产成人+综合亚洲+天堂| 精品国产福利在线| 国产在线观看一区二区三区| 国产91在线播放九色快色| 日韩有码在线观看| 亚洲精品国产品国语在线| 在线日韩欧美视频| 精品国产乱码久久久久久虫虫漫画| 中文字幕国产亚洲2019| 国产精品视频久久久| 国产精品露脸av在线| 国产91在线高潮白浆在线观看| 亚洲免费成人av电影| 97久久久免费福利网址| 国产欧美va欧美va香蕉在| 国产精品视频一区国模私拍| 国产丝袜一区二区三区| 国产亚洲精品激情久久| 欧美激情精品久久久久久黑人| 久久全球大尺度高清视频| 亚洲bt天天射| 久久中文字幕在线视频| 亚洲第一二三四五区| 成人在线一区二区| 俺去了亚洲欧美日韩| 成人a在线观看| 92国产精品久久久久首页| 美女扒开尿口让男人操亚洲视频网站| 在线观看欧美日韩| 久久久久这里只有精品| 久久噜噜噜精品国产亚洲综合| www.欧美免费| 国产精品久久9| 亚洲精品久久久久久下一站| 福利视频第一区| 国产成人aa精品一区在线播放| 国产一区二区三区毛片| 欧美激情视频网站| 日韩极品精品视频免费观看| 久久久91精品国产一区不卡| 亚洲欧美一区二区精品久久久| 疯狂欧美牲乱大交777| 丁香五六月婷婷久久激情| 欧美日韩免费在线观看| 亚洲成人999| 日韩av电影免费观看高清| 国产情人节一区| 国产精品wwww| 精品久久久久久久久久ntr影视| 亚洲乱码一区av黑人高潮| 精品国模在线视频| 久久久久久久久网站| 国产一区二中文字幕在线看| 中文字幕日韩av综合精品| 亚洲精品久久久久中文字幕二区| 国产成人精品视| 欧美激情在线视频二区| 欧美日韩国产一中文字不卡| 国产成人综合精品| 日本道色综合久久影院| 国产一区红桃视频| 久久久爽爽爽美女图片| 91成人精品网站| xxxx性欧美| 自拍偷拍亚洲一区| 日韩精品在线视频| 久久手机精品视频| 欧亚精品在线观看| 欧美日韩在线免费| 亚洲第一男人天堂| 中文字幕亚洲专区| 国产精品美腿一区在线看| 成人精品在线观看| 丝袜亚洲另类欧美重口| 久久免费精品视频| 亚洲欧美国产一区二区三区| 91视频-88av| 中文字幕亚洲一区二区三区五十路| 成人xvideos免费视频| 日韩电影中文 亚洲精品乱码| 九九热视频这里只有精品| 久久久女女女女999久久| 国产精品美女呻吟| 国产精品嫩草影院久久久| 欧美猛男性生活免费| 成人免费xxxxx在线观看| 国产日韩欧美自拍| 欧洲永久精品大片ww免费漫画| 中文字幕精品—区二区| 精品夜色国产国偷在线| 亚洲天堂免费在线| 久久久久久久久电影| 久久伊人精品天天| 中文字幕欧美日韩va免费视频| 亚洲欧美另类人妖| 国产精品69精品一区二区三区| 国产精品一区二区三区久久久| 性夜试看影院91社区| 日本久久中文字幕| 日韩在线免费高清视频| 中文字幕久久亚洲| 91亚洲永久免费精品| 亚洲人成欧美中文字幕| 91国在线精品国内播放| 久久久久久久国产| 国产亚洲精品久久久久动| 最好看的2019的中文字幕视频| 日韩一区视频在线| 久久av在线看| 伊人久久男人天堂| 在线视频中文亚洲| 国产精品一区二区三区在线播放| 91国产美女视频| 在线精品高清中文字幕| 久久夜色精品国产欧美乱| 精品国产老师黑色丝袜高跟鞋| 亚洲mm色国产网站| 国产精品大片wwwwww| 国产精品视频网| 最近2019中文字幕大全第二页| 亚洲综合在线小说| 欧美日韩激情美女| 国产精品久久电影观看| 亚洲乱码国产乱码精品精天堂| 色狠狠久久aa北条麻妃| 国产精品第一区| 国产98色在线| 国色天香2019中文字幕在线观看| 欧美在线视频一区| www.日韩不卡电影av| 黑人极品videos精品欧美裸| 国产精品av电影| 日韩av免费在线| 久久久www成人免费精品张筱雨| 中文字幕少妇一区二区三区| 国内精品久久久久久久久| 国产999在线观看| 日韩欧美国产激情| 亚洲最大福利视频网站| 久久久久久一区二区三区| 亚洲精品98久久久久久中文字幕| 久久久女女女女999久久| 成人做爰www免费看视频网站| 欧美日韩成人在线播放| 精品免费在线观看| 日韩视频中文字幕| 国产精品久久久久久久电影|