最近有報一個全棧課程,里面內容比較新穎,其中對scss樣式管理的理念讓我十分喜歡,各種操作讓項目更加具有條理性。
1.@mixin
在一個可以全局適用的scss文件中,姑且叫global.scss,寫入:
@mixin center(){ display:flex; justify-content:center; align-items:center; }
用css的眼光看,這是一個彈性布局,使其中的元素居中對齊,交叉軸方向也是居中對齊。是項目中很常用的代碼,這里將其放入global.scss,並在main.js引入。
那么,在組件中也需要引入global.scss文件!style 加入lang="scss"時,可以直接用scss語法來寫樣式。
使用這里的mixin里面的方案可以使用:
@include center;
那么,使用@include center;的當前元素將適用其中的規則!
2.字體大小管理
在不同瀏覽器中默認的字體像素各有不同,為了統一項目在不同瀏覽器顯示的效果,可以手動將其統一,使用rem與px的比例管理
在global.scss中:
$fontSize:37.5; @function px2rem($px){ @return ($px/$fontSize)+rem }
那么,在組件中引入global.scss文件時,ps:在組件style標簽中引入scss文件語句:
@import "@/styles/common/global.scss"
直接使用函數名加參數統一規格:
.container{ span{ font-size:px2rem(16) } }
在頁面中的像素便是16像素,不會根據瀏覽器變化而變化!
還可以使用transform:scale(0.5)來縮小字體,這適應於大多數情況,需要注意的是,transform需要將對象轉換為行內塊才生效!
3.拋出樣式作為組件參數使用
有些組件庫可以根據傳遞給屬性的樣式值修改樣式體現,比如element-ui的滑塊:
<el-tooltip :content="'Switch value: ' + value" placement="top"> <el-switch v-model="value" active-color="#13ce66" inactive-color="#ff4949" active-value="100" inactive-value="0"> </el-switch> </el-tooltip>
這里的active-color、inactive-color時可以在項目全局上進行統一的。
可以使用scss文件global.scss全局文件拋出該值作為參數使用:
:export{ activeColor:#13CE66; inactiveColor:#ff4949; }
在組件中引入global.scss,注意是在script的標簽里面!!
<script> import switch from "@/styles/common/global.scss" export default{.....} </script>
在computed里返回switch:
computed:{ switch(){ return switch; } }
現在可以將滑塊元素的顏色替換成我們統一管理的樣式:
<el-tooltip :content="'Switch value: ' + value" placement="top">
<el-switch
v-model="value"
:active-color="switch.activeColor" :inactive-color="switch.inactiveColor"
active-value="100"
inactive-value="0">
</el-switch>
</el-tooltip>
,被:export拋出的樣式可以直接被存放在switch里,作為變量被讀取了!
4.改變svg的深淺
在項目中有遇到一個需求:清空輸入內容后的小×是個svg圖片,需要在鼠標hover的時候讓其顏色變深,這里的做法是:
圖片顏色是淺灰色,這里設置的值是0-1的取值范圍,0為純黑色
-webkit-filter:contrast(0.6)
設置svg的樣式顏色可以了解更多-webkit-filter相關的點