├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
├── build.js
├── check-versions.js
├── dev-client.js
├── dev-server.js
├── utils.js
├── vue-loader.conf.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
└── prod.env.js
├── index.html
├── package.json
├── project.config.json
├── src
├── App.vue
├── components
│ ├── HomeBox
│ │ └── index.vue
│ └── card.vue
├── main.js
├── pages
│ ├── index
│ │ ├── index.vue
│ │ └── main.js
│ ├── logs
│ │ ├── index.vue
│ │ └── main.js
│ ├── map
│ │ ├── index.vue
│ │ └── main.js
│ └── merchant
│ │ ├── index.vue
│ │ └── main.js
├── store
│ └── index.js
└── utils
│ ├── api
│ └── index.js
│ └── index.js
└── static
├── .gitkeep
├── font
├── demo.css
├── demo_fontclass.html
├── demo_symbol.html
├── demo_unicode.html
├── iconfont.css
├── iconfont.eot
├── iconfont.js
├── iconfont.svg
├── iconfont.ttf
└── iconfont.woff
└── location.png
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-runtime"],
12 | "env": {
13 | "test": {
14 | "presets": ["env", "stage-2"],
15 | "plugins": ["istanbul"]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // http://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parser: 'babel-eslint',
6 | parserOptions: {
7 | sourceType: 'module'
8 | },
9 | env: {
10 | browser: false,
11 | node: true,
12 | es6: true
13 | },
14 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
15 | extends: 'standard',
16 | // required to lint *.vue files
17 | plugins: [
18 | 'html'
19 | ],
20 | // add your custom rules here
21 | 'rules': {
22 | // allow paren-less arrow functions
23 | 'arrow-parens': 0,
24 | // allow async-await
25 | 'generator-star-spacing': 0,
26 | // allow debugger during development
27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
28 | },
29 | globals: {
30 | App: true,
31 | Page: true,
32 | wx: true,
33 | getApp: true,
34 | getPage: true
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | *.suo
11 | *.ntvs*
12 | *.njsproj
13 | *.sln
14 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-mpvue-wxss": {}
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 美食搜索
2 |
3 | > mpvue 初次尝鲜
4 |
5 | ## 主要有三小个功能
6 |
7 | ### 上拉加载,下拉刷新
8 | ``` bash
9 | ...
10 | onPullDownRefresh () {
11 | ...
12 | },
13 | onReachBottom () {
14 | ...
15 | },
16 | data () {
17 | ...
18 | }
19 | ...
20 | 为什么把这个摘出来,因为这两个可以直接用在生命周期里面
21 | ```
22 | ***
23 | ### 搜索
24 | ***
25 | ### 地图插件
26 | ``` bash
27 | 调用原生小程序的组件
28 |
29 | ```
30 | ***
31 |
32 | ### 注:
33 |
34 | ``` bash
35 | 我觉得,会vue的上手mpvue难度不大,但是别把原生的小程序组件或者api给抛弃了,毕竟根本还是小程序呀
36 | 所有,我觉得最好的方式是,在开发中结合小程序文档一起进行
37 | 一起,共勉加油!!!
38 | ```
39 |
40 | # 演示
41 | 
42 |
43 | 
44 |
45 |
46 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | require('./check-versions')()
2 |
3 | process.env.NODE_ENV = 'production'
4 |
5 | var ora = require('ora')
6 | var rm = require('rimraf')
7 | var path = require('path')
8 | var chalk = require('chalk')
9 | var webpack = require('webpack')
10 | var config = require('../config')
11 | var webpackConfig = require('./webpack.prod.conf')
12 |
13 | var spinner = ora('building for production...')
14 | spinner.start()
15 |
16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
17 | if (err) throw err
18 | webpack(webpackConfig, function (err, stats) {
19 | spinner.stop()
20 | if (err) throw err
21 | process.stdout.write(stats.toString({
22 | colors: true,
23 | modules: false,
24 | children: false,
25 | chunks: false,
26 | chunkModules: false
27 | }) + '\n\n')
28 |
29 | if (stats.hasErrors()) {
30 | console.log(chalk.red(' Build failed with errors.\n'))
31 | process.exit(1)
32 | }
33 |
34 | console.log(chalk.cyan(' Build complete.\n'))
35 | console.log(chalk.yellow(
36 | ' Tip: built files are meant to be served over an HTTP server.\n' +
37 | ' Opening index.html over file:// won\'t work.\n'
38 | ))
39 | })
40 | })
41 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | var chalk = require('chalk')
2 | var semver = require('semver')
3 | var packageConfig = require('../package.json')
4 | var shell = require('shelljs')
5 | function exec (cmd) {
6 | return require('child_process').execSync(cmd).toString().trim()
7 | }
8 |
9 | var versionRequirements = [
10 | {
11 | name: 'node',
12 | currentVersion: semver.clean(process.version),
13 | versionRequirement: packageConfig.engines.node
14 | }
15 | ]
16 |
17 | if (shell.which('npm')) {
18 | versionRequirements.push({
19 | name: 'npm',
20 | currentVersion: exec('npm --version'),
21 | versionRequirement: packageConfig.engines.npm
22 | })
23 | }
24 |
25 | module.exports = function () {
26 | var warnings = []
27 | for (var i = 0; i < versionRequirements.length; i++) {
28 | var mod = versionRequirements[i]
29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
30 | warnings.push(mod.name + ': ' +
31 | chalk.red(mod.currentVersion) + ' should be ' +
32 | chalk.green(mod.versionRequirement)
33 | )
34 | }
35 | }
36 |
37 | if (warnings.length) {
38 | console.log('')
39 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
40 | console.log()
41 | for (var i = 0; i < warnings.length; i++) {
42 | var warning = warnings[i]
43 | console.log(' ' + warning)
44 | }
45 | console.log()
46 | process.exit(1)
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/build/dev-client.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | require('eventsource-polyfill')
3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
4 |
5 | hotClient.subscribe(function (event) {
6 | if (event.action === 'reload') {
7 | window.location.reload()
8 | }
9 | })
10 |
--------------------------------------------------------------------------------
/build/dev-server.js:
--------------------------------------------------------------------------------
1 | require('./check-versions')()
2 |
3 | var config = require('../config')
4 | if (!process.env.NODE_ENV) {
5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
6 | }
7 |
8 | // var opn = require('opn')
9 | var path = require('path')
10 | var express = require('express')
11 | var webpack = require('webpack')
12 | var proxyMiddleware = require('http-proxy-middleware')
13 | var webpackConfig = require('./webpack.dev.conf')
14 |
15 | // default port where dev server listens for incoming traffic
16 | var port = process.env.PORT || config.dev.port
17 | // automatically open browser, if not set will be false
18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser
19 | // Define HTTP proxies to your custom API backend
20 | // https://github.com/chimurai/http-proxy-middleware
21 | var proxyTable = config.dev.proxyTable
22 |
23 | var app = express()
24 | var compiler = webpack(webpackConfig)
25 |
26 | // var devMiddleware = require('webpack-dev-middleware')(compiler, {
27 | // publicPath: webpackConfig.output.publicPath,
28 | // quiet: true
29 | // })
30 |
31 | // var hotMiddleware = require('webpack-hot-middleware')(compiler, {
32 | // log: false,
33 | // heartbeat: 2000
34 | // })
35 | // force page reload when html-webpack-plugin template changes
36 | // compiler.plugin('compilation', function (compilation) {
37 | // compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
38 | // hotMiddleware.publish({ action: 'reload' })
39 | // cb()
40 | // })
41 | // })
42 |
43 | // proxy api requests
44 | Object.keys(proxyTable).forEach(function (context) {
45 | var options = proxyTable[context]
46 | if (typeof options === 'string') {
47 | options = { target: options }
48 | }
49 | app.use(proxyMiddleware(options.filter || context, options))
50 | })
51 |
52 | // handle fallback for HTML5 history API
53 | app.use(require('connect-history-api-fallback')())
54 |
55 | // serve webpack bundle output
56 | // app.use(devMiddleware)
57 |
58 | // enable hot-reload and state-preserving
59 | // compilation error display
60 | // app.use(hotMiddleware)
61 |
62 | // serve pure static assets
63 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
64 | app.use(staticPath, express.static('./static'))
65 |
66 | var uri = 'http://localhost:' + port
67 |
68 | var _resolve
69 | var readyPromise = new Promise(resolve => {
70 | _resolve = resolve
71 | })
72 |
73 | // console.log('> Starting dev server...')
74 | // devMiddleware.waitUntilValid(() => {
75 | // console.log('> Listening at ' + uri + '\n')
76 | // // when env is testing, don't need open it
77 | // if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
78 | // opn(uri)
79 | // }
80 | // _resolve()
81 | // })
82 |
83 | var server = app.listen(port, 'localhost')
84 |
85 | // for 小程序的文件保存机制
86 | require('webpack-dev-middleware-hard-disk')(compiler, {
87 | publicPath: webpackConfig.output.publicPath,
88 | quiet: true
89 | })
90 |
91 | module.exports = {
92 | ready: readyPromise,
93 | close: () => {
94 | server.close()
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var config = require('../config')
3 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
4 |
5 | exports.assetsPath = function (_path) {
6 | var assetsSubDirectory = process.env.NODE_ENV === 'production'
7 | ? config.build.assetsSubDirectory
8 | : config.dev.assetsSubDirectory
9 | return path.posix.join(assetsSubDirectory, _path)
10 | }
11 |
12 | exports.cssLoaders = function (options) {
13 | options = options || {}
14 |
15 | var cssLoader = {
16 | loader: 'css-loader',
17 | options: {
18 | minimize: process.env.NODE_ENV === 'production',
19 | sourceMap: options.sourceMap
20 | }
21 | }
22 |
23 | var postcssLoader = {
24 | loader: 'postcss-loader',
25 | options: {
26 | sourceMap: true
27 | }
28 | }
29 |
30 | var px2rpxLoader = {
31 | loader: 'px2rpx-loader',
32 | options: {
33 | baseDpr: 1,
34 | rpxUnit: 0.5
35 | }
36 | }
37 |
38 | // generate loader string to be used with extract text plugin
39 | function generateLoaders (loader, loaderOptions) {
40 | var loaders = [cssLoader, px2rpxLoader, postcssLoader]
41 | if (loader) {
42 | loaders.push({
43 | loader: loader + '-loader',
44 | options: Object.assign({}, loaderOptions, {
45 | sourceMap: options.sourceMap
46 | })
47 | })
48 | }
49 |
50 | // Extract CSS when that option is specified
51 | // (which is the case during production build)
52 | if (options.extract) {
53 | return ExtractTextPlugin.extract({
54 | use: loaders,
55 | fallback: 'vue-style-loader'
56 | })
57 | } else {
58 | return ['vue-style-loader'].concat(loaders)
59 | }
60 | }
61 |
62 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html
63 | return {
64 | css: generateLoaders(),
65 | wxss: generateLoaders(),
66 | postcss: generateLoaders(),
67 | less: generateLoaders('less'),
68 | sass: generateLoaders('sass', { indentedSyntax: true }),
69 | scss: generateLoaders('sass'),
70 | stylus: generateLoaders('stylus'),
71 | styl: generateLoaders('stylus')
72 | }
73 | }
74 |
75 | // Generate loaders for standalone style files (outside of .vue)
76 | exports.styleLoaders = function (options) {
77 | var output = []
78 | var loaders = exports.cssLoaders(options)
79 | for (var extension in loaders) {
80 | var loader = loaders[extension]
81 | output.push({
82 | test: new RegExp('\\.' + extension + '$'),
83 | use: loader
84 | })
85 | }
86 | return output
87 | }
88 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | var utils = require('./utils')
2 | var config = require('../config')
3 | // var isProduction = process.env.NODE_ENV === 'production'
4 | // for mp
5 | var isProduction = true
6 |
7 | module.exports = {
8 | loaders: utils.cssLoaders({
9 | sourceMap: isProduction
10 | ? config.build.productionSourceMap
11 | : config.dev.cssSourceMap,
12 | extract: isProduction
13 | }),
14 | transformToRequire: {
15 | video: 'src',
16 | source: 'src',
17 | img: 'src',
18 | image: 'xlink:href'
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var fs = require('fs')
3 | var utils = require('./utils')
4 | var config = require('../config')
5 | var vueLoaderConfig = require('./vue-loader.conf')
6 | var MpvuePlugin = require('webpack-mpvue-asset-plugin')
7 | var glob = require('glob')
8 |
9 | function resolve (dir) {
10 | return path.join(__dirname, '..', dir)
11 | }
12 |
13 | function getEntry (rootSrc, pattern) {
14 | var files = glob.sync(path.resolve(rootSrc, pattern))
15 | return files.reduce((res, file) => {
16 | var info = path.parse(file)
17 | var key = info.dir.slice(rootSrc.length + 1) + '/' + info.name
18 | res[key] = path.resolve(file)
19 | return res
20 | }, {})
21 | }
22 |
23 | const appEntry = { app: resolve('./src/main.js') }
24 | const pagesEntry = getEntry(resolve('./src'), 'pages/**/main.js')
25 | const entry = Object.assign({}, appEntry, pagesEntry)
26 |
27 | module.exports = {
28 | // 如果要自定义生成的 dist 目录里面的文件路径,
29 | // 可以将 entry 写成 {'toPath': 'fromPath'} 的形式,
30 | // toPath 为相对于 dist 的路径, 例:index/demo,则生成的文件地址为 dist/index/demo.js
31 | entry,
32 | target: require('mpvue-webpack-target'),
33 | output: {
34 | path: config.build.assetsRoot,
35 | filename: '[name].js',
36 | publicPath: process.env.NODE_ENV === 'production'
37 | ? config.build.assetsPublicPath
38 | : config.dev.assetsPublicPath
39 | },
40 | resolve: {
41 | extensions: ['.js', '.vue', '.json'],
42 | alias: {
43 | 'vue': 'mpvue',
44 | '@': resolve('src')
45 | },
46 | symlinks: false
47 | },
48 | module: {
49 | rules: [
50 | {
51 | test: /\.(js|vue)$/,
52 | loader: 'eslint-loader',
53 | enforce: 'pre',
54 | include: [resolve('src'), resolve('test')],
55 | options: {
56 | formatter: require('eslint-friendly-formatter')
57 | }
58 | },
59 | {
60 | test: /\.vue$/,
61 | loader: 'mpvue-loader',
62 | options: vueLoaderConfig
63 | },
64 | {
65 | test: /\.js$/,
66 | include: [resolve('src'), resolve('test')],
67 | use: [
68 | 'babel-loader',
69 | {
70 | loader: 'mpvue-loader',
71 | options: {
72 | checkMPEntry: true
73 | }
74 | },
75 | ]
76 | },
77 | {
78 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
79 | loader: 'url-loader',
80 | options: {
81 | limit: 10000,
82 | name: utils.assetsPath('img/[name].[ext]')
83 | }
84 | },
85 | {
86 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
87 | loader: 'url-loader',
88 | options: {
89 | limit: 10000,
90 | name: utils.assetsPath('media/[name]].[ext]')
91 | }
92 | },
93 | {
94 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
95 | loader: 'url-loader',
96 | options: {
97 | limit: 10000,
98 | name: utils.assetsPath('fonts/[name].[ext]')
99 | }
100 | }
101 | ]
102 | },
103 | plugins: [
104 | new MpvuePlugin()
105 | ]
106 | }
107 |
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | var utils = require('./utils')
2 | var webpack = require('webpack')
3 | var config = require('../config')
4 | var merge = require('webpack-merge')
5 | var baseWebpackConfig = require('./webpack.base.conf')
6 | // var HtmlWebpackPlugin = require('html-webpack-plugin')
7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
8 |
9 | // copy from ./webpack.prod.conf.js
10 | var path = require('path')
11 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
12 | var CopyWebpackPlugin = require('copy-webpack-plugin')
13 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
14 |
15 | // add hot-reload related code to entry chunks
16 | // Object.keys(baseWebpackConfig.entry).forEach(function (name) {
17 | // baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
18 | // })
19 |
20 | module.exports = merge(baseWebpackConfig, {
21 | module: {
22 | rules: utils.styleLoaders({
23 | sourceMap: config.dev.cssSourceMap,
24 | extract: true
25 | })
26 | },
27 | // cheap-module-eval-source-map is faster for development
28 | // devtool: '#cheap-module-eval-source-map',
29 | devtool: '#source-map',
30 | output: {
31 | path: config.build.assetsRoot,
32 | // filename: utils.assetsPath('js/[name].[chunkhash].js'),
33 | // chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
34 | filename: utils.assetsPath('js/[name].js'),
35 | chunkFilename: utils.assetsPath('js/[id].js')
36 | },
37 | plugins: [
38 | new webpack.DefinePlugin({
39 | 'process.env': config.dev.env
40 | }),
41 |
42 | // copy from ./webpack.prod.conf.js
43 | // extract css into its own file
44 | new ExtractTextPlugin({
45 | // filename: utils.assetsPath('css/[name].[contenthash].css')
46 | filename: utils.assetsPath('css/[name].wxss')
47 | }),
48 | // Compress extracted CSS. We are using this plugin so that possible
49 | // duplicated CSS from different components can be deduped.
50 | new OptimizeCSSPlugin({
51 | cssProcessorOptions: {
52 | safe: true
53 | }
54 | }),
55 | new webpack.optimize.CommonsChunkPlugin({
56 | name: 'vendor',
57 | minChunks: function (module, count) {
58 | // any required modules inside node_modules are extracted to vendor
59 | return (
60 | module.resource &&
61 | /\.js$/.test(module.resource) &&
62 | module.resource.indexOf('node_modules') >= 0
63 | ) || count > 1
64 | }
65 | }),
66 | new webpack.optimize.CommonsChunkPlugin({
67 | name: 'manifest',
68 | chunks: ['vendor']
69 | }),
70 | // copy custom static assets
71 | new CopyWebpackPlugin([
72 | {
73 | from: path.resolve(__dirname, '../static'),
74 | to: config.build.assetsSubDirectory,
75 | ignore: ['.*']
76 | }
77 | ]),
78 |
79 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
80 | // new webpack.HotModuleReplacementPlugin(),
81 | new webpack.NoEmitOnErrorsPlugin(),
82 | // https://github.com/ampedandwired/html-webpack-plugin
83 | // new HtmlWebpackPlugin({
84 | // filename: 'index.html',
85 | // template: 'index.html',
86 | // inject: true
87 | // }),
88 | new FriendlyErrorsPlugin()
89 | ]
90 | })
91 |
--------------------------------------------------------------------------------
/build/webpack.prod.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var utils = require('./utils')
3 | var webpack = require('webpack')
4 | var config = require('../config')
5 | var merge = require('webpack-merge')
6 | var baseWebpackConfig = require('./webpack.base.conf')
7 | var CopyWebpackPlugin = require('copy-webpack-plugin')
8 | // var HtmlWebpackPlugin = require('html-webpack-plugin')
9 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
10 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
11 |
12 | var env = config.build.env
13 |
14 | var webpackConfig = merge(baseWebpackConfig, {
15 | module: {
16 | rules: utils.styleLoaders({
17 | sourceMap: config.build.productionSourceMap,
18 | extract: true
19 | })
20 | },
21 | devtool: config.build.productionSourceMap ? '#source-map' : false,
22 | output: {
23 | path: config.build.assetsRoot,
24 | // filename: utils.assetsPath('js/[name].[chunkhash].js'),
25 | // chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
26 | filename: utils.assetsPath('js/[name].js'),
27 | chunkFilename: utils.assetsPath('js/[id].js')
28 | },
29 | plugins: [
30 | // http://vuejs.github.io/vue-loader/en/workflow/production.html
31 | new webpack.DefinePlugin({
32 | 'process.env': env
33 | }),
34 | new webpack.optimize.UglifyJsPlugin({
35 | compress: {
36 | warnings: false
37 | },
38 | sourceMap: true
39 | }),
40 | // extract css into its own file
41 | new ExtractTextPlugin({
42 | // filename: utils.assetsPath('css/[name].[contenthash].css')
43 | filename: utils.assetsPath('css/[name].wxss')
44 | }),
45 | // Compress extracted CSS. We are using this plugin so that possible
46 | // duplicated CSS from different components can be deduped.
47 | new OptimizeCSSPlugin({
48 | cssProcessorOptions: {
49 | safe: true
50 | }
51 | }),
52 | // generate dist index.html with correct asset hash for caching.
53 | // you can customize output by editing /index.html
54 | // see https://github.com/ampedandwired/html-webpack-plugin
55 | // new HtmlWebpackPlugin({
56 | // filename: config.build.index,
57 | // template: 'index.html',
58 | // inject: true,
59 | // minify: {
60 | // removeComments: true,
61 | // collapseWhitespace: true,
62 | // removeAttributeQuotes: true
63 | // // more options:
64 | // // https://github.com/kangax/html-minifier#options-quick-reference
65 | // },
66 | // // necessary to consistently work with multiple chunks via CommonsChunkPlugin
67 | // chunksSortMode: 'dependency'
68 | // }),
69 | // keep module.id stable when vender modules does not change
70 | new webpack.HashedModuleIdsPlugin(),
71 | // split vendor js into its own file
72 | new webpack.optimize.CommonsChunkPlugin({
73 | name: 'vendor',
74 | minChunks: function (module, count) {
75 | // any required modules inside node_modules are extracted to vendor
76 | return (
77 | module.resource &&
78 | /\.js$/.test(module.resource) &&
79 | module.resource.indexOf('node_modules') >= 0
80 | ) || count > 1
81 | }
82 | }),
83 | // extract webpack runtime and module manifest to its own file in order to
84 | // prevent vendor hash from being updated whenever app bundle is updated
85 | new webpack.optimize.CommonsChunkPlugin({
86 | name: 'manifest',
87 | chunks: ['vendor']
88 | }),
89 | // copy custom static assets
90 | new CopyWebpackPlugin([
91 | {
92 | from: path.resolve(__dirname, '../static'),
93 | to: config.build.assetsSubDirectory,
94 | ignore: ['.*']
95 | }
96 | ])
97 | ]
98 | })
99 |
100 | // if (config.build.productionGzip) {
101 | // var CompressionWebpackPlugin = require('compression-webpack-plugin')
102 |
103 | // webpackConfig.plugins.push(
104 | // new CompressionWebpackPlugin({
105 | // asset: '[path].gz[query]',
106 | // algorithm: 'gzip',
107 | // test: new RegExp(
108 | // '\\.(' +
109 | // config.build.productionGzipExtensions.join('|') +
110 | // ')$'
111 | // ),
112 | // threshold: 10240,
113 | // minRatio: 0.8
114 | // })
115 | // )
116 | // }
117 |
118 | if (config.build.bundleAnalyzerReport) {
119 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
120 | webpackConfig.plugins.push(new BundleAnalyzerPlugin())
121 | }
122 |
123 | module.exports = webpackConfig
124 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var prodEnv = require('./prod.env')
3 |
4 | module.exports = merge(prodEnv, {
5 | NODE_ENV: '"development"'
6 | })
7 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | // see http://vuejs-templates.github.io/webpack for documentation.
2 | var path = require('path')
3 |
4 | module.exports = {
5 | build: {
6 | env: require('./prod.env'),
7 | index: path.resolve(__dirname, '../dist/index.html'),
8 | assetsRoot: path.resolve(__dirname, '../dist'),
9 | assetsSubDirectory: 'static',
10 | assetsPublicPath: '/',
11 | productionSourceMap: false,
12 | // Gzip off by default as many popular static hosts such as
13 | // Surge or Netlify already gzip all static assets for you.
14 | // Before setting to `true`, make sure to:
15 | // npm install --save-dev compression-webpack-plugin
16 | productionGzip: false,
17 | productionGzipExtensions: ['js', 'css'],
18 | // Run the build command with an extra argument to
19 | // View the bundle analyzer report after build finishes:
20 | // `npm run build --report`
21 | // Set to `true` or `false` to always turn it on or off
22 | bundleAnalyzerReport: process.env.npm_config_report
23 | },
24 | dev: {
25 | env: require('./dev.env'),
26 | port: 8080,
27 | // 在小程序开发者工具中不需要自动打开浏览器
28 | autoOpenBrowser: false,
29 | assetsSubDirectory: 'static',
30 | assetsPublicPath: '/',
31 | productionSourceMap: false,
32 | proxyTable: {},
33 | // CSS Sourcemaps off by default because relative paths are "buggy"
34 | // with this option, according to the CSS-Loader README
35 | // (https://github.com/webpack/css-loader#sourcemaps)
36 | // In our experience, they generally work as expected,
37 | // just be aware of this issue when enabling this option.
38 | cssSourceMap: false
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | demo
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "xiaoshengkai",
3 | "version": "1.0.0",
4 | "description": "A Mpvue project",
5 | "author": "xiaoshengkai <354830981@qq.com>",
6 | "private": true,
7 | "scripts": {
8 | "dev": "node build/dev-server.js",
9 | "start": "node build/dev-server.js",
10 | "build": "node build/build.js",
11 | "lint": "eslint --ext .js,.vue src"
12 | },
13 | "dependencies": {
14 | "mpvue": "^1.0.6",
15 | "vue-amap": "^0.5.4",
16 | "vuex": "^2.3.1"
17 | },
18 | "devDependencies": {
19 | "mpvue-loader": "^1.0.8",
20 | "mpvue-webpack-target": "^1.0.0",
21 | "mpvue-template-compiler": "^1.0.6",
22 | "postcss-mpvue-wxss": "^1.0.0",
23 | "px2rpx-loader": "^0.1.8",
24 | "babel-core": "^6.22.1",
25 | "glob": "^7.1.2",
26 | "webpack-mpvue-asset-plugin": "^0.0.1",
27 | "babel-eslint": "^7.1.1",
28 | "babel-loader": "^7.1.1",
29 | "babel-plugin-transform-runtime": "^6.22.0",
30 | "babel-preset-env": "^1.3.2",
31 | "babel-preset-stage-2": "^6.22.0",
32 | "babel-register": "^6.22.0",
33 | "chalk": "^2.0.1",
34 | "connect-history-api-fallback": "^1.3.0",
35 | "copy-webpack-plugin": "^4.0.1",
36 | "css-loader": "^0.28.0",
37 | "cssnano": "^3.10.0",
38 | "eslint": "^3.19.0",
39 | "eslint-friendly-formatter": "^3.0.0",
40 | "eslint-loader": "^1.7.1",
41 | "eslint-plugin-html": "^3.0.0",
42 | "eslint-config-standard": "^6.2.1",
43 | "eslint-plugin-promise": "^3.4.0",
44 | "eslint-plugin-standard": "^2.0.1",
45 | "eventsource-polyfill": "^0.9.6",
46 | "express": "^4.14.1",
47 | "extract-text-webpack-plugin": "^2.0.0",
48 | "file-loader": "^0.11.1",
49 | "friendly-errors-webpack-plugin": "^1.1.3",
50 | "html-webpack-plugin": "^2.28.0",
51 | "http-proxy-middleware": "^0.17.3",
52 | "webpack-bundle-analyzer": "^2.2.1",
53 | "semver": "^5.3.0",
54 | "shelljs": "^0.7.6",
55 | "optimize-css-assets-webpack-plugin": "^2.0.0",
56 | "ora": "^1.2.0",
57 | "rimraf": "^2.6.0",
58 | "url-loader": "^0.5.8",
59 | "vue-style-loader": "^3.0.1",
60 | "webpack": "^2.6.1",
61 | "webpack-dev-middleware-hard-disk": "^1.10.0",
62 | "webpack-merge": "^4.1.0",
63 | "postcss-loader": "^2.0.6"
64 | },
65 | "engines": {
66 | "node": ">= 4.0.0",
67 | "npm": ">= 3.0.0"
68 | },
69 | "browserslist": [
70 | "> 1%",
71 | "last 2 versions",
72 | "not ie <= 8"
73 | ]
74 | }
75 |
--------------------------------------------------------------------------------
/project.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "description": "项目配置文件。",
3 | "setting": {
4 | "urlCheck": true,
5 | "es6": false,
6 | "postcss": true,
7 | "minified": true,
8 | "newFeature": true
9 | },
10 | "miniprogramRoot": "./dist/",
11 | "compileType": "miniprogram",
12 | "appid": "touristappid",
13 | "projectname": "demo",
14 | "condition": {
15 | "search": {
16 | "current": -1,
17 | "list": []
18 | },
19 | "conversation": {
20 | "current": -1,
21 | "list": []
22 | },
23 | "game": {
24 | "currentL": -1,
25 | "list": []
26 | },
27 | "miniprogram": {
28 | "current": -1,
29 | "list": []
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
13 |
14 |
32 |
--------------------------------------------------------------------------------
/src/components/HomeBox/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
![店图]()
4 |
5 |
{{ obj.name }}
6 |
7 |
8 | ¥{{ obj.price }}/人
9 | 暂无均价信息
10 |
11 |
12 | {{ obj.type }}
13 |
14 |
15 |
16 |
17 |
18 |
25 |
26 |
--------------------------------------------------------------------------------
/src/components/card.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
14 |
15 |
20 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App'
3 | import store from './store'
4 | import '../static/font/iconfont.css'
5 |
6 | Vue.config.productionTip = false
7 | App.mpType = 'app'
8 |
9 | const app = new Vue({
10 | store,
11 | ...App
12 | })
13 | app.$mount()
14 |
15 | export default {
16 | // 这个字段走 app.json
17 | config: {
18 | // 页面前带有 ^ 符号的,会被编译成首页,其他页面可以选填,我们会自动把 webpack entry 里面的入口页面加进去
19 | pages: ['^pages/index/main'],
20 | window: {
21 | backgroundTextStyle: 'light',
22 | navigationBarBackgroundColor: '#fff',
23 | navigationBarTitleText: '美食搜索',
24 | navigationBarTextStyle: 'black'
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/pages/index/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
搜索
10 |
11 |
12 |
暂无数据
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
103 |
104 |
148 |
--------------------------------------------------------------------------------
/src/pages/index/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
7 | export default {
8 | config: {
9 | enablePullDownRefresh: true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/pages/logs/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
32 |
33 |
44 |
--------------------------------------------------------------------------------
/src/pages/logs/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
7 | export default {
8 | config: {
9 | navigationBarTitleText: '查看启动日志'
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/pages/map/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
27 |
28 |
--------------------------------------------------------------------------------
/src/pages/map/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/pages/merchant/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
14 |
15 | {{ item.text }}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
71 |
128 |
--------------------------------------------------------------------------------
/src/pages/merchant/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './index'
3 |
4 | const app = new Vue(App)
5 | app.$mount()
6 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | let store = new Vuex.Store({
7 | state: {
8 | latitude: 0,
9 | longitude: 0
10 | },
11 | mutations: {
12 | changeState (state, obj) {
13 | for (let key of Object.keys(obj)) {
14 | state[key] = obj[key]
15 | }
16 | }
17 | }
18 | })
19 |
20 | Vue.prototype.$store = store
21 |
22 | export default store
23 |
--------------------------------------------------------------------------------
/src/utils/api/index.js:
--------------------------------------------------------------------------------
1 | const sendURL = 'https://market.csyjia.com/user/customer'
2 |
3 | const request = (url, data = {}, method = 'POST') => new Promise((resolve, reject) => {
4 | url = sendURL + url
5 | wx.request({
6 | url,
7 | data,
8 | method,
9 | success: res => resolve(res.data),
10 | fail: res => reject(res)
11 | })
12 | })
13 |
14 | export default request
15 |
--------------------------------------------------------------------------------
/src/utils/index.js:
--------------------------------------------------------------------------------
1 | function formatNumber (n) {
2 | const str = n.toString()
3 | return str[1] ? str : `0${str}`
4 | }
5 |
6 | export function formatTime (date) {
7 | const year = date.getFullYear()
8 | const month = date.getMonth() + 1
9 | const day = date.getDate()
10 |
11 | const hour = date.getHours()
12 | const minute = date.getMinutes()
13 | const second = date.getSeconds()
14 |
15 | const t1 = [year, month, day].map(formatNumber).join('/')
16 | const t2 = [hour, minute, second].map(formatNumber).join(':')
17 |
18 | return `${t1} ${t2}`
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaoshengkai/mpvue-FG/e6457fbd934936ce32e593f6dbe8df19232f5565/static/.gitkeep
--------------------------------------------------------------------------------
/static/font/demo.css:
--------------------------------------------------------------------------------
1 | *{margin: 0;padding: 0;list-style: none;}
2 | /*
3 | KISSY CSS Reset
4 | 理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。
5 | 2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。
6 | 3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。
7 | 特色:1. 适应中文;2. 基于最新主流浏览器。
8 | 维护:玉伯, 正淳
9 | */
10 |
11 | /** 清除内外边距 **/
12 | body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
13 | dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
14 | pre, /* text formatting elements 文本格式元素 */
15 | form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
16 | th, td /* table elements 表格元素 */ {
17 | margin: 0;
18 | padding: 0;
19 | }
20 |
21 | /** 设置默认字体 **/
22 | body,
23 | button, input, select, textarea /* for ie */ {
24 | font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif;
25 | }
26 | h1, h2, h3, h4, h5, h6 { font-size: 100%; }
27 | address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */
28 | code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */
29 | small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
30 |
31 | /** 重置列表元素 **/
32 | ul, ol { list-style: none; }
33 |
34 | /** 重置文本格式元素 **/
35 | a { text-decoration: none; }
36 | a:hover { text-decoration: underline; }
37 |
38 |
39 | /** 重置表单元素 **/
40 | legend { color: #000; } /* for ie6 */
41 | fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */
42 | button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */
43 | /* 注:optgroup 无法扶正 */
44 |
45 | /** 重置表格元素 **/
46 | table { border-collapse: collapse; border-spacing: 0; }
47 |
48 | /* 清除浮动 */
49 | .ks-clear:after, .clear:after {
50 | content: '\20';
51 | display: block;
52 | height: 0;
53 | clear: both;
54 | }
55 | .ks-clear, .clear {
56 | *zoom: 1;
57 | }
58 |
59 | .main {
60 | padding: 30px 100px;
61 | width: 960px;
62 | margin: 0 auto;
63 | }
64 | .main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;}
65 |
66 | .helps{margin-top:40px;}
67 | .helps pre{
68 | padding:20px;
69 | margin:10px 0;
70 | border:solid 1px #e7e1cd;
71 | background-color: #fffdef;
72 | overflow: auto;
73 | }
74 |
75 | .icon_lists{
76 | width: 100% !important;
77 |
78 | }
79 |
80 | .icon_lists li{
81 | float:left;
82 | width: 100px;
83 | height:180px;
84 | text-align: center;
85 | list-style: none !important;
86 | }
87 | .icon_lists .icon{
88 | font-size: 42px;
89 | line-height: 100px;
90 | margin: 10px 0;
91 | color:#333;
92 | -webkit-transition: font-size 0.25s ease-out 0s;
93 | -moz-transition: font-size 0.25s ease-out 0s;
94 | transition: font-size 0.25s ease-out 0s;
95 |
96 | }
97 | .icon_lists .icon:hover{
98 | font-size: 100px;
99 | }
100 |
101 |
102 |
103 | .markdown {
104 | color: #666;
105 | font-size: 14px;
106 | line-height: 1.8;
107 | }
108 |
109 | .highlight {
110 | line-height: 1.5;
111 | }
112 |
113 | .markdown img {
114 | vertical-align: middle;
115 | max-width: 100%;
116 | }
117 |
118 | .markdown h1 {
119 | color: #404040;
120 | font-weight: 500;
121 | line-height: 40px;
122 | margin-bottom: 24px;
123 | }
124 |
125 | .markdown h2,
126 | .markdown h3,
127 | .markdown h4,
128 | .markdown h5,
129 | .markdown h6 {
130 | color: #404040;
131 | margin: 1.6em 0 0.6em 0;
132 | font-weight: 500;
133 | clear: both;
134 | }
135 |
136 | .markdown h1 {
137 | font-size: 28px;
138 | }
139 |
140 | .markdown h2 {
141 | font-size: 22px;
142 | }
143 |
144 | .markdown h3 {
145 | font-size: 16px;
146 | }
147 |
148 | .markdown h4 {
149 | font-size: 14px;
150 | }
151 |
152 | .markdown h5 {
153 | font-size: 12px;
154 | }
155 |
156 | .markdown h6 {
157 | font-size: 12px;
158 | }
159 |
160 | .markdown hr {
161 | height: 1px;
162 | border: 0;
163 | background: #e9e9e9;
164 | margin: 16px 0;
165 | clear: both;
166 | }
167 |
168 | .markdown p,
169 | .markdown pre {
170 | margin: 1em 0;
171 | }
172 |
173 | .markdown > p,
174 | .markdown > blockquote,
175 | .markdown > .highlight,
176 | .markdown > ol,
177 | .markdown > ul {
178 | width: 80%;
179 | }
180 |
181 | .markdown ul > li {
182 | list-style: circle;
183 | }
184 |
185 | .markdown > ul li,
186 | .markdown blockquote ul > li {
187 | margin-left: 20px;
188 | padding-left: 4px;
189 | }
190 |
191 | .markdown > ul li p,
192 | .markdown > ol li p {
193 | margin: 0.6em 0;
194 | }
195 |
196 | .markdown ol > li {
197 | list-style: decimal;
198 | }
199 |
200 | .markdown > ol li,
201 | .markdown blockquote ol > li {
202 | margin-left: 20px;
203 | padding-left: 4px;
204 | }
205 |
206 | .markdown code {
207 | margin: 0 3px;
208 | padding: 0 5px;
209 | background: #eee;
210 | border-radius: 3px;
211 | }
212 |
213 | .markdown pre {
214 | border-radius: 6px;
215 | background: #f7f7f7;
216 | padding: 20px;
217 | }
218 |
219 | .markdown pre code {
220 | border: none;
221 | background: #f7f7f7;
222 | margin: 0;
223 | }
224 |
225 | .markdown strong,
226 | .markdown b {
227 | font-weight: 600;
228 | }
229 |
230 | .markdown > table {
231 | border-collapse: collapse;
232 | border-spacing: 0px;
233 | empty-cells: show;
234 | border: 1px solid #e9e9e9;
235 | width: 95%;
236 | margin-bottom: 24px;
237 | }
238 |
239 | .markdown > table th {
240 | white-space: nowrap;
241 | color: #333;
242 | font-weight: 600;
243 |
244 | }
245 |
246 | .markdown > table th,
247 | .markdown > table td {
248 | border: 1px solid #e9e9e9;
249 | padding: 8px 16px;
250 | text-align: left;
251 | }
252 |
253 | .markdown > table th {
254 | background: #F7F7F7;
255 | }
256 |
257 | .markdown blockquote {
258 | font-size: 90%;
259 | color: #999;
260 | border-left: 4px solid #e9e9e9;
261 | padding-left: 0.8em;
262 | margin: 1em 0;
263 | font-style: italic;
264 | }
265 |
266 | .markdown blockquote p {
267 | margin: 0;
268 | }
269 |
270 | .markdown .anchor {
271 | opacity: 0;
272 | transition: opacity 0.3s ease;
273 | margin-left: 8px;
274 | }
275 |
276 | .markdown .waiting {
277 | color: #ccc;
278 | }
279 |
280 | .markdown h1:hover .anchor,
281 | .markdown h2:hover .anchor,
282 | .markdown h3:hover .anchor,
283 | .markdown h4:hover .anchor,
284 | .markdown h5:hover .anchor,
285 | .markdown h6:hover .anchor {
286 | opacity: 1;
287 | display: inline-block;
288 | }
289 |
290 | .markdown > br,
291 | .markdown > p > br {
292 | clear: both;
293 | }
294 |
295 |
296 | .hljs {
297 | display: block;
298 | background: white;
299 | padding: 0.5em;
300 | color: #333333;
301 | overflow-x: auto;
302 | }
303 |
304 | .hljs-comment,
305 | .hljs-meta {
306 | color: #969896;
307 | }
308 |
309 | .hljs-string,
310 | .hljs-variable,
311 | .hljs-template-variable,
312 | .hljs-strong,
313 | .hljs-emphasis,
314 | .hljs-quote {
315 | color: #df5000;
316 | }
317 |
318 | .hljs-keyword,
319 | .hljs-selector-tag,
320 | .hljs-type {
321 | color: #a71d5d;
322 | }
323 |
324 | .hljs-literal,
325 | .hljs-symbol,
326 | .hljs-bullet,
327 | .hljs-attribute {
328 | color: #0086b3;
329 | }
330 |
331 | .hljs-section,
332 | .hljs-name {
333 | color: #63a35c;
334 | }
335 |
336 | .hljs-tag {
337 | color: #333333;
338 | }
339 |
340 | .hljs-title,
341 | .hljs-attr,
342 | .hljs-selector-id,
343 | .hljs-selector-class,
344 | .hljs-selector-attr,
345 | .hljs-selector-pseudo {
346 | color: #795da3;
347 | }
348 |
349 | .hljs-addition {
350 | color: #55a532;
351 | background-color: #eaffea;
352 | }
353 |
354 | .hljs-deletion {
355 | color: #bd2c00;
356 | background-color: #ffecec;
357 | }
358 |
359 | .hljs-link {
360 | text-decoration: underline;
361 | }
362 |
363 | pre{
364 | background: #fff;
365 | }
366 |
367 |
368 |
369 |
370 |
371 |
--------------------------------------------------------------------------------
/static/font/demo_fontclass.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | IconFont
7 |
8 |
9 |
10 |
11 |
12 |
IconFont 图标
13 |
14 |
15 | -
16 |
17 |
购物车空
18 | .icon-gouwuchekong
19 |
20 |
21 | -
22 |
23 |
用户反馈
24 | .icon-yonghufankui03
25 |
26 |
27 | -
28 |
29 |
餐厅推荐
30 | .icon-cantingtuijian
31 |
32 |
33 | -
34 |
35 |
取号排队
36 | .icon-quhaopaidui
37 |
38 |
39 | -
40 |
41 |
倒计时
42 | .icon-daojishi
43 |
44 |
45 | -
46 |
47 |
WIFI 我fi
48 | .icon-wifiwofi
49 |
50 |
51 | -
52 |
53 |
下一步
54 | .icon-next
55 |
56 |
57 | -
58 |
59 |
闹铃
60 | .icon-naoling
61 |
62 |
63 | -
64 |
65 |
支付
66 | .icon-zhifu
67 |
68 |
69 | -
70 |
71 |
客服热线
72 | .icon-kefurexian
73 |
74 |
75 | -
76 |
77 |
位置
78 | .icon-weizhi
79 |
80 |
81 | -
82 |
83 |
首页
84 | .icon-iconfonthome0
85 |
86 |
87 | -
88 |
89 |
锁
90 | .icon-iconset0114
91 |
92 |
93 | -
94 |
95 |
相机
96 | .icon-xiangji
97 |
98 |
99 | -
100 |
101 |
返回箭头
102 | .icon-fanhuijiantou
103 |
104 |
105 | -
106 |
107 |
对号
108 | .icon-duihaocheckmark17
109 |
110 |
111 | -
112 |
113 |
23_购物袋
114 | .icon-23gouwudai
115 |
116 |
117 | -
118 |
119 |
日历 日期
120 | .icon-riliriqi
121 |
122 |
123 | -
124 |
125 |
停车位
126 | .icon-tingchewei
127 |
128 |
129 | -
130 |
131 |
我的收藏
132 | .icon-wodeshoucang
133 |
134 |
135 | -
136 |
137 |
眼镜
138 | .icon-yanjing
139 |
140 |
141 | -
142 |
143 |
座位
144 | .icon-zuowei
145 |
146 |
147 | -
148 |
149 |
待付款
150 | .icon-daifukuan
151 |
152 |
153 | -
154 |
155 |
选项
156 | .icon-icon
157 |
158 |
159 | -
160 |
161 |
减号
162 | .icon-jianhao
163 |
164 |
165 | -
166 |
167 |
关于我们
168 | .icon-guanyuwomen-copy
169 |
170 |
171 | -
172 |
173 |
收藏
174 | .icon-shoucang1
175 |
176 |
177 | -
178 |
179 |
提醒
180 | .icon-remind
181 |
182 |
183 | -
184 |
185 |
清除缓存
186 | .icon-icon901
187 |
188 |
189 | -
190 |
191 |
设置
192 | .icon-shezhi2
193 |
194 |
195 | -
196 |
197 |
我的收藏
198 | .icon-wodeshoucang1
199 |
200 |
201 | -
202 |
203 |
设置
204 | .icon-shezhi3
205 |
206 |
207 | -
208 |
209 |
减号
210 | .icon-jianhao3
211 |
212 |
213 | -
214 |
215 |
加号
216 | .icon-jiahao1
217 |
218 |
219 | -
220 |
221 |
时间
222 | .icon-time
223 |
224 |
225 | -
226 |
227 |
关闭
228 | .icon-guanbi
229 |
230 |
231 | -
232 |
233 |
性别
234 | .icon-xingbie
235 |
236 |
237 | -
238 |
239 |
性别
240 | .icon-xingbie1
241 |
242 |
243 | -
244 |
245 |
自己
246 | .icon-personal
247 |
248 |
249 | -
250 |
251 |
人数
252 | .icon-renshu
253 |
254 |
255 | -
256 |
257 |
手机
258 | .icon-shouji
259 |
260 |
261 | -
262 |
263 |
说明
264 | .icon-ziyuan
265 |
266 |
267 | -
268 |
269 |
搜索
270 | .icon-search
271 |
272 |
273 | -
274 |
275 |
酒水
276 | .icon-jiushui
277 |
278 |
279 | -
280 |
281 |
座位
282 | .icon-zuowei2
283 |
284 |
285 | -
286 |
287 |
加号
288 | .icon-jiahao
289 |
290 |
291 | -
292 |
293 |
勾选
294 | .icon-gouxuan
295 |
296 |
297 | -
298 |
299 |
减号
300 | .icon-jianhao1
301 |
302 |
303 | -
304 |
305 |
头像
306 | .icon-touxiang
307 |
308 |
309 | -
310 |
311 |
分享
312 | .icon-fenxiang
313 |
314 |
315 | -
316 |
317 |
加号
318 | .icon-jiahao2
319 |
320 |
321 | -
322 |
323 |
设置
324 | .icon-shezhi
325 |
326 |
327 | -
328 |
329 |
下一步
330 | .icon-jiantou1-right
331 |
332 |
333 | -
334 |
335 |
用户反馈
336 | .icon-yonghufankui
337 |
338 |
339 | -
340 |
341 |
电话
342 | .icon-dianhua
343 |
344 |
345 | -
346 |
347 |
设置
348 | .icon-shezhi1
349 |
350 |
351 | -
352 |
353 |
空调
354 | .icon-kongtiao
355 |
356 |
357 | -
358 |
359 |
订单记录
360 | .icon-dingdan
361 |
362 |
363 | -
364 |
365 |
勾选
366 | .icon-gouxuan1
367 |
368 |
369 | -
370 |
371 |
对号
372 | .icon-duihao
373 |
374 |
375 | -
376 |
377 |
向下边框三角
378 | .icon-down-trangle
379 |
380 |
381 | -
382 |
383 |
删除/数字面板编辑态
384 | .icon-chuyidong
385 |
386 |
387 | -
388 |
389 |
优惠券
390 | .icon-youhuiquan
391 |
392 |
393 | -
394 |
395 |
点选 - 勾
396 | .icon-gou
397 |
398 |
399 | -
400 |
401 |
手机
402 | .icon-icon--
403 |
404 |
405 | -
406 |
407 |
邀请好友
408 | .icon-yaoqinghaoyou
409 |
410 |
411 | -
412 |
413 |
删 除
414 | .icon-shanchu
415 |
416 |
417 | -
418 |
419 |
浏览记录
420 | .icon-liulanjilu
421 |
422 |
423 | -
424 |
425 |
减号
426 | .icon-jianhao2
427 |
428 |
429 | -
430 |
431 |
晴天,太阳
432 | .icon-icon--1
433 |
434 |
435 | -
436 |
437 |
收 藏
438 | .icon-shoucang
439 |
440 |
441 | -
442 |
443 |
用餐
444 | .icon-yongcan
445 |
446 |
447 | -
448 |
449 |
扫一扫
450 | .icon-scan_icon
451 |
452 |
453 |
454 |
455 |
font-class引用
456 |
457 |
458 |
font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。
459 |
与unicode使用方式相比,具有如下特点:
460 |
461 | - 兼容性良好,支持ie8+,及所有现代浏览器。
462 | - 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。
463 | - 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。
464 | - 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
465 |
466 |
使用步骤如下:
467 |
第一步:引入项目下面生成的fontclass代码:
468 |
469 |
470 |
471 |
第二步:挑选相应图标并获取类名,应用于页面:
472 |
<i class="iconfont icon-xxx"></i>
473 |
474 | "iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。
475 |
476 |
477 |
478 |
479 |
--------------------------------------------------------------------------------
/static/font/demo_symbol.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | IconFont
7 |
8 |
9 |
10 |
24 |
25 |
26 |
27 |
IconFont 图标
28 |
29 |
30 | -
31 |
34 |
购物车空
35 | #icon-gouwuchekong
36 |
37 |
38 | -
39 |
42 |
用户反馈
43 | #icon-yonghufankui03
44 |
45 |
46 | -
47 |
50 |
餐厅推荐
51 | #icon-cantingtuijian
52 |
53 |
54 | -
55 |
58 |
取号排队
59 | #icon-quhaopaidui
60 |
61 |
62 | -
63 |
66 |
倒计时
67 | #icon-daojishi
68 |
69 |
70 | -
71 |
74 |
WIFI 我fi
75 | #icon-wifiwofi
76 |
77 |
78 | -
79 |
82 |
下一步
83 | #icon-next
84 |
85 |
86 | -
87 |
90 |
闹铃
91 | #icon-naoling
92 |
93 |
94 | -
95 |
98 |
支付
99 | #icon-zhifu
100 |
101 |
102 | -
103 |
106 |
客服热线
107 | #icon-kefurexian
108 |
109 |
110 | -
111 |
114 |
位置
115 | #icon-weizhi
116 |
117 |
118 | -
119 |
122 |
首页
123 | #icon-iconfonthome0
124 |
125 |
126 | -
127 |
130 |
锁
131 | #icon-iconset0114
132 |
133 |
134 | -
135 |
138 |
相机
139 | #icon-xiangji
140 |
141 |
142 | -
143 |
146 |
返回箭头
147 | #icon-fanhuijiantou
148 |
149 |
150 | -
151 |
154 |
对号
155 | #icon-duihaocheckmark17
156 |
157 |
158 | -
159 |
162 |
23_购物袋
163 | #icon-23gouwudai
164 |
165 |
166 | -
167 |
170 |
日历 日期
171 | #icon-riliriqi
172 |
173 |
174 | -
175 |
178 |
停车位
179 | #icon-tingchewei
180 |
181 |
182 | -
183 |
186 |
我的收藏
187 | #icon-wodeshoucang
188 |
189 |
190 | -
191 |
194 |
眼镜
195 | #icon-yanjing
196 |
197 |
198 | -
199 |
202 |
座位
203 | #icon-zuowei
204 |
205 |
206 | -
207 |
210 |
待付款
211 | #icon-daifukuan
212 |
213 |
214 | -
215 |
218 |
选项
219 | #icon-icon
220 |
221 |
222 | -
223 |
226 |
减号
227 | #icon-jianhao
228 |
229 |
230 | -
231 |
234 |
关于我们
235 | #icon-guanyuwomen-copy
236 |
237 |
238 | -
239 |
242 |
收藏
243 | #icon-shoucang1
244 |
245 |
246 | -
247 |
250 |
提醒
251 | #icon-remind
252 |
253 |
254 | -
255 |
258 |
清除缓存
259 | #icon-icon901
260 |
261 |
262 | -
263 |
266 |
设置
267 | #icon-shezhi2
268 |
269 |
270 | -
271 |
274 |
我的收藏
275 | #icon-wodeshoucang1
276 |
277 |
278 | -
279 |
282 |
设置
283 | #icon-shezhi3
284 |
285 |
286 | -
287 |
290 |
减号
291 | #icon-jianhao3
292 |
293 |
294 | -
295 |
298 |
加号
299 | #icon-jiahao1
300 |
301 |
302 | -
303 |
306 |
时间
307 | #icon-time
308 |
309 |
310 | -
311 |
314 |
关闭
315 | #icon-guanbi
316 |
317 |
318 | -
319 |
322 |
性别
323 | #icon-xingbie
324 |
325 |
326 | -
327 |
330 |
性别
331 | #icon-xingbie1
332 |
333 |
334 | -
335 |
338 |
自己
339 | #icon-personal
340 |
341 |
342 | -
343 |
346 |
人数
347 | #icon-renshu
348 |
349 |
350 | -
351 |
354 |
手机
355 | #icon-shouji
356 |
357 |
358 | -
359 |
362 |
说明
363 | #icon-ziyuan
364 |
365 |
366 | -
367 |
370 |
搜索
371 | #icon-search
372 |
373 |
374 | -
375 |
378 |
酒水
379 | #icon-jiushui
380 |
381 |
382 | -
383 |
386 |
座位
387 | #icon-zuowei2
388 |
389 |
390 | -
391 |
394 |
加号
395 | #icon-jiahao
396 |
397 |
398 | -
399 |
402 |
勾选
403 | #icon-gouxuan
404 |
405 |
406 | -
407 |
410 |
减号
411 | #icon-jianhao1
412 |
413 |
414 | -
415 |
418 |
头像
419 | #icon-touxiang
420 |
421 |
422 | -
423 |
426 |
分享
427 | #icon-fenxiang
428 |
429 |
430 | -
431 |
434 |
加号
435 | #icon-jiahao2
436 |
437 |
438 | -
439 |
442 |
设置
443 | #icon-shezhi
444 |
445 |
446 | -
447 |
450 |
下一步
451 | #icon-jiantou1-right
452 |
453 |
454 | -
455 |
458 |
用户反馈
459 | #icon-yonghufankui
460 |
461 |
462 | -
463 |
466 |
电话
467 | #icon-dianhua
468 |
469 |
470 | -
471 |
474 |
设置
475 | #icon-shezhi1
476 |
477 |
478 | -
479 |
482 |
空调
483 | #icon-kongtiao
484 |
485 |
486 | -
487 |
490 |
订单记录
491 | #icon-dingdan
492 |
493 |
494 | -
495 |
498 |
勾选
499 | #icon-gouxuan1
500 |
501 |
502 | -
503 |
506 |
对号
507 | #icon-duihao
508 |
509 |
510 | -
511 |
514 |
向下边框三角
515 | #icon-down-trangle
516 |
517 |
518 | -
519 |
522 |
删除/数字面板编辑态
523 | #icon-chuyidong
524 |
525 |
526 | -
527 |
530 |
优惠券
531 | #icon-youhuiquan
532 |
533 |
534 | -
535 |
538 |
点选 - 勾
539 | #icon-gou
540 |
541 |
542 | -
543 |
546 |
手机
547 | #icon-icon--
548 |
549 |
550 | -
551 |
554 |
邀请好友
555 | #icon-yaoqinghaoyou
556 |
557 |
558 | -
559 |
562 |
删 除
563 | #icon-shanchu
564 |
565 |
566 | -
567 |
570 |
浏览记录
571 | #icon-liulanjilu
572 |
573 |
574 | -
575 |
578 |
减号
579 | #icon-jianhao2
580 |
581 |
582 | -
583 |
586 |
晴天,太阳
587 | #icon-icon--1
588 |
589 |
590 | -
591 |
594 |
收 藏
595 | #icon-shoucang
596 |
597 |
598 | -
599 |
602 |
用餐
603 | #icon-yongcan
604 |
605 |
606 | -
607 |
610 |
扫一扫
611 | #icon-scan_icon
612 |
613 |
614 |
615 |
616 |
617 |
symbol引用
618 |
619 |
620 |
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
621 | 这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点:
622 |
623 | - 支持多色图标了,不再受单色限制。
624 | - 通过一些技巧,支持像字体那样,通过
font-size
,color
来调整样式。
625 | - 兼容性较差,支持 ie9+,及现代浏览器。
626 | - 浏览器渲染svg的性能一般,还不如png。
627 |
628 |
使用步骤如下:
629 |
第一步:引入项目下面生成的symbol代码:
630 |
631 |
第二步:加入通用css代码(引入一次就行):
632 |
<style type="text/css">
633 | .icon {
634 | width: 1em; height: 1em;
635 | vertical-align: -0.15em;
636 | fill: currentColor;
637 | overflow: hidden;
638 | }
639 | </style>
640 |
第三步:挑选相应图标并获取类名,应用于页面:
641 |
<svg class="icon" aria-hidden="true">
642 | <use xlink:href="#icon-xxx"></use>
643 | </svg>
644 |
645 |
646 |
647 |
648 |
--------------------------------------------------------------------------------
/static/font/demo_unicode.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | IconFont
7 |
8 |
9 |
29 |
30 |
31 |
32 |
IconFont 图标
33 |
34 |
35 | -
36 |
37 |
购物车空
38 | 
39 |
40 |
41 | -
42 |
43 |
用户反馈
44 | 
45 |
46 |
47 | -
48 |
49 |
餐厅推荐
50 | 
51 |
52 |
53 | -
54 |
55 |
取号排队
56 | 
57 |
58 |
59 | -
60 |
61 |
倒计时
62 | 
63 |
64 |
65 | -
66 |
67 |
WIFI 我fi
68 | 
69 |
70 |
71 | -
72 |
73 |
下一步
74 | 
75 |
76 |
77 | -
78 |
79 |
闹铃
80 | 
81 |
82 |
83 | -
84 |
85 |
支付
86 | 
87 |
88 |
89 | -
90 |
91 |
客服热线
92 | 
93 |
94 |
95 | -
96 |
97 |
位置
98 | 
99 |
100 |
101 | -
102 |
103 |
首页
104 | 
105 |
106 |
107 | -
108 |
109 |
锁
110 | 
111 |
112 |
113 | -
114 |
115 |
相机
116 | 
117 |
118 |
119 | -
120 |
121 |
返回箭头
122 | 
123 |
124 |
125 | -
126 |
127 |
对号
128 | 
129 |
130 |
131 | -
132 |
133 |
23_购物袋
134 | 
135 |
136 |
137 | -
138 |
139 |
日历 日期
140 | 
141 |
142 |
143 | -
144 |
145 |
停车位
146 | 
147 |
148 |
149 | -
150 |
151 |
我的收藏
152 | 
153 |
154 |
155 | -
156 |
157 |
眼镜
158 | 
159 |
160 |
161 | -
162 |
163 |
座位
164 | 
165 |
166 |
167 | -
168 |
169 |
待付款
170 | 
171 |
172 |
173 | -
174 |
175 |
选项
176 | 
177 |
178 |
179 | -
180 |
181 |
减号
182 | 
183 |
184 |
185 | -
186 |
187 |
关于我们
188 | 
189 |
190 |
191 | -
192 |
193 |
收藏
194 | 
195 |
196 |
197 | -
198 |
199 |
提醒
200 | 
201 |
202 |
203 | -
204 |
205 |
清除缓存
206 | 
207 |
208 |
209 | -
210 |
211 |
设置
212 | 
213 |
214 |
215 | -
216 |
217 |
我的收藏
218 | 
219 |
220 |
221 | -
222 |
223 |
设置
224 | 
225 |
226 |
227 | -
228 |
229 |
减号
230 | 
231 |
232 |
233 | -
234 |
235 |
加号
236 | 
237 |
238 |
239 | -
240 |
241 |
时间
242 | 
243 |
244 |
245 | -
246 |
247 |
关闭
248 | 
249 |
250 |
251 | -
252 |
253 |
性别
254 | 
255 |
256 |
257 | -
258 |
259 |
性别
260 | 
261 |
262 |
263 | -
264 |
265 |
自己
266 | 
267 |
268 |
269 | -
270 |
271 |
人数
272 | 
273 |
274 |
275 | -
276 |
277 |
手机
278 | 
279 |
280 |
281 | -
282 |
283 |
说明
284 | 
285 |
286 |
287 | -
288 |
289 |
搜索
290 | 
291 |
292 |
293 | -
294 |
295 |
酒水
296 | 
297 |
298 |
299 | -
300 |
301 |
座位
302 | 
303 |
304 |
305 | -
306 |
307 |
加号
308 | 
309 |
310 |
311 | -
312 |
313 |
勾选
314 | 
315 |
316 |
317 | -
318 |
319 |
减号
320 | 
321 |
322 |
323 | -
324 |
325 |
头像
326 | 
327 |
328 |
329 | -
330 |
331 |
分享
332 | 
333 |
334 |
335 | -
336 |
337 |
加号
338 | 
339 |
340 |
341 | -
342 |
343 |
设置
344 | 
345 |
346 |
347 | -
348 |
349 |
下一步
350 | 
351 |
352 |
353 | -
354 |
355 |
用户反馈
356 | 
357 |
358 |
359 | -
360 |
361 |
电话
362 | 
363 |
364 |
365 | -
366 |
367 |
设置
368 | 
369 |
370 |
371 | -
372 |
373 |
空调
374 | 
375 |
376 |
377 | -
378 |
379 |
订单记录
380 | 
381 |
382 |
383 | -
384 |
385 |
勾选
386 | 
387 |
388 |
389 | -
390 |
391 |
对号
392 | 
393 |
394 |
395 | -
396 |
397 |
向下边框三角
398 | 
399 |
400 |
401 | -
402 |
403 |
删除/数字面板编辑态
404 | 
405 |
406 |
407 | -
408 |
409 |
优惠券
410 | 
411 |
412 |
413 | -
414 |
415 |
点选 - 勾
416 | 
417 |
418 |
419 | -
420 |
421 |
手机
422 | 
423 |
424 |
425 | -
426 |
427 |
邀请好友
428 | 
429 |
430 |
431 | -
432 |
433 |
删 除
434 | 
435 |
436 |
437 | -
438 |
439 |
浏览记录
440 | 
441 |
442 |
443 | -
444 |
445 |
减号
446 | 
447 |
448 |
449 | -
450 |
451 |
晴天,太阳
452 | 
453 |
454 |
455 | -
456 |
457 |
收 藏
458 | 
459 |
460 |
461 | -
462 |
463 |
用餐
464 | 
465 |
466 |
467 | -
468 |
469 |
扫一扫
470 | 
471 |
472 |
473 |
474 |
unicode引用
475 |
476 |
477 |
unicode是字体在网页端最原始的应用方式,特点是:
478 |
479 | - 兼容性最好,支持ie6+,及所有现代浏览器。
480 | - 支持按字体的方式去动态调整图标大小,颜色等等。
481 | - 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
482 |
483 |
484 | 注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式
485 |
486 |
unicode使用步骤如下:
487 |
第一步:拷贝项目下面生成的font-face
488 |
@font-face {
489 | font-family: 'iconfont';
490 | src: url('iconfont.eot');
491 | src: url('iconfont.eot?#iefix') format('embedded-opentype'),
492 | url('iconfont.woff') format('woff'),
493 | url('iconfont.ttf') format('truetype'),
494 | url('iconfont.svg#iconfont') format('svg');
495 | }
496 |
497 |
第二步:定义使用iconfont的样式
498 |
.iconfont{
499 | font-family:"iconfont" !important;
500 | font-size:16px;font-style:normal;
501 | -webkit-font-smoothing: antialiased;
502 | -webkit-text-stroke-width: 0.2px;
503 | -moz-osx-font-smoothing: grayscale;
504 | }
505 |
506 |
第三步:挑选相应图标并获取字体编码,应用于页面
507 |
<i class="iconfont">3</i>
508 |
509 |
510 | "iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。
511 |
512 |
513 |
514 |
515 |
516 |
517 |
--------------------------------------------------------------------------------
/static/font/iconfont.css:
--------------------------------------------------------------------------------
1 |
2 | @font-face {font-family: "iconfont";
3 | src: url('iconfont.eot?t=1521084252892'); /* IE9*/
4 | src: url('iconfont.eot?t=1521084252892#iefix') format('embedded-opentype'), /* IE6-IE8 */
5 | url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
6 | url('iconfont.ttf?t=1521084252892') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
7 | url('iconfont.svg?t=1521084252892#iconfont') format('svg'); /* iOS 4.1- */
8 | }
9 |
10 | .iconfont {
11 | font-family:"iconfont" !important;
12 | font-size:16px;
13 | font-style:normal;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | }
17 |
18 | .icon-gouwuchekong:before { content: "\e618"; }
19 |
20 | .icon-yonghufankui03:before { content: "\e600"; }
21 |
22 | .icon-cantingtuijian:before { content: "\e723"; }
23 |
24 | .icon-quhaopaidui:before { content: "\e62d"; }
25 |
26 | .icon-daojishi:before { content: "\e62c"; }
27 |
28 | .icon-wifiwofi:before { content: "\e707"; }
29 |
30 | .icon-next:before { content: "\e61a"; }
31 |
32 | .icon-naoling:before { content: "\e632"; }
33 |
34 | .icon-zhifu:before { content: "\e628"; }
35 |
36 | .icon-kefurexian:before { content: "\e64f"; }
37 |
38 | .icon-weizhi:before { content: "\e624"; }
39 |
40 | .icon-iconfonthome0:before { content: "\e629"; }
41 |
42 | .icon-iconset0114:before { content: "\e625"; }
43 |
44 | .icon-xiangji:before { content: "\e63d"; }
45 |
46 | .icon-fanhuijiantou:before { content: "\e61b"; }
47 |
48 | .icon-duihaocheckmark17:before { content: "\e770"; }
49 |
50 | .icon-23gouwudai:before { content: "\e64e"; }
51 |
52 | .icon-riliriqi:before { content: "\e807"; }
53 |
54 | .icon-tingchewei:before { content: "\e75a"; }
55 |
56 | .icon-wodeshoucang:before { content: "\e613"; }
57 |
58 | .icon-yanjing:before { content: "\e63e"; }
59 |
60 | .icon-zuowei:before { content: "\e65d"; }
61 |
62 | .icon-daifukuan:before { content: "\e68e"; }
63 |
64 | .icon-icon:before { content: "\e67a"; }
65 |
66 | .icon-jianhao:before { content: "\e615"; }
67 |
68 | .icon-guanyuwomen-copy:before { content: "\e734"; }
69 |
70 | .icon-shoucang1:before { content: "\e63b"; }
71 |
72 | .icon-remind:before { content: "\e623"; }
73 |
74 | .icon-icon901:before { content: "\e611"; }
75 |
76 | .icon-shezhi2:before { content: "\e644"; }
77 |
78 | .icon-wodeshoucang1:before { content: "\e604"; }
79 |
80 | .icon-shezhi3:before { content: "\e7a0"; }
81 |
82 | .icon-jianhao3:before { content: "\e60e"; }
83 |
84 | .icon-jiahao1:before { content: "\e60f"; }
85 |
86 | .icon-time:before { content: "\e656"; }
87 |
88 | .icon-guanbi:before { content: "\e620"; }
89 |
90 | .icon-xingbie:before { content: "\e65b"; }
91 |
92 | .icon-xingbie1:before { content: "\e619"; }
93 |
94 | .icon-personal:before { content: "\e627"; }
95 |
96 | .icon-renshu:before { content: "\e616"; }
97 |
98 | .icon-shouji:before { content: "\e62a"; }
99 |
100 | .icon-ziyuan:before { content: "\e65a"; }
101 |
102 | .icon-search:before { content: "\e704"; }
103 |
104 | .icon-jiushui:before { content: "\e639"; }
105 |
106 | .icon-zuowei2:before { content: "\e626"; }
107 |
108 | .icon-jiahao:before { content: "\e6ad"; }
109 |
110 | .icon-gouxuan:before { content: "\e617"; }
111 |
112 | .icon-jianhao1:before { content: "\e60a"; }
113 |
114 | .icon-touxiang:before { content: "\e605"; }
115 |
116 | .icon-fenxiang:before { content: "\e61c"; }
117 |
118 | .icon-jiahao2:before { content: "\e60b"; }
119 |
120 | .icon-shezhi:before { content: "\e608"; }
121 |
122 | .icon-jiantou1-right:before { content: "\e601"; }
123 |
124 | .icon-yonghufankui:before { content: "\e61d"; }
125 |
126 | .icon-dianhua:before { content: "\e62e"; }
127 |
128 | .icon-shezhi1:before { content: "\e60c"; }
129 |
130 | .icon-kongtiao:before { content: "\e607"; }
131 |
132 | .icon-dingdan:before { content: "\e612"; }
133 |
134 | .icon-gouxuan1:before { content: "\e61f"; }
135 |
136 | .icon-duihao:before { content: "\e602"; }
137 |
138 | .icon-down-trangle:before { content: "\e610"; }
139 |
140 | .icon-chuyidong:before { content: "\e606"; }
141 |
142 | .icon-youhuiquan:before { content: "\e62b"; }
143 |
144 | .icon-gou:before { content: "\e60d"; }
145 |
146 | .icon-icon--:before { content: "\e650"; }
147 |
148 | .icon-yaoqinghaoyou:before { content: "\e61e"; }
149 |
150 | .icon-shanchu:before { content: "\e603"; }
151 |
152 | .icon-liulanjilu:before { content: "\e65f"; }
153 |
154 | .icon-jianhao2:before { content: "\e621"; }
155 |
156 | .icon-icon--1:before { content: "\e79b"; }
157 |
158 | .icon-shoucang:before { content: "\e609"; }
159 |
160 | .icon-yongcan:before { content: "\e622"; }
161 |
162 | .icon-scan_icon:before { content: "\e614"; }
163 |
164 |
--------------------------------------------------------------------------------
/static/font/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaoshengkai/mpvue-FG/e6457fbd934936ce32e593f6dbe8df19232f5565/static/font/iconfont.eot
--------------------------------------------------------------------------------
/static/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaoshengkai/mpvue-FG/e6457fbd934936ce32e593f6dbe8df19232f5565/static/font/iconfont.ttf
--------------------------------------------------------------------------------
/static/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaoshengkai/mpvue-FG/e6457fbd934936ce32e593f6dbe8df19232f5565/static/font/iconfont.woff
--------------------------------------------------------------------------------
/static/location.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xiaoshengkai/mpvue-FG/e6457fbd934936ce32e593f6dbe8df19232f5565/static/location.png
--------------------------------------------------------------------------------