From 234923c38a71d567d962a550c6eee87df491a73b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=A5=A0?= <406803045@qq.com>
Date: Wed, 15 Apr 2020 22:02:19 +0800
Subject: [PATCH] sass
---
README.md | 79 +++++++++++++++++++++++++++++++++--
src/assets/css/index.scss | 51 ++++++++++++++++++++++
src/assets/css/mixin.scss | 36 ++++++++++++++++
src/assets/css/variables.scss | 3 ++
4 files changed, 165 insertions(+), 4 deletions(-)
create mode 100644 src/assets/css/mixin.scss
create mode 100644 src/assets/css/variables.scss
diff --git a/README.md b/README.md
index 408411d..c519fa6 100644
--- a/README.md
+++ b/README.md
@@ -6,15 +6,19 @@
[demo](https://solui.cn/vue-h5-template/#/)建议手机端查看
+### Node 版本要求
+`Vue CLI` 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+)。你可以使用 [nvm](https://github.com/nvm-sh/nvm) 或 [nvm-windows](https://github.com/coreybutler/nvm-windows) 在同一台电脑中管理多个 Node 版本。
+
+本示例 Node.js 12.14.1
目录
- [√ 配置多环境变量](#env)
- [√ rem 适配方案](#rem)
-- Vue-cli4
-- VantUI 组件按需加载
-- Sass
+- [√ Vue-cli4](https://cli.vuejs.org/zh/guide/)
+- [√ VantUI 组件按需加载](#vant)
+- [√ Sass](#sass)
- Webpack 4
- Vuex
- Axios 封装
@@ -45,6 +49,7 @@
以 `VUE_APP_` 开头的变量,在代码中可以通过 `process.env.VUE_APP_` 访问。
比如,`VUE_APP_ENV = 'development'` 通过`process.env.VUE_APP_ENV` 访问
+ 除了 `VUE_APP_*` 变量之外,在你的应用代码中始终可用的还有两个特殊的变量`NODE_ENV` 和`BASE_URL`
在项目根目录中新建.env
@@ -141,7 +146,7 @@ module.exports = {
很多小伙伴会问我,适配的问题。
-举个例子:设计给了你一张 750px \* 1334px 图片,在 iPhone6 上铺面屏幕,其他机型适配。
+举个例子:设计给了你一张 750px \* 1334px 图片,在 iPhone6 上铺满屏幕,其他机型适配。
- 当`rootValue: 70` , 样式 `width: 750px;height: 1334px;` 图片会撑满 iPhone6 屏幕,这个时候切换其他机型,图片也会跟着撑满。
- 当`rootValue: 37.5` 的时候,样式 `width: 375px;height: 667px;` 图片会撑满 iPhone6 屏幕。
@@ -169,6 +174,72 @@ module.exports = {
[▲ 回顶部](#top)
+### ✅ VantUI 组件按需加载
+
+项目采用[自动按需引入组件 (推荐)](https://youzan.github.io/vant/#/zh-CN/quickstart#fang-shi-yi.-zi-dong-an-xu-yin-ru-zu-jian-tui-jian)
+
+下面安装插件介绍:
+
+[babel-plugin-import](https://github.com/ant-design/babel-plugin-import) 是一款 `babel` 插件,它会在编译过程中将 `import` 的写法自动转换为按需引入的方式
+
+# 安装插件
+
+```javascript
+npm i babel-plugin-import -D
+
+// 对于使用 babel7 的用户,可以在 babel.config.js 中配置
+module.exports = {
+ presets: [['@vue/cli-plugin-babel/preset', {useBuiltIns: 'entry'}]],
+ plugins: [
+ [
+ 'import',
+ {
+ libraryName: 'vant',
+ libraryDirectory: 'es',
+ style: true
+ },
+ 'vant'
+ ]
+ ]
+}
+```
+
+# 使用组件
+
+项目在 `src/plugins/vant.js` 下统一管理组件,用哪个引入哪个,无需在页面里重复引用
+
+```javascript
+// 按需全局引入 vant组件
+import Vue from 'vue'
+import {Button, List, Cell, Tabbar, TabbarItem} from 'vant'
+Vue.use(Button)
+Vue.use(Cell)
+Vue.use(List)
+Vue.use(Tabbar).use(TabbarItem)
+
+```
+[▲ 回顶部](#top)
+
+### ✅ Sass
+
+首先 你可能会遇到 `node-sass` 安装不成功,别放弃多试几次!!!
+
+在 `src/assets/css/`文件夹下包含了三个文件
+- `index.scss` 主入口,主要引入其他两个scss文件,和公共样式
+- `variables.scss` 定义变量
+- `mixin.scss` 定义 `mixin` 方法
+
+你可以直接在vue文件下写 sass 语法
+
+```html
+
+
+```
+
+[▲ 回顶部](#top)
+
#### 总结
因为项目刚刚构建起来,后面还会持续更新,实际使用过程中一定还有很多问题,如果文章中有错误希望能够被指正,一起成长
diff --git a/src/assets/css/index.scss b/src/assets/css/index.scss
index 8f831f4..dc41a5b 100644
--- a/src/assets/css/index.scss
+++ b/src/assets/css/index.scss
@@ -1,3 +1,54 @@
+@import './variables.scss';
+@import './mixin.scss';
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
.app-container{
padding-bottom:50px
}
\ No newline at end of file
diff --git a/src/assets/css/mixin.scss b/src/assets/css/mixin.scss
new file mode 100644
index 0000000..327b6d4
--- /dev/null
+++ b/src/assets/css/mixin.scss
@@ -0,0 +1,36 @@
+// mixin
+// 清除浮动
+@mixin clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
+
+// 多行隐藏
+@mixin textoverflow($clamp:1) {
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ -o-text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: $clamp;
+ /*! autoprefixer: ignore next */
+ -webkit-box-orient: vertical;
+}
+
+//flex box
+@mixin flexbox($jc:space-between, $ai:center, $fd:row, $fw:nowrap) {
+ display: flex;
+ display: -webkit-flex;
+ flex: 1;
+ justify-content: $jc;
+ -webkit-justify-content: $jc;
+ align-items: $ai;
+ -webkit-align-items: $ai;
+ flex-direction: $fd;
+ -webkit-flex-direction: $fd;
+ flex-wrap: $fw;
+ -webkit-flex-wrap: $fw;
+}
diff --git a/src/assets/css/variables.scss b/src/assets/css/variables.scss
new file mode 100644
index 0000000..2f85e3e
--- /dev/null
+++ b/src/assets/css/variables.scss
@@ -0,0 +1,3 @@
+
+// variables
+$background-color: #f8f8f8;