# Vue开发基础三:Scss、ElementPlus

一、引入并使用Scss

(1) Scss 介绍

Sass中文网 https://www.sass.hk/docs/

Sass ( Syntactically Awesome StyleSheets) 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)嵌套 (nested rules)、混合 (mixins)、**导入 (inline imports) **等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库(如 Compass)有助于更好地组织管理样式文件,以及更高效地开发项目。
两种语法格式:

  • Scss (Sassy CSS)—— 仅在 CSS3 语法的基础上进行拓展, 以 .scss 作为拓展名
  • Sass —— 缩进格式 (Indented Sass) , 使用 “缩进” 代替 “花括号” 表示属性属于某个选择器,用 “换行” 代替 “分号” 分隔属性,以 .sass 作为拓展名

举例如下:

// Sass语法
$font-stac: Helvetica, sans-serif  //定义变量
$primary-color: #333 //定义变量
body 
  font: 100% $font-stack;
  color: $primary-color; // 没有 {} 和 ;

// Scss语法
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
  font: 100% $font-stack;
  color: $primary-color;
}

// 编译出来的css
body {
  font: 100% Helvetica, sans-serif;
  color: #333;
}

(2) 项目中引入SCSS

  • 安装scss
    • 先安装scss-loader
    • 后安装 node-sass

node-sass是一个库,它将Node.js绑定到LibSass(流行样式表预处理器Sass的C版本)。它允许用户以令人难以置信的速度将.scss文件本地编译为css,并通过连接中间件自动编译

使用中国镜像 cnpm

cnpm install sass-loader --save-dev
cnpm install node-sass --save-dev
scss-loader 安装成功提示
node-sass 安装成功提示

(3) 使用Scss编写页头样式内容

<template>
    <div class="myHearder">
        <img src="@/assets/logo.png" alt="">
        <div class="headerTitle"> 
            <div>WellCome to</div>
            <div class="projectName">{{ strHeader }} </div>
        </div>
        <div class="nav">
            <div>英雄联盟</div>
            <div>王者荣耀</div>
            <div>我的</div>
        </div>
    </div>
</template>

<script setup>
    import { ref } from 'vue';
    const strHeader = ref("MyGame!");
</script>

<!-- scopded 实现组件样式的私有化,不对全局样式造成污染,表示当前style属性只属于当前模块 -->
<!-- lang="scss" 声明使用 scss 语法 -->
<style scoped lang="scss">
    $imgLogoWidth: 60px;
    .myHearder{
        width: 100%;
        display: flex;
        align-items: center;
        color: #333;
        img {
            width: $imgLogoWidth;
            margin: 10px 30px;
        }
        .headerTitle{
            text-align: left;
            .projectName{
                font-size: 2rem;
                font-weight: 800;
            }
        }
        .nav{
            flex-grow: 1;
            display: flex;
            justify-content: right;
            margin-right: 40px;
            div{
                padding: 10px;
                color: #999;
            }
        } 
    }
</style>

(4)预览测试

页头样式预览图

二、安装 element-plus

官方文档
https://element-plus.gitee.io/zh-CN/guide/design.html
https://element-plus.gitee.io/zh-CN/guide/installation.html#%E7%89%88%E6%9C%AC

1、使用国内镜像 cnmp安装 element-plus

cnpm install element-plus --save

2、 安装图标库

从 @element-plus/icons-vue 中导入所有图标并进行全局注册

cnpm install @element-plus/icons-vue

3、main.js 中配置

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

// 引入element-plus及其样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

// 引入ElementPlusIconsVue 
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

const app = createApp(App);
app.use(ElementPlus)
    .use(store).use(router).mount('#app')

// 从 @element-plus/icons-vue 中导入所有图标并进行全局注册
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
}

4、测试UI调用结果

在 TestView.vue 中测试调用

<template>
  <div class="about">
    <h1>This is an Test page</h1>
    <el-row>
      <el-button type="warning" circle>
        <el-icon style="vertical-align: middle">
          <Star />
        </el-icon>
      </el-button>
      <el-button type="primary" circle>
        <el-icon style="vertical-align: middle">
          <Edit />
        </el-icon>
      </el-button>
      <el-button type="success" circle>
        <el-icon style="vertical-align: middle">
          <Check />
        </el-icon>
      </el-button>
      <el-button type="info" circle>
        <el-icon style="vertical-align: middle">
          <Message />
        </el-icon>
      </el-button>
      <el-button type="danger" circle>
        <el-icon style="vertical-align: middle">
          <Search />
        </el-icon>
      </el-button>
    </el-row>
  </div>
</template>
正常调用示例
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容