Commit 54dab3c652315f713b26e1204c1ea6476acbe88f

Authored by liuqimichale
1 parent 12dd15d5

导入公用css

build/utils.js
@@ -60,7 +60,16 @@ exports.cssLoaders = function (options) { @@ -60,7 +60,16 @@ exports.cssLoaders = function (options) {
60 postcss: generateLoaders(), 60 postcss: generateLoaders(),
61 less: generateLoaders('less'), 61 less: generateLoaders('less'),
62 sass: generateLoaders('sass', { indentedSyntax: true }), 62 sass: generateLoaders('sass', { indentedSyntax: true }),
63 - scss: generateLoaders('sass'), 63 + scss: generateLoaders('sass').concat({
  64 + loader: 'sass-resources-loader',
  65 + options: {
  66 + resources: [
  67 + path.resolve(__dirname,'../src/assets/style/mixin.scss'),
  68 + //path.resolve(__dirname,'../src/assets/css/variables.scss')
  69 + ]
  70 + }
  71 + }),
  72 +
64 stylus: generateLoaders('stylus'), 73 stylus: generateLoaders('stylus'),
65 styl: generateLoaders('stylus') 74 styl: generateLoaders('stylus')
66 } 75 }
build/webpack.base.conf.js
@@ -64,6 +64,16 @@ module.exports = { @@ -64,6 +64,16 @@ module.exports = {
64 limit: 10000, 64 limit: 10000,
65 name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 65 name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
66 } 66 }
  67 + },
  68 + {
  69 + test: /\.scss$/,
  70 + use: [{
  71 + loader: "style-loader" // creates style nodes from JS strings
  72 + }, {
  73 + loader: "css-loader" // translates CSS into CommonJS
  74 + }, {
  75 + loader: "sass-loader" // compiles Sass to CSS
  76 + }]
67 } 77 }
68 ] 78 ]
69 }, 79 },
package.json
@@ -10,6 +10,9 @@ @@ -10,6 +10,9 @@
10 "build": "node build/build.js" 10 "build": "node build/build.js"
11 }, 11 },
12 "dependencies": { 12 "dependencies": {
  13 + "node-sass": "^4.11.0",
  14 + "sass-loader": "^7.1.0",
  15 + "sass-resources-loader": "^2.0.0",
13 "vue": "^2.5.2" 16 "vue": "^2.5.2"
14 }, 17 },
15 "devDependencies": { 18 "devDependencies": {
@@ -24,12 +27,13 @@ @@ -24,12 +27,13 @@
24 "babel-preset-stage-2": "^6.22.0", 27 "babel-preset-stage-2": "^6.22.0",
25 "chalk": "^2.0.1", 28 "chalk": "^2.0.1",
26 "copy-webpack-plugin": "^4.0.1", 29 "copy-webpack-plugin": "^4.0.1",
27 - "css-loader": "^0.28.0", 30 + "css-loader": "^0.28.11",
28 "extract-text-webpack-plugin": "^3.0.0", 31 "extract-text-webpack-plugin": "^3.0.0",
29 "file-loader": "^1.1.4", 32 "file-loader": "^1.1.4",
30 "friendly-errors-webpack-plugin": "^1.6.1", 33 "friendly-errors-webpack-plugin": "^1.6.1",
31 "html-webpack-plugin": "^2.30.1", 34 "html-webpack-plugin": "^2.30.1",
32 "node-notifier": "^5.1.2", 35 "node-notifier": "^5.1.2",
  36 + "node-sass": "^4.11.0",
33 "optimize-css-assets-webpack-plugin": "^3.2.0", 37 "optimize-css-assets-webpack-plugin": "^3.2.0",
34 "ora": "^1.2.0", 38 "ora": "^1.2.0",
35 "portfinder": "^1.0.13", 39 "portfinder": "^1.0.13",
@@ -37,8 +41,12 @@ @@ -37,8 +41,12 @@
37 "postcss-loader": "^2.0.8", 41 "postcss-loader": "^2.0.8",
38 "postcss-url": "^7.2.1", 42 "postcss-url": "^7.2.1",
39 "rimraf": "^2.6.0", 43 "rimraf": "^2.6.0",
  44 + "sass-loader": "^7.1.0",
40 "semver": "^5.3.0", 45 "semver": "^5.3.0",
41 "shelljs": "^0.7.6", 46 "shelljs": "^0.7.6",
  47 + "style-loader": "^0.23.1",
  48 + "stylus": "^0.54.5",
  49 + "stylus-loader": "^3.0.2",
42 "uglifyjs-webpack-plugin": "^1.1.1", 50 "uglifyjs-webpack-plugin": "^1.1.1",
43 "url-loader": "^0.5.8", 51 "url-loader": "^0.5.8",
44 "vue-loader": "^13.3.0", 52 "vue-loader": "^13.3.0",
src/App.vue
1 <template> 1 <template>
2 <div id="app"> 2 <div id="app">
3 - <img src="./assets/logo.png">  
4 - <HelloWorld/> 3 + <geomagnetism v-if="urlLink ===1"/>
  4 + <screen v-if="urlLink ===2"/>
5 </div> 5 </div>
6 </template> 6 </template>
7 7
8 <script> 8 <script>
9 -import HelloWorld from './components/HelloWorld' 9 +import geomagnetism from './components/geomagnetism'
  10 +import screen from './components/screen'
10 11
11 export default { 12 export default {
12 name: 'App', 13 name: 'App',
13 components: { 14 components: {
14 - HelloWorld 15 + geomagnetism, screen
  16 + },
  17 + data() {
  18 + return {
  19 + urlLink: ''
  20 + }
  21 + },
  22 + created() {
  23 + this.urlLink = 1
15 } 24 }
16 } 25 }
17 </script> 26 </script>
@@ -23,6 +32,5 @@ export default { @@ -23,6 +32,5 @@ export default {
23 -moz-osx-font-smoothing: grayscale; 32 -moz-osx-font-smoothing: grayscale;
24 text-align: center; 33 text-align: center;
25 color: #2c3e50; 34 color: #2c3e50;
26 - margin-top: 60px;  
27 } 35 }
28 </style> 36 </style>
src/assets/style/mixin.scss 0 → 100644
  1 +
  2 +//清楚浮动
  3 +@mixin clearfix() {
  4 + &:before,
  5 + &:after {
  6 + content: "";
  7 + display: table;
  8 + }
  9 + &:after {
  10 + clear: both;
  11 + }
  12 +}
  13 +
  14 +//圆角边框
  15 +@mixin border-radius($radius) {
  16 + -webkit-border-radius: $radius;
  17 + -moz-border-radius: $radius;
  18 + -ms-border-radius: $radius;
  19 + border-radius: $radius;
  20 +}
  21 +
  22 +// 透明度
  23 +@mixin opacity($opacity) {
  24 + -webkit-border-radius: $radius;
  25 + -moz-border-radius: $radius;
  26 + -ms-border-radius: $radius;
  27 + border-radius: $radius;
  28 +}
  29 +
  30 +//文字溢出省略显示
  31 +@mixin text-ellipsis() {
  32 + white-space: nowrap;
  33 + overflow: hidden;
  34 + text-overflow: ellipsis;
  35 +}
  36 +
  37 +//盒模型阴影
  38 +@mixin shadow($x, $y, $blur, $color) {
  39 + -webkit-box-shadow: $x $y $blur $color;
  40 + -moz-box-shadow: $x $y $blur $color;
  41 + box-shadow: $x $y $blur $color;
  42 +}
  43 +
  44 +/*单条border样式*/
  45 +@mixin border-1px ($color, $direction) {
  46 + content: '';
  47 + position: absolute;
  48 + background: $color;
  49 + @if $direction == left {
  50 + left: 0;
  51 + top: 0;
  52 + height: 100%;
  53 + width: 2px;
  54 + transform: scaleX(0.5);
  55 + transform-origin: left 0;
  56 + }
  57 + @if $direction == right {
  58 + right: 0;
  59 + top: 0;
  60 + height: 100%;
  61 + width: 2px;
  62 + transform: scaleX(0.5);
  63 + transform-origin: right 0;
  64 + }
  65 + @if $direction == bottom {
  66 + bottom: 0;
  67 + left: 0;
  68 + width: 100%;
  69 + height: 2px;
  70 + transform: scaleY(0.5);
  71 + transform-origin: 0 bottom;
  72 + }
  73 + @if $direction == top {
  74 + top: 0;
  75 + left: 0;
  76 + width: 100%;
  77 + height: 2px;
  78 + transform: scaleY(0.5);
  79 + transform-origin: 0 top;
  80 + }
  81 +}
  82 +
  83 +/*四条border样式*/
  84 +@mixin all-border-1px ($color, $radius) {
  85 + content: '';
  86 + position: absolute;
  87 + top: 0;
  88 + left: 0;
  89 + border: 2px solid $color;
  90 + border-radius: $radius * 2;
  91 + -webkit-box-sizing: border-box;
  92 + box-sizing: border-box;
  93 + width: 200%;
  94 + height: 200%;
  95 + -webkit-transform: scale(0.5);
  96 + transform: scale(0.5);
  97 + -webkit-transform-origin: left top;
  98 + transform-origin: left top;
  99 +}
  100 +
  101 +
  102 +
  103 +
  104 +
src/assets/style/reset.css 0 → 100644
  1 +html {
  2 + font-family: "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
  3 + -ms-text-size-adjust: 100%;
  4 + -webkit-text-size-adjust: 100%;
  5 + font-size: 62.5%;
  6 +}
  7 +
  8 +body {
  9 + margin: 0;
  10 + font-size: 1.4rem;
  11 + line-height: 1.5;
  12 + color: #333333;
  13 + background-color: white;
  14 + height: 100%;
  15 + overflow-x: hidden;
  16 + -webkit-overflow-scrolling: touch;
  17 +}
  18 +
  19 +article,
  20 +aside,
  21 +details,
  22 +figcaption,
  23 +figure,
  24 +footer,
  25 +header,
  26 +hgroup,
  27 +main,
  28 +nav,
  29 +section,
  30 +summary {
  31 + display: block;
  32 +}
  33 +
  34 +audio,
  35 +canvas,
  36 +progress,
  37 +video {
  38 + display: inline-block;
  39 + vertical-align: baseline;
  40 +}
  41 +
  42 +audio:not([controls]) {
  43 + display: none;
  44 + height: 0;
  45 +}
  46 +
  47 +[hidden],
  48 +template {
  49 + display: none;
  50 +}
  51 +
  52 +svg:not(:root) {
  53 + overflow: hidden;
  54 +}
  55 +
  56 +a {
  57 + background: transparent;
  58 + text-decoration: none;
  59 + -webkit-tap-highlight-color: transparent;
  60 + color: #0088cc;
  61 +}
  62 +
  63 +a:active {
  64 + outline: 0;
  65 +}
  66 +
  67 +a:active {
  68 + color: #006699;
  69 +}
  70 +
  71 +abbr[title] {
  72 + border-bottom: 1px dotted;
  73 +}
  74 +
  75 +b,
  76 +strong {
  77 + font-weight: bold;
  78 +}
  79 +
  80 +dfn {
  81 + font-style: italic;
  82 +}
  83 +
  84 +mark {
  85 + background: #ff0;
  86 + color: #000;
  87 +}
  88 +
  89 +small {
  90 + font-size: 80%;
  91 +}
  92 +
  93 +sub,
  94 +sup {
  95 + font-size: 75%;
  96 + line-height: 0;
  97 + position: relative;
  98 + vertical-align: baseline;
  99 +}
  100 +
  101 +sup {
  102 + top: -0.5em;
  103 +}
  104 +
  105 +sub {
  106 + bottom: -0.25em;
  107 +}
  108 +
  109 +img {
  110 + border: 0;
  111 + vertical-align: middle;
  112 +}
  113 +
  114 +hr {
  115 + -moz-box-sizing: content-box;
  116 + box-sizing: content-box;
  117 + height: 0;
  118 +}
  119 +
  120 +pre {
  121 + overflow: auto;
  122 + white-space: pre;
  123 + white-space: pre-wrap;
  124 + word-wrap: break-word;
  125 +}
  126 +
  127 +code,
  128 +kbd,
  129 +pre,
  130 +samp {
  131 + font-family: monospace, monospace;
  132 + font-size: 1em;
  133 +}
  134 +
  135 +button,
  136 +input,
  137 +optgroup,
  138 +select,
  139 +textarea {
  140 + color: inherit;
  141 + font: inherit;
  142 + margin: 0;
  143 +}
  144 +
  145 +button {
  146 + overflow: visible;
  147 +}
  148 +
  149 +button,
  150 +select {
  151 + text-transform: none;
  152 +}
  153 +
  154 +button,
  155 +html input[type="button"],
  156 +input[type="reset"],
  157 +input[type="submit"] {
  158 + -webkit-appearance: button;
  159 + cursor: pointer;
  160 +}
  161 +
  162 +button[disabled],
  163 +html input[disabled] {
  164 + cursor: default;
  165 +}
  166 +
  167 +button::-moz-focus-inner,
  168 +input::-moz-focus-inner {
  169 + border: 0;
  170 + padding: 0;
  171 +}
  172 +
  173 +input {
  174 + line-height: normal;
  175 +}
  176 +
  177 +input[type="checkbox"],
  178 +input[type="radio"] {
  179 + box-sizing: border-box;
  180 + padding: 0;
  181 +}
  182 +
  183 +input[type="number"]::-webkit-inner-spin-button,
  184 +input[type="number"]::-webkit-outer-spin-button {
  185 + height: auto;
  186 +}
  187 +
  188 +input[type="search"] {
  189 + -webkit-appearance: textfield;
  190 + -moz-box-sizing: border-box;
  191 + -webkit-box-sizing: border-box;
  192 + box-sizing: border-box;
  193 +}
  194 +
  195 +input[type="search"]::-webkit-search-cancel-button,
  196 +input[type="search"]::-webkit-search-decoration {
  197 + -webkit-appearance: none;
  198 +}
  199 +
  200 +fieldset {
  201 + border: 1px solid #c0c0c0;
  202 + margin: 0 2px;
  203 + padding: 0.35em 0.625em 0.75em;
  204 +}
  205 +
  206 +legend {
  207 + border: 0;
  208 + padding: 0;
  209 +}
  210 +
  211 +textarea {
  212 + overflow: auto;
  213 + resize: vertical;
  214 +}
  215 +
  216 +optgroup {
  217 + font-weight: bold;
  218 +}
  219 +
  220 +table {
  221 + border-collapse: collapse;
  222 + border-spacing: 0;
  223 +}
  224 +
  225 +td,
  226 +th {
  227 + padding: 0;
  228 +}
  229 +
  230 +html,
  231 +button,
  232 +input,
  233 +select,
  234 +textarea {
  235 + font-family: "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
  236 +}
  237 +
  238 +h1,
  239 +h2,
  240 +h3,
  241 +h4,
  242 +h5,
  243 +h6,
  244 +p,
  245 +figure,
  246 +form,
  247 +blockquote {
  248 + margin: 0;
  249 +}
  250 +
  251 +ul,
  252 +ol,
  253 +li,
  254 +dl,
  255 +dd {
  256 + margin: 0;
  257 + padding: 0;
  258 +}
  259 +
  260 +ul,
  261 +ol {
  262 + list-style: none outside none;
  263 +}
  264 +
  265 +h1,
  266 +h2,
  267 +h3 {
  268 + line-height: 2;
  269 + font-weight: normal;
  270 +}
  271 +
  272 +h1 {
  273 + font-size: 1.8rem;
  274 +}
  275 +
  276 +h2 {
  277 + font-size: 1.6rem;
  278 +}
  279 +
  280 +h3 {
  281 + font-size: 1.4rem;
  282 +}
  283 +
  284 +input::-moz-placeholder,
  285 +textarea::-moz-placeholder {
  286 + color: #cccccc;
  287 +}
  288 +
  289 +input:-ms-input-placeholder,
  290 +textarea:-ms-input-placeholder {
  291 + color: #cccccc;
  292 +}
  293 +
  294 +input::-webkit-input-placeholder,
  295 +textarea::-webkit-input-placeholder {
  296 + color: #cccccc;
  297 +}
  298 +
  299 +* {
  300 + -webkit-box-sizing: border-box;
  301 + -moz-box-sizing: border-box;
  302 + box-sizing: border-box;
  303 +}
src/components/HelloWorld.vue deleted
1 -<template>  
2 - <div class="hello">  
3 - <h1>{{ msg }}</h1>  
4 - <h2>Essential Links</h2>  
5 - <ul>  
6 - <li>  
7 - <a  
8 - href="https://vuejs.org"  
9 - target="_blank"  
10 - >  
11 - Core Docs  
12 - </a>  
13 - </li>  
14 - <li>  
15 - <a  
16 - href="https://forum.vuejs.org"  
17 - target="_blank"  
18 - >  
19 - Forum  
20 - </a>  
21 - </li>  
22 - <li>  
23 - <a  
24 - href="https://chat.vuejs.org"  
25 - target="_blank"  
26 - >  
27 - Community Chat  
28 - </a>  
29 - </li>  
30 - <li>  
31 - <a  
32 - href="https://twitter.com/vuejs"  
33 - target="_blank"  
34 - >  
35 - Twitter  
36 - </a>  
37 - </li>  
38 - <br>  
39 - <li>  
40 - <a  
41 - href="http://vuejs-templates.github.io/webpack/"  
42 - target="_blank"  
43 - >  
44 - Docs for This Template  
45 - </a>  
46 - </li>  
47 - </ul>  
48 - <h2>Ecosystem</h2>  
49 - <ul>  
50 - <li>  
51 - <a  
52 - href="http://router.vuejs.org/"  
53 - target="_blank"  
54 - >  
55 - vue-router  
56 - </a>  
57 - </li>  
58 - <li>  
59 - <a  
60 - href="http://vuex.vuejs.org/"  
61 - target="_blank"  
62 - >  
63 - vuex  
64 - </a>  
65 - </li>  
66 - <li>  
67 - <a  
68 - href="http://vue-loader.vuejs.org/"  
69 - target="_blank"  
70 - >  
71 - vue-loader  
72 - </a>  
73 - </li>  
74 - <li>  
75 - <a  
76 - href="https://github.com/vuejs/awesome-vue"  
77 - target="_blank"  
78 - >  
79 - awesome-vue  
80 - </a>  
81 - </li>  
82 - </ul>  
83 - </div>  
84 -</template>  
85 -  
86 -<script>  
87 -export default {  
88 - name: 'HelloWorld',  
89 - data () {  
90 - return {  
91 - msg: 'Welcome to Your Vue.js App'  
92 - }  
93 - }  
94 -}  
95 -</script>  
96 -  
97 -<!-- Add "scoped" attribute to limit CSS to this component only -->  
98 -<style scoped>  
99 -h1, h2 {  
100 - font-weight: normal;  
101 -}  
102 -ul {  
103 - list-style-type: none;  
104 - padding: 0;  
105 -}  
106 -li {  
107 - display: inline-block;  
108 - margin: 0 10px;  
109 -}  
110 -a {  
111 - color: #42b983;  
112 -}  
113 -</style>  
src/components/geomagnetism.vue 0 → 100644
  1 +<template>
  2 + <div class="hello">
  3 + 1
  4 + </div>
  5 +</template>
  6 +
  7 +<script>
  8 +export default {
  9 + name: 'geomagnetism',
  10 + data () {
  11 + return {
  12 + msg: 'Welcome to Your Vue.js App'
  13 + }
  14 + }
  15 +}
  16 +</script>
  17 +
  18 +<!-- Add "scoped" attribute to limit CSS to this component only -->
  19 +<style scoped lang="scss">
  20 +.hello{
  21 +
  22 +}
  23 +</style>
src/components/screen.vue 0 → 100644
  1 +<template>
  2 + <div>2</div>
  3 +</template>
  4 +
  5 +<script>
  6 +export default {
  7 + name: 'screen'
  8 +}
  9 +</script>
  10 +
  11 +<style scoped lang="scss">
  12 +
  13 +</style>
src/main.js
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 2 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 import Vue from 'vue' 3 import Vue from 'vue'
4 import App from './App' 4 import App from './App'
  5 +require ('./assets/style/reset.css')
5 6
6 Vue.config.productionTip = false 7 Vue.config.productionTip = false
7 8