├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── data.json ├── demo ├── index.html └── static │ ├── css │ ├── app.c5ca394b9ad8115aaccccf4a693d400a.css │ └── app.c5ca394b9ad8115aaccccf4a693d400a.css.map │ ├── img │ └── mitugongzai.99d8881.png │ └── js │ ├── app.b5fcc98af3bedc9674f4.js │ ├── app.b5fcc98af3bedc9674f4.js.map │ ├── manifest.8659f724d6d5ef01e4d3.js │ ├── manifest.8659f724d6d5ef01e4d3.js.map │ ├── vendor.48225ddb19e40fbf0e01.js │ └── vendor.48225ddb19e40fbf0e01.js.map ├── index.html ├── lib ├── swiper.css ├── swiper.js └── util.js ├── package.json ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ ├── cart │ │ └── header.vue │ ├── goods │ │ ├── buyControl.vue │ │ ├── detail.vue │ │ └── img.vue │ ├── index │ │ ├── banner.vue │ │ ├── body.vue │ │ ├── footer.vue │ │ ├── header.vue │ │ ├── intelligenceGoods.vue │ │ ├── menu.vue │ │ ├── newGoods.vue │ │ ├── newHomeGoods.vue │ │ └── starGoods.vue │ ├── loading.vue │ └── model.vue ├── images │ ├── loading.gif │ ├── mi_load.png │ ├── mitugongzai.png │ └── svg │ │ ├── back.svg │ │ ├── back1.svg │ │ ├── cart.svg │ │ ├── footer_cart.svg │ │ ├── footer_cart1.svg │ │ ├── footer_home.svg │ │ ├── footer_home1.svg │ │ ├── footer_lei.svg │ │ ├── footer_lei1.svg │ │ ├── footer_me.svg │ │ ├── footer_me1.svg │ │ ├── home.svg │ │ ├── mi.svg │ │ ├── search.svg │ │ └── search1.svg ├── main.js └── views │ ├── cart.vue │ ├── goods.vue │ └── index.vue └── static └── .gitkeep /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false, 5 | "env": { 6 | "test": { 7 | "plugins": [ "istanbul" ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.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 | module.exports = { 2 | root: true, 3 | parser: 'babel-eslint', 4 | parserOptions: { 5 | sourceType: 'module' 6 | }, 7 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 8 | extends: 'standard', 9 | // required to lint *.vue files 10 | plugins: [ 11 | 'html' 12 | ], 13 | // add your custom rules here 14 | 'rules': { 15 | // allow paren-less arrow functions 16 | 'arrow-parens': 0, 17 | // allow async-await 18 | 'generator-star-spacing': 0, 19 | // allow debugger during development 20 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 21 | 'semi': ['error', 'always'], 22 | 'indent': 0 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | .idea/ 5 | npm-debug.log 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XiaoMi-Shop 2 | 3 | > 这是一个高仿小米商城的项目,会通过半年左右的时间逐步完善整个项目。本项目仅用于 Vue.js 实战项目的学习,不作为商业用途。 4 | 5 | # 2019-03-07日补充 6 | 7 | 首先谢谢大家的star和fork,也祝大家工作顺利,升职加薪。 8 | 9 | 这个项目是大概2年前这个时间开始的,主要是为了练习vue的写法及提高js能力。因为喜欢,所以想做的尽善尽美,从而完全一比一复制了当时的小米网,所以看起来还算精致,也获得了不少关注。本来打算尽量写的完善一点,所以列了个待完善的表,想逐步完善,可是随着能力的提升,再去完善这个项目几乎没有提升了,再加上工作确实也忙,需要学习的越来越多,所以今天决定:这个项目就此结束,不在维护了。大家可以移步学习别人的项目。 10 | 11 | 今天写这个说明的目的也是和那些关注过我的项目及和我学习过、讨论过问题的朋友们说声抱歉,因为确实有好多人在使用及学习本项目。截至目前,平均我每周都能收到2个多邮件,有寻求帮助的,有请教问题的,还有寻求合作的,时间允许的情况下,我都有认真回复过。从今天起,将不在回复了,后期关注度下降后会隐藏该项目。谢谢进来的朋友们!结束 12 | 13 | 附上一个我做的个人站点,有空可以去看看哦。https://beautifulboys.github.io/ 14 | 15 | ## 项目地址 16 | 17 | 克隆项目用:https://github.com/beautifulBoys/vue-XiaoMi-Shop.git 18 | 19 | ## 写在前面 20 | 21 | 本项目所有用到的全部是目前前端最热门的技术 ! ! 22 | 23 | 通过本项目的学习与研究,你可以初步掌握vue的基本用法,css预处理器(less)的用法,router(路由)的用法,还可以加深了解vue-cli(脚手架)的使用,webpack的使用,babel编译代码...等等。 24 | 25 | 前端变化莫测,学无止境。作者本人也在通过学习不断巩固和提高。如果你有极客精神,我们不妨一起进步。 26 | 27 | 28 | ## 项目预览 29 | 30 | 用Chrome浏览器 手机模式打开,或者拖拽让浏览器变窄效果更好。自己对比体验一下吧^-^ 31 | 32 | [小米官方商城(web)](http://m.mi.com/) 33 | 34 | [小米商城 高仿版](https://beautifulboys.github.io/phone/mi/) 35 | 36 | 下载体验(下载demo文件夹,双击index.html即可查看)。 37 | 38 |

39 | 40 | 41 | 42 | 43 | 44 |

45 | ## 项目组成 46 | 47 | * vue.js 2.0 48 | * vue-cli 49 | * less 50 | * webpack 51 | * ES6 52 | * eslint 53 | * vue-router 54 | * npm 55 | * babel 56 | 57 | ## 将要实现功能 58 | 59 | 1. 首页的轮播图效果 60 | 2. header随scroll透明度变化     √ 61 | 3. 首页banner图点击链接 62 | 4. 首页登录功能的实现 63 | 5. 首页底部编码实现        √ 64 | 6. 商品详情页头部搜索功能 65 | 7. 详情页大图轮播的功能      √ 66 | 8. 加入购物车动画 67 | 9. 购物车页面及功能       √ 68 | 10. 页面切换动画 69 | 11. 图片列表的懒加载 70 | 71 | ## 项目安装及运行 72 | 73 | ``` bash 74 | # 安装项目依赖 75 | npm install 76 | 77 | # 启动服务 浏览器本地访问http://localhost:8081 78 | npm run dev 79 | 80 | # 编译打包 81 | npm run build 82 | ``` 83 | 84 | ## 说明 85 | 86 | 本项目适合有一定vue基础的同学进阶学习,零基础也可以。 87 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | // https://github.com/shelljs/shelljs 2 | require('./check-versions')() 3 | require('shelljs/global') 4 | env.NODE_ENV = 'production' 5 | 6 | var path = require('path') 7 | var config = require('../config') 8 | var ora = require('ora') 9 | var webpack = require('webpack') 10 | var webpackConfig = require('./webpack.prod.conf') 11 | 12 | console.log( 13 | ' Tip:\n' + 14 | ' Built files are meant to be served over an HTTP server.\n' + 15 | ' Opening index.html over file:// won\'t work.\n' 16 | ) 17 | 18 | var spinner = ora('building for production...') 19 | spinner.start() 20 | 21 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 22 | rm('-rf', assetsPath) 23 | mkdir('-p', assetsPath) 24 | cp('-R', 'static/*', assetsPath) 25 | 26 | webpack(webpackConfig, function (err, stats) { 27 | spinner.stop() 28 | if (err) throw err 29 | process.stdout.write(stats.toString({ 30 | colors: true, 31 | modules: false, 32 | children: false, 33 | chunks: false, 34 | chunkModules: false 35 | }) + '\n') 36 | }) 37 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var semver = require('semver') 2 | var chalk = require('chalk') 3 | var packageConfig = require('../package.json') 4 | var exec = function (cmd) { 5 | return require('child_process') 6 | .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 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /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 | var config = require('../config') 3 | if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 4 | var path = require('path') 5 | var express = require('express') 6 | var webpack = require('webpack') 7 | var proxyMiddleware = require('http-proxy-middleware') 8 | var webpackConfig = require('./webpack.dev.conf') 9 | 10 | // default port where dev server listens for incoming traffic 11 | var port = process.env.PORT || config.dev.port 12 | // Define HTTP proxies to your custom API backend 13 | // https://github.com/chimurai/http-proxy-middleware 14 | var proxyTable = config.dev.proxyTable 15 | 16 | var app = express() 17 | var compiler = webpack(webpackConfig) 18 | 19 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 20 | publicPath: webpackConfig.output.publicPath, 21 | quiet: true 22 | }) 23 | 24 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 25 | log: () => {} 26 | }) 27 | // force page reload when html-webpack-plugin template changes 28 | compiler.plugin('compilation', function (compilation) { 29 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 30 | hotMiddleware.publish({ action: 'reload' }) 31 | cb() 32 | }) 33 | }) 34 | 35 | // proxy api requests 36 | Object.keys(proxyTable).forEach(function (context) { 37 | var options = proxyTable[context] 38 | if (typeof options === 'string') { 39 | options = { target: options } 40 | } 41 | app.use(proxyMiddleware(context, options)) 42 | }) 43 | 44 | // handle fallback for HTML5 history API 45 | app.use(require('connect-history-api-fallback')()) 46 | 47 | // serve webpack bundle output 48 | app.use(devMiddleware) 49 | 50 | // enable hot-reload and state-preserving 51 | // compilation error display 52 | app.use(hotMiddleware) 53 | 54 | // serve pure static assets 55 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 56 | app.use(staticPath, express.static('./static')) 57 | 58 | var uri = 'http://localhost:' + port 59 | 60 | devMiddleware.waitUntilValid(function () { 61 | console.log('> Listening at ' + uri + '\n') 62 | }) 63 | 64 | module.exports = app.listen(port, function (err) { 65 | if (err) { 66 | console.log(err) 67 | return 68 | } 69 | }) 70 | -------------------------------------------------------------------------------- /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 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | // Extract CSS when that option is specified 29 | // (which is the case during production build) 30 | if (options.extract) { 31 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 32 | } else { 33 | return ['vue-style-loader', sourceLoader].join('!') 34 | } 35 | } 36 | 37 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 38 | return { 39 | css: generateLoaders(['css']), 40 | postcss: generateLoaders(['css']), 41 | less: generateLoaders(['css', 'less']), 42 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 43 | scss: generateLoaders(['css', 'sass']), 44 | stylus: generateLoaders(['css', 'stylus']), 45 | styl: generateLoaders(['css', 'stylus']) 46 | } 47 | } 48 | 49 | // Generate loaders for standalone style files (outside of .vue) 50 | exports.styleLoaders = function (options) { 51 | var output = [] 52 | var loaders = exports.cssLoaders(options) 53 | for (var extension in loaders) { 54 | var loader = loaders[extension] 55 | output.push({ 56 | test: new RegExp('\\.' + extension + '$'), 57 | loader: loader 58 | }) 59 | } 60 | return output 61 | } 62 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var config = require('../config'); 3 | var utils = require('./utils'); 4 | var projectRoot = path.resolve(__dirname, '../'); 5 | 6 | var env = process.env.NODE_ENV; 7 | // check env & config/index.js to decide whether to enable CSS source maps for the 8 | // various preprocessor loaders added to vue-loader at the end of this file 9 | var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap); 10 | var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap); 11 | var useCssSourceMap = cssSourceMapDev || cssSourceMapProd; 12 | 13 | module.exports = { 14 | entry: { 15 | app: './src/main.js' 16 | }, 17 | output: { 18 | path: config.build.assetsRoot, 19 | publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, 20 | filename: '[name].js' 21 | }, 22 | resolve: { 23 | extensions: ['', '.js', '.vue', '.json'], 24 | fallback: [path.join(__dirname, '../node_modules')], 25 | alias: { 26 | 'vue$': 'vue/dist/vue.common.js', 27 | 'src': path.resolve(__dirname, '../src'), 28 | 'assets': path.resolve(__dirname, '../src/assets'), 29 | 'components': path.resolve(__dirname, '../src/components') 30 | } 31 | }, 32 | devServer:{ 33 | host:"192.168.175.103", 34 | filename: "index.js", 35 | publicPath: "/dist/", 36 | historyApiFallback:true, 37 | hot:true, 38 | inline:true, 39 | progress:true, 40 | console: true, 41 | stats: { colors: true } 42 | }, 43 | resolveLoader: { 44 | fallback: [path.join(__dirname, '../node_modules')] 45 | }, 46 | module: { 47 | preLoaders: [ 48 | { 49 | test: /\.vue$/, 50 | loader: 'eslint', 51 | include: [ 52 | path.join(projectRoot, 'src') 53 | ], 54 | exclude: /node_modules/ 55 | }, 56 | { 57 | test: /\.js$/, 58 | loader: 'eslint', 59 | include: [ 60 | path.join(projectRoot, 'src') 61 | ], 62 | exclude: /node_modules/ 63 | } 64 | ], 65 | loaders: [ 66 | { 67 | test: /\.vue$/, 68 | loader: 'vue' 69 | }, 70 | { 71 | test: /\.js$/, 72 | loader: 'babel', 73 | include: [ 74 | path.join(projectRoot, 'src') 75 | ], 76 | exclude: /node_modules/ 77 | }, 78 | { 79 | test: /\.json$/, 80 | loader: 'json' 81 | }, 82 | { 83 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 84 | loader: 'url', 85 | query: { 86 | limit: 10000, 87 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 88 | } 89 | }, 90 | { 91 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 92 | loader: 'url', 93 | query: { 94 | limit: 10000, 95 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 96 | } 97 | } 98 | ] 99 | }, 100 | eslint: { 101 | formatter: require('eslint-friendly-formatter') 102 | }, 103 | vue: { 104 | loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }), 105 | postcss: [ 106 | require('autoprefixer')({ 107 | browsers: ['last 2 versions'] 108 | }) 109 | ] 110 | } 111 | }; 112 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var webpack = require('webpack') 3 | var merge = require('webpack-merge') 4 | var utils = require('./utils') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrors = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // eval-source-map is faster for development 19 | devtool: '#eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.optimize.OccurrenceOrderPlugin(), 26 | new webpack.HotModuleReplacementPlugin(), 27 | new webpack.NoErrorsPlugin(), 28 | // https://github.com/ampedandwired/html-webpack-plugin 29 | new HtmlWebpackPlugin({ 30 | filename: 'index.html', 31 | template: 'index.html', 32 | inject: true 33 | }), 34 | new FriendlyErrors() 35 | ] 36 | }) 37 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var env = config.build.env 10 | 11 | var webpackConfig = merge(baseWebpackConfig, { 12 | module: { 13 | loaders: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true }) 14 | }, 15 | devtool: config.build.productionSourceMap ? '#source-map' : false, 16 | output: { 17 | path: config.build.assetsRoot, 18 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 19 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 20 | }, 21 | vue: { 22 | loaders: utils.cssLoaders({ 23 | sourceMap: config.build.productionSourceMap, 24 | extract: true 25 | }) 26 | }, 27 | plugins: [ 28 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 29 | new webpack.DefinePlugin({ 30 | 'process.env': env 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | } 36 | }), 37 | new webpack.optimize.OccurrenceOrderPlugin(), 38 | // extract css into its own file 39 | new ExtractTextPlugin(utils.assetsPath('css/[name].[contenthash].css')), 40 | // generate dist index.html with correct asset hash for caching. 41 | // you can customize output by editing /index.html 42 | // see https://github.com/ampedandwired/html-webpack-plugin 43 | new HtmlWebpackPlugin({ 44 | filename: config.build.index, 45 | template: 'index.html', 46 | inject: true, 47 | minify: { 48 | removeComments: true, 49 | collapseWhitespace: true, 50 | removeAttributeQuotes: true 51 | // more options: 52 | // https://github.com/kangax/html-minifier#options-quick-reference 53 | }, 54 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 55 | chunksSortMode: 'dependency' 56 | }), 57 | // split vendor js into its own file 58 | new webpack.optimize.CommonsChunkPlugin({ 59 | name: 'vendor', 60 | minChunks: function (module, count) { 61 | // any required modules inside node_modules are extracted to vendor 62 | return ( 63 | module.resource && 64 | /\.js$/.test(module.resource) && 65 | module.resource.indexOf( 66 | path.join(__dirname, '../node_modules') 67 | ) === 0 68 | ) 69 | } 70 | }), 71 | // extract webpack runtime and module manifest to its own file in order to 72 | // prevent vendor hash from being updated whenever app bundle is updated 73 | new webpack.optimize.CommonsChunkPlugin({ 74 | name: 'manifest', 75 | chunks: ['vendor'] 76 | }) 77 | ] 78 | }) 79 | 80 | if (config.build.productionGzip) { 81 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 82 | 83 | webpackConfig.plugins.push( 84 | new CompressionWebpackPlugin({ 85 | asset: '[path].gz[query]', 86 | algorithm: 'gzip', 87 | test: new RegExp( 88 | '\\.(' + 89 | config.build.productionGzipExtensions.join('|') + 90 | ')$' 91 | ), 92 | threshold: 10240, 93 | minRatio: 0.8 94 | }) 95 | ) 96 | } 97 | 98 | module.exports = webpackConfig 99 | -------------------------------------------------------------------------------- /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: true, 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 | }, 19 | dev: { 20 | env: require('./dev.env'), 21 | port: 8081, 22 | assetsSubDirectory: 'static', 23 | assetsPublicPath: '/', 24 | proxyTable: {}, 25 | // CSS Sourcemaps off by default because relative paths are "buggy" 26 | // with this option, according to the CSS-Loader README 27 | // (https://github.com/webpack/css-loader#sourcemaps) 28 | // In our experience, they generally work as expected, 29 | // just be aware of this issue when enabling this option. 30 | cssSourceMap: false 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /data.json: -------------------------------------------------------------------------------- 1 | { 2 | "banner": { 3 | "bannerTop": [ 4 | "https://i8.mifile.cn/v1/a1/45e7752a-192a-c2b2-3978-a43ccfc49de0.webp", 5 | "https://i8.mifile.cn/v1/a1/89a33760-240c-e5e2-50ff-b8a864a2aba5.webp", 6 | "https://i8.mifile.cn/v1/a1/2e1d1dc6-536e-933b-df99-428343fdf62c.webp" 7 | ], 8 | "img1": "https://i8.mifile.cn/v1/a1/89a33760-240c-e5e2-50ff-b8a864a2aba5.webp", 9 | "img2": "https://i8.mifile.cn/v1/a1/f6225781-335e-1d31-a99f-760977c18c65.webp?width=720&heihgt=200" 10 | }, 11 | "menu": { 12 | "img1": "https://i8.mifile.cn/v1/a1/6bc707a3-927e-ebcd-3c7a-1e91d6f793aa.webp?width=360&heihgt=513", 13 | "img2": "https://i8.mifile.cn/v1/a1/bb2a27db-0433-47dc-b55c-c36b81fa7e41.webp?width=360&heihgt=256", 14 | "img3": "https://i8.mifile.cn/v1/a1/1fbd6d1f-05bf-f22e-cba8-250dfade437d.webp?width=360&heihgt=256" 15 | }, 16 | "starGoods": { 17 | "img": "https://i8.mifile.cn/v1/a1/6ee55dad-dadc-79d4-1c37-d1694c088d40.webp?width=720&heihgt=440", 18 | "starGoodsList": [ 19 | { 20 | "imgSrc": "https://i8.mifile.cn/v1/a1/03d1e94c-b0ed-9a22-70d7-cc6cbd90ec79.webp?width=360&height=360", 21 | "title": "红米Note 4 移动定制版", 22 | "desc": "全金属十核旗舰手机", 23 | "price": 1199, 24 | "rom": "64G", 25 | "color": "樱花粉" 26 | }, 27 | { 28 | "imgSrc": "https://i8.mifile.cn/v1/a1/ecb64c5e-9741-1535-dab6-28d47e2b0d10.webp?width=360&height=360", 29 | "title": "红米4 32G版", 30 | "desc": "长续航金属千元旗舰手机", 31 | "price": 899, 32 | "rom": "64G", 33 | "color": "樱花粉" 34 | }, 35 | { 36 | "imgSrc": "https://i8.mifile.cn/v1/a1/97c2e91e-523e-3988-3abc-aacc824f2737.webp?width=360&height=360", 37 | "title": "小米手环2", 38 | "desc": "OLED显示屏,触摸操作", 39 | "price": 149, 40 | "rom": "64G", 41 | "color": "樱花粉" 42 | }, 43 | { 44 | "imgSrc": "https://i8.mifile.cn/v1/a1/6f19ca85-2326-8e80-0ecc-16134c33a89b.webp?width=360&height=360", 45 | "title": "小米净水器(厨下式)", 46 | "desc": "健康家庭必备", 47 | "price": 1999, 48 | "rom": "64G", 49 | "color": "樱花粉" 50 | }, 51 | { 52 | "imgSrc": "https://i8.mifile.cn/v1/a1/22f1a143-59fc-fc88-ced9-4f6edf5f4f6e.webp?width=360&height=360", 53 | "title": "米家小白智能摄像头", 54 | "desc": "360度 全景带夜视", 55 | "price": 399, 56 | "rom": "64G", 57 | "color": "樱花粉" 58 | }, 59 | { 60 | "imgSrc": "https://i8.mifile.cn/v1/a1/fd88c85e-d74f-1002-61d0-e001fbb02cf6.webp?width=360&height=360", 61 | "title": "米家恒温电水壶", 62 | "desc": "一杯水的温度,刚刚好", 63 | "price": 199, 64 | "rom": "64G", 65 | "color": "樱花粉" 66 | } 67 | ] 68 | }, 69 | "newGoods": { 70 | "img": "https://i8.mifile.cn/v1/a1/5e7d9b5b-3e6a-3720-7ea2-50f92aad856c.webp?width=720&heihgt=440", 71 | "newGoodsList": [ 72 | { 73 | "imgSrc": "https://i8.mifile.cn/v1/a1/38f1fa24-815b-c6a6-925f-65460ce541e4.webp?width=360&height=360", 74 | "title": "小米USB充电器", 75 | "desc": "精致小巧,便携出行", 76 | "price": 49 77 | }, 78 | { 79 | "imgSrc": "https://i8.mifile.cn/v1/a1/9f7e141c-87a7-82c6-7170-599504ce2630.webp?width=360&height=360", 80 | "title": "小米便携鼠标", 81 | "desc": "轻薄便携,含电池仅重77.5g", 82 | "price": 99 83 | }, 84 | { 85 | "imgSrc": "https://i8.mifile.cn/v1/a1/a4c8c780-acbd-23c7-6ae2-f1abe5e5d34d.webp?width=360&height=360", 86 | "title": "WIFI放大器 2", 87 | "desc": "速率翻倍 覆盖无忧", 88 | "price": 49 89 | }, 90 | { 91 | "imgSrc": "https://i8.mifile.cn/v1/a1/21763033-81c2-8cc5-f012-ae1616059ce9.webp?width=360&height=360", 92 | "title": "小米移动电源2", 93 | "desc": "便携轻便,出行无忧", 94 | "price": 149 95 | }, 96 | { 97 | "imgSrc": "https://i8.mifile.cn/v1/a1/f935b1a8-92e9-22d6-7c6c-c602b33fd750.webp?width=360&height=360", 98 | "title": "防雾霾口罩", 99 | "desc": "PM2.5颗粒物,健康防护", 100 | "price": 69 101 | }, 102 | { 103 | "imgSrc": "https://i8.mifile.cn/v1/a1/1fd7f261-1d68-784e-a1f7-17384d00dc1d.webp?width=360&height=360", 104 | "title": "小米米家电动滑板车", 105 | "desc": "便携折叠,自由穿行", 106 | "price": 1999 107 | } 108 | ] 109 | }, 110 | "intelligenceGoods": { 111 | "img": "https://i8.mifile.cn/v1/a1/41e31ea6-a34e-69d4-aba3-a9ec2cf2f802.webp?width=720&heihgt=440", 112 | "intelligenceGoodsList": [ 113 | { 114 | "imgSrc": "https://i8.mifile.cn/v1/a1/97c2e91e-523e-3988-3abc-aacc824f2737.webp?width=360&height=360", 115 | "title": "小米手环2", 116 | "desc": "OLED显示屏,触摸操作", 117 | "price": 149 118 | }, 119 | { 120 | "imgSrc": "https://i8.mifile.cn/v1/a1/1ef4e430-b65a-2655-791a-680a49668005.webp?width=360&height=360", 121 | "title": "小米移动电源2", 122 | "desc": "双向快充,仅14.1mm薄", 123 | "price": 79 124 | }, 125 | { 126 | "imgSrc": "https://i8.mifile.cn/v1/a1/5f78e5ba-cd16-0c67-3784-c64651596f94.webp?width=360&height=360", 127 | "title": "米加扫地机器人", 128 | "desc": "智商高,扫的干净扫的快", 129 | "price": 1699 130 | }, 131 | { 132 | "imgSrc": "https://i8.mifile.cn/v1/a1/24a3df8b-415c-a7df-96b6-a125d9e91746.webp?width=360&height=360", 133 | "title": "小米路由器3", 134 | "desc": "全向高增益4天线", 135 | "price": 149 136 | } 137 | ] 138 | }, 139 | "newHomeGoods": { 140 | "img": "https://i8.mifile.cn/v1/a1/e70cee4f-e1fd-0f0b-8d3b-e695d0b42323.webp", 141 | "newHomeGoodsList": [ 142 | { 143 | "imgSrc": "https://i8.mifile.cn/v1/a1/03d1e94c-b0ed-9a22-70d7-cc6cbd90ec79.webp?width=360&height=360", 144 | "title": "红米Note 4 移动定制版", 145 | "desc": "全金属十核旗舰手机", 146 | "price": 1199 147 | }, 148 | { 149 | "imgSrc": "https://i8.mifile.cn/v1/a1/ecb64c5e-9741-1535-dab6-28d47e2b0d10.webp?width=360&height=360", 150 | "title": "红米4 32G版", 151 | "desc": "长续航金属千元旗舰手机", 152 | "price": 899 153 | }, 154 | { 155 | "imgSrc": "https://i8.mifile.cn/v1/a1/97c2e91e-523e-3988-3abc-aacc824f2737.webp?width=360&height=360", 156 | "title": "小米手环2", 157 | "desc": "OLED显示屏,触摸操作", 158 | "price": 149 159 | }, 160 | { 161 | "imgSrc": "https://i8.mifile.cn/v1/a1/6f19ca85-2326-8e80-0ecc-16134c33a89b.webp?width=360&height=360", 162 | "title": "小米净水器(厨下式)", 163 | "desc": "健康家庭必备", 164 | "price": 1999 165 | }, 166 | { 167 | "imgSrc": "https://i8.mifile.cn/v1/a1/22f1a143-59fc-fc88-ced9-4f6edf5f4f6e.webp?width=360&height=360", 168 | "title": "米家小白智能摄像头", 169 | "desc": "360度 全景带夜视", 170 | "price": 399 171 | }, 172 | { 173 | "imgSrc": "https://i8.mifile.cn/v1/a1/fd88c85e-d74f-1002-61d0-e001fbb02cf6.webp?width=360&height=360", 174 | "title": "米家恒温电水壶", 175 | "desc": "一杯水的温度,刚刚好", 176 | "price": 199 177 | }, 178 | { 179 | "imgSrc": "https://i8.mifile.cn/v1/a1/38f1fa24-815b-c6a6-925f-65460ce541e4.webp?width=360&height=360", 180 | "title": "小米USB充电器", 181 | "desc": "精致小巧,便携出行", 182 | "price": 49 183 | }, 184 | { 185 | "imgSrc": "https://i8.mifile.cn/v1/a1/9f7e141c-87a7-82c6-7170-599504ce2630.webp?width=360&height=360", 186 | "title": "小米便携鼠标", 187 | "desc": "轻薄便携,含电池仅重77.5g", 188 | "price": 99 189 | }, 190 | { 191 | "imgSrc": "https://i8.mifile.cn/v1/a1/a4c8c780-acbd-23c7-6ae2-f1abe5e5d34d.webp?width=360&height=360", 192 | "title": "WIFI放大器 2", 193 | "desc": "速率翻倍 覆盖无忧", 194 | "price": 49 195 | }, 196 | { 197 | "imgSrc": "https://i8.mifile.cn/v1/a1/21763033-81c2-8cc5-f012-ae1616059ce9.webp?width=360&height=360", 198 | "title": "小米移动电源2", 199 | "desc": "便携轻便,出行无忧", 200 | "price": 149 201 | }, 202 | { 203 | "imgSrc": "https://i8.mifile.cn/v1/a1/f935b1a8-92e9-22d6-7c6c-c602b33fd750.webp?width=360&height=360", 204 | "title": "防雾霾口罩", 205 | "desc": "PM2.5颗粒物,健康防护", 206 | "price": 69 207 | }, 208 | { 209 | "imgSrc": "https://i8.mifile.cn/v1/a1/1fd7f261-1d68-784e-a1f7-17384d00dc1d.webp?width=360&height=360", 210 | "title": "小米米家电动滑板车", 211 | "desc": "便携折叠,自由穿行", 212 | "price": 1999 213 | } 214 | ] 215 | }, 216 | "detail": { 217 | "img": [ 218 | "https://i8.mifile.cn/v1/a1/8264fcff-a5db-6d74-cfc2-aa0ea8d6805a.webp", 219 | "https://i8.mifile.cn/v1/a1/02437ee9-f6e6-0f81-71b5-61333c1822d4.webp", 220 | "https://i8.mifile.cn/v1/a1/754a3bb3-14aa-1dc1-c8f2-fd12a22cd64e.webp" 221 | ], 222 | "detailList": [ 223 | "https://i8.mifile.cn/v1/a1/5700ba33-8b7c-bb14-b6fe-258d6309993d.webp", 224 | "https://i8.mifile.cn/v1/a1/a43e9125-59b3-6dd2-6d2b-587d5614e2d4.webp", 225 | "https://i8.mifile.cn/v1/a1/123ff16a-2064-5a5f-66ff-c967836afa23.webp", 226 | "https://i8.mifile.cn/v1/a1/158832b9-89b4-901e-b30d-59c42190b9ad.webp", 227 | "https://i8.mifile.cn/v1/a1/a6bb656f-27c4-695e-483a-44b087d246c8.webp", 228 | "https://i8.mifile.cn/v1/a1/a807d8bd-10ea-c4b9-d2c4-5e31685cb04d.webp", 229 | "https://i8.mifile.cn/v1/a1/a4946495-1afb-25bd-c1a7-e4c6197d50d9.webp", 230 | "https://i8.mifile.cn/v1/a1/cf8400fd-8d7c-1d10-0459-d0186b61a2a4.webp", 231 | "https://i8.mifile.cn/v1/a1/7a779a78-9fd9-e87c-5473-2e710e894bdc.webp", 232 | "https://i8.mifile.cn/v1/a1/608e27b2-6725-73c7-c4bb-86a75a3336a4.webp", 233 | "https://i8.mifile.cn/v1/a1/48504beb-6f3b-3c0c-f38e-fe30e3ff6d37.webp", 234 | "https://i8.mifile.cn/v1/a1/c1040e71-7a3c-e4f9-1c7e-d35690798fc7.webp", 235 | "https://i8.mifile.cn/v1/a1/4dc17959-3cfb-ca3a-8c2c-0941f12a7912.webp", 236 | "https://i8.mifile.cn/v1/a1/63a1f9ba-2e16-3f83-38f0-de07ef2108b5.webp", 237 | "https://i8.mifile.cn/v1/a1/51749d01-d7a6-3d9a-937c-fc982966291c.webp", 238 | "https://i8.mifile.cn/v1/a1/192a4869-8857-39fd-3a2d-b01f2669e2ce.webp", 239 | "https://i8.mifile.cn/v1/a1/2fd53659-9251-9781-6124-7ebe7bc18e4f.webp", 240 | "https://i8.mifile.cn/v1/a1/6d6bfd8d-da13-d707-9a72-15710c4b1364.webp", 241 | "https://i8.mifile.cn/v1/a1/5b8eb8a7-4a04-fe77-91a1-7664d0207a28.webp", 242 | "https://i8.mifile.cn/v1/a1/b35fc2b3-329a-eab1-74b2-8ab955cbd374.webp", 243 | "https://i8.mifile.cn/v1/a1/0bac064d-9098-fe37-5ce7-42fceba83160.webp", 244 | "https://i8.mifile.cn/v1/a1/e6aa6506-6571-25a4-0b40-cbfe57baf1a6.webp", 245 | "https://i8.mifile.cn/v1/a1/9d770dbd-2023-26c6-b672-6a15eec764ef.webp", 246 | "https://i8.mifile.cn/v1/a1/aad5f5c5-147e-46eb-22e7-6827c7f65164.webp", 247 | "https://i8.mifile.cn/v1/a1/476e16c0-13db-49d6-9570-3fe20f2dc3d9.webp", 248 | "https://i8.mifile.cn/v1/a1/e7c40d54-2a6e-f293-3561-dc01be915eab.webp", 249 | "https://i8.mifile.cn/v1/a1/760291fd-7657-4711-302a-7021cccca134.webp", 250 | "https://i8.mifile.cn/v1/a1/9fa77a3f-f778-eb32-3e4f-d588c927788f.webp", 251 | "https://i8.mifile.cn/v1/a1/501d8a62-2d0a-2016-f225-cd6073b555d5.webp" 252 | ], 253 | "attrList": [ 254 | "https://i8.mifile.cn/v1/a1/b842a9b2-a9b9-39a2-3b83-ec05d8f2d5b3.webp", 255 | "https://i8.mifile.cn/v1/a1/8201d243-8591-26f0-ee06-e73bb118712d.webp", 256 | "https://i8.mifile.cn/v1/a1/df69a034-4c4f-fef5-fa2a-32f62458d5e2.webp", 257 | "https://i8.mifile.cn/v1/a1/0554258d-85b3-8169-86d7-3d3c9a605cf8.webp", 258 | "https://i8.mifile.cn/v1/a1/f394c0ef-aa3d-ce9e-9529-d1a7cbe27202.webp", 259 | "https://i8.mifile.cn/v1/a1/1137f0f8-1a7b-c81c-8b80-a60137e3999f.webp", 260 | "https://i8.mifile.cn/v1/a1/76788e58-4c4d-f878-7e3a-8732cd658f76.webp", 261 | "https://i8.mifile.cn/v1/a1/4d8fb225-17db-7d59-f580-53462f0a69d7.webp", 262 | "https://i8.mifile.cn/v1/a1/0da47b1d-cfbe-4369-b6e9-50f1dd610bc5.webp", 263 | "https://i8.mifile.cn/v1/a1/f02cfbb5-d362-5c74-b7a5-7729c6cb75d3.webp", 264 | "https://i8.mifile.cn/v1/a1/4a796142-f064-51e2-cddb-882aee93b838.webp", 265 | "https://i8.mifile.cn/v1/a1/76346306-832d-6d37-71ab-29702fbeff82.webp", 266 | "https://i8.mifile.cn/v1/a1/e864c3de-0a8a-0c37-8eaf-b69f789b49c2.webp", 267 | "https://i8.mifile.cn/v1/a1/83c5d6da-6988-704f-dcb3-b34b9d2a75e7.webp", 268 | "https://i8.mifile.cn/v1/a1/f2472fce-7af0-c7b0-d357-a081edd07de6.webp" 269 | ], 270 | "goodsAttr": { 271 | "title": "红米Note 4 移动定制版 64GB版 金色", 272 | "price": 1199, 273 | "desc": { 274 | "tag": "全网通双卡双待", 275 | "sc": "Helio X20 十核旗舰处理器 / 全金属一体化机身 / 4100mAh 大电量" 276 | }, 277 | "attr": { 278 | "color": [ 279 | { 280 | "id": 0, 281 | "text": "天空灰" 282 | }, 283 | { 284 | "id": 1, 285 | "text": "玫瑰金" 286 | }, 287 | { 288 | "id": 2, 289 | "text": "钻石蓝" 290 | } 291 | ], 292 | "ram": [ 293 | { 294 | "id": 0, 295 | "text": "16GB" 296 | }, 297 | { 298 | "id": 1, 299 | "text": "32GB" 300 | }, 301 | { 302 | "id": 2, 303 | "text": "64GB" 304 | } 305 | ] 306 | } 307 | } 308 | }, 309 | "searchImg": "https://cdn.cnbj0.fds.api.mi-img.com/b2c-mimall-media/a425e85fa21ed71c2a8d64fe86f833f9.jpg?width=720&heihgt=200" 310 | } 311 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 小米-手机版
-------------------------------------------------------------------------------- /demo/static/css/app.c5ca394b9ad8115aaccccf4a693d400a.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack:///src/components/index/index.vue","webpack:///webpack:///src/components/loading.vue","webpack:///webpack:///src/components/index/header.vue","webpack:///webpack:///src/components/index/banner.vue","webpack:///webpack:///src/components/index/menu.vue","webpack:///webpack:///src/components/index/body.vue","webpack:///webpack:///src/components/index/starGoods.vue","webpack:///webpack:///src/components/index/newGoods.vue","webpack:///webpack:///src/components/index/intelligenceGoods.vue","webpack:///webpack:///src/components/index/newHomeGoods.vue","webpack:///webpack:///src/components/index/footer.vue","webpack:///webpack:///src/components/goods/goods.vue","webpack:///webpack:///lib/swiper.css","webpack:///webpack:///src/components/goods/img.vue","webpack:///webpack:///src/components/goods/buyControl.vue","webpack:///webpack:///src/components/goods/detail.vue","webpack:///webpack:///src/components/model.vue","webpack:///webpack:///src/components/test/test.vue"],"names":[],"mappings":"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","file":"static/css/app.c5ca394b9ad8115aaccccf4a693d400a.css","sourcesContent":["\n.app[data-v-197b45e3]{background:#fff;overflow-y:scroll;width:100%;height:100%\n}\n.banner-img[data-v-197b45e3]{width:100%\n}\n.banner-img img[data-v-197b45e3]{width:100%\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/index.vue","\n.base{width:100%;height:100%;position:fixed;z-index:200;display:block\n}\n.load-once{background:#F87300 url(../images/mi_load.png) no-repeat center center;background-size:80px;opacity:1;transition:all .5s\n}\n.load-once.remove{opacity:0\n}\n.load{background:url(../images/mi_load.png) no-repeat center center;background-size:80px;opacity:1\n}\n.fade-enter-active,.fade-leave-active{transition:opacity .5s\n}\n.fade-enter,.fade-leave-to{opacity:0\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/loading.vue","\n.screen[data-v-61e3d24c]{width:100%;height:100%;background:#fff;display:block;position:fixed;top:0;left:0;overflow:hidden\n}\n.absolute100[data-v-61e3d24c]{width:100%;height:100%;position:absolute;top:0;left:0\n}\n.main[data-v-61e3d24c]{width:100%;margin:40px 0 0 0\n}\n.main .title[data-v-61e3d24c]{line-height:40px;font-size:12px;color:#333;text-indent:20px\n}\n.main img[data-v-61e3d24c]{width:100%\n}\n.main ul[data-v-61e3d24c]{padding:0 10px\n}\n.main ul li[data-v-61e3d24c]{list-style-type:none;font-size:12px;padding:8px 10px;margin:5px;display:inline-block;background:#F8F2EC;border:1px solid #FAC288\n}\n.top[data-v-61e3d24c]{font-family:\"Microsoft YaHei\";width:100%;height:40px;font-size:0;position:fixed;color:#fff\n}\n.top .main-head[data-v-61e3d24c]{width:100%;height:100%;position:absolute;top:0;left:0\n}\n.top .bg[data-v-61e3d24c]{width:100%;height:100%;position:absolute;top:0;left:0;background:#ff6700\n}\n.top .bg1[data-v-61e3d24c]{width:100%;height:100%;position:absolute;top:0;left:0;background:#efefef\n}\n.top.focus[data-v-61e3d24c]{background:#f5f5f5;color:#888\n}\n.top .left[data-v-61e3d24c]{width:15%;line-height:40px;font-size:0;text-align:center;display:inline-block\n}\n.top .left.logo[data-v-61e3d24c]{width:15%;height:40px;background:url(\"../../images/svg/mi.svg\") no-repeat center center;background-size:30px\n}\n.top .left.back[data-v-61e3d24c]{width:15%;height:40px;background:url(\"../../images/svg/back.svg\") no-repeat center center;background-size:20px\n}\n.top .headIcon[data-v-61e3d24c]{height:30px;width:30px\n}\n.top .center[data-v-61e3d24c]{width:70%;font-size:16px;display:inline-block;vertical-align:top\n}\n.top .center input[data-v-61e3d24c]{width:100%;line-height:30px;height:30px;background:#fff;border:none;padding:0;margin:5px 0 0 0;outline:none;text-indent:10px\n}\n.top .center input.border[data-v-61e3d24c]{box-sizing:border-box;border:1px solid #dedede\n}\n.top .right[data-v-61e3d24c]{width:15%;font-size:16px;display:inline-block;line-height:40px;text-align:center;margin:-1px 0 0 0;vertical-align:top;padding:0\n}\n.top .right.search[data-v-61e3d24c]{width:15%;height:40px;background:url(\"../../images/svg/search.svg\") no-repeat center center;background-size:20px\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/header.vue","\n.banner-box[data-v-a2f1f12a]{width:100%;font-size:0\n}\n.banner-box .banner-img[data-v-a2f1f12a]{width:100%\n}\n.banner-box .banner-img img[data-v-a2f1f12a]{width:100%\n}\n.banner-box .bottom[data-v-a2f1f12a]{width:100%\n}\n.banner-box .bottom img[data-v-a2f1f12a]{width:100%\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/banner.vue","\n.img100 img[data-v-28a509de]{width:100%\n}\n.menu-box[data-v-28a509de]{width:100%;font-size:0\n}\n.menu-box .menu[data-v-28a509de]{overflow:hidden\n}\n.menu-box .menu .left[data-v-28a509de]{width:50%;float:left\n}\n.menu-box .menu .left img[data-v-28a509de]{width:100%\n}\n.menu-box .menu .right[data-v-28a509de]{width:50%;float:right\n}\n.menu-box .menu .right img[data-v-28a509de]{width:100%\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/menu.vue","\n.body-box[data-v-9bc356be]{background:#f5f5f5\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/body.vue","\n.item-bottom .bottom[data-v-55c583b5]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.item-bottom .bottom .title[data-v-55c583b5]{width:100%;display:block;color:#333;line-height:25px\n}\n.item-bottom .bottom .desc[data-v-55c583b5]{width:100%;display:block;color:#666;font-size:12px\n}\n.item-bottom .bottom .price[data-v-55c583b5]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.img100 img[data-v-55c583b5]{width:100%\n}\n.star-box[data-v-55c583b5]{margin-top:2px;overflow:hidden;width:100%;background:#fff;font-family:\"Microsoft Yahei\"\n}\n.star-box .starBanner[data-v-55c583b5]{padding-top:7px;width:100%;font-size:0;border-bottom:2px solid #fff\n}\n.star-box .starBanner img[data-v-55c583b5]{width:100%\n}\n.star-box .item1[data-v-55c583b5]{width:50%;float:left;box-sizing:border-box;border-right:1px solid #fff;font-size:0\n}\n.star-box .item1 .top[data-v-55c583b5]{width:100%\n}\n.star-box .item1 .top img[data-v-55c583b5]{width:100%\n}\n.star-box .item1 .bottom[data-v-55c583b5]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.star-box .item1 .bottom .title[data-v-55c583b5]{width:100%;display:block;color:#333;line-height:25px\n}\n.star-box .item1 .bottom .desc[data-v-55c583b5]{width:100%;display:block;color:#666;font-size:12px\n}\n.star-box .item1 .bottom .price[data-v-55c583b5]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.star-box .item2[data-v-55c583b5]{width:50%;float:right;box-sizing:border-box;border-left:1px solid #fff;font-size:0\n}\n.star-box .item2 .bottom[data-v-55c583b5]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.star-box .item2 .bottom .title[data-v-55c583b5]{width:100%;display:block;color:#333;line-height:25px\n}\n.star-box .item2 .bottom .desc[data-v-55c583b5]{width:100%;display:block;color:#666;font-size:12px\n}\n.star-box .item2 .bottom .price[data-v-55c583b5]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.star-box .item2 .top[data-v-55c583b5]{width:100%\n}\n.star-box .item2 .top img[data-v-55c583b5]{width:100%\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/starGoods.vue","\n.item-bottom .bottom[data-v-b63411d6]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.item-bottom .bottom .title[data-v-b63411d6]{width:100%;display:block;color:#333;line-height:25px\n}\n.item-bottom .bottom .desc[data-v-b63411d6]{width:100%;display:block;color:#666;font-size:12px\n}\n.item-bottom .bottom .price[data-v-b63411d6]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.img100 img[data-v-b63411d6]{width:100%\n}\n.new-box[data-v-b63411d6]{margin-top:10px;overflow:hidden;width:100%;background:#fff;font-family:\"Microsoft Yahei\"\n}\n.new-box .newGoodsBanner[data-v-b63411d6]{padding-top:7px;width:100%;font-size:0;border-bottom:2px solid #fff\n}\n.new-box .newGoodsBanner img[data-v-b63411d6]{width:100%\n}\n.new-box .item1[data-v-b63411d6]{width:50%;float:left;box-sizing:border-box;border-right:1px solid #fff;font-size:0\n}\n.new-box .item1 .top[data-v-b63411d6]{width:100%\n}\n.new-box .item1 .top img[data-v-b63411d6]{width:100%\n}\n.new-box .item1 .bottom[data-v-b63411d6]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.new-box .item1 .bottom .title[data-v-b63411d6]{width:100%;display:block;color:#333;line-height:25px\n}\n.new-box .item1 .bottom .desc[data-v-b63411d6]{width:100%;display:block;color:#666;font-size:12px\n}\n.new-box .item1 .bottom .price[data-v-b63411d6]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.new-box .item2[data-v-b63411d6]{width:50%;float:right;box-sizing:border-box;border-left:1px solid #fff;font-size:0\n}\n.new-box .item2 .top[data-v-b63411d6]{width:100%\n}\n.new-box .item2 .top img[data-v-b63411d6]{width:100%\n}\n.new-box .item2 .bottom[data-v-b63411d6]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.new-box .item2 .bottom .title[data-v-b63411d6]{width:100%;display:block;color:#333;line-height:25px\n}\n.new-box .item2 .bottom .desc[data-v-b63411d6]{width:100%;display:block;color:#666;font-size:12px\n}\n.new-box .item2 .bottom .price[data-v-b63411d6]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/newGoods.vue","\n.item-bottom .bottom[data-v-5fe92ce8]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.item-bottom .bottom .title[data-v-5fe92ce8]{width:100%;display:block;color:#333;line-height:25px\n}\n.item-bottom .bottom .desc[data-v-5fe92ce8]{width:100%;display:block;color:#666;font-size:12px\n}\n.item-bottom .bottom .price[data-v-5fe92ce8]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.img100 img[data-v-5fe92ce8]{width:100%\n}\n.intelligence-box[data-v-5fe92ce8]{margin-top:10px;overflow:hidden;width:100%;background:#fff;font-family:\"Microsoft Yahei\"\n}\n.intelligence-box .intelligenceGoodsBanner[data-v-5fe92ce8]{padding-top:7px;width:100%;font-size:0;border-bottom:2px solid #fff\n}\n.intelligence-box .intelligenceGoodsBanner img[data-v-5fe92ce8]{width:100%\n}\n.intelligence-box .item1[data-v-5fe92ce8]{width:50%;float:left;box-sizing:border-box;border-right:1px solid #fff;font-size:0\n}\n.intelligence-box .item1 .top[data-v-5fe92ce8]{width:100%\n}\n.intelligence-box .item1 .top img[data-v-5fe92ce8]{width:100%\n}\n.intelligence-box .item1 .bottom[data-v-5fe92ce8]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.intelligence-box .item1 .bottom .title[data-v-5fe92ce8]{width:100%;display:block;color:#333;line-height:25px\n}\n.intelligence-box .item1 .bottom .desc[data-v-5fe92ce8]{width:100%;display:block;color:#666;font-size:12px\n}\n.intelligence-box .item1 .bottom .price[data-v-5fe92ce8]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.intelligence-box .item2[data-v-5fe92ce8]{width:50%;float:right;box-sizing:border-box;border-left:1px solid #fff;font-size:0\n}\n.intelligence-box .item2 .top[data-v-5fe92ce8]{width:100%\n}\n.intelligence-box .item2 .top img[data-v-5fe92ce8]{width:100%\n}\n.intelligence-box .item2 .bottom[data-v-5fe92ce8]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.intelligence-box .item2 .bottom .title[data-v-5fe92ce8]{width:100%;display:block;color:#333;line-height:25px\n}\n.intelligence-box .item2 .bottom .desc[data-v-5fe92ce8]{width:100%;display:block;color:#666;font-size:12px\n}\n.intelligence-box .item2 .bottom .price[data-v-5fe92ce8]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/intelligenceGoods.vue","\n.item-bottom .bottom[data-v-5334c176]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.item-bottom .bottom .title[data-v-5334c176]{width:100%;display:block;color:#333;line-height:25px\n}\n.item-bottom .bottom .desc[data-v-5334c176]{width:100%;display:block;color:#666;font-size:12px\n}\n.item-bottom .bottom .price[data-v-5334c176]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.img100 img[data-v-5334c176]{width:100%\n}\n.new-box[data-v-5334c176]{margin-top:10px;overflow:hidden;width:100%;background:#fff;font-family:\"Microsoft Yahei\"\n}\n.new-box .newHomeGoodsBanner[data-v-5334c176]{width:100%;font-size:0;border-bottom:2px solid #fff\n}\n.new-box .newHomeGoodsBanner img[data-v-5334c176]{width:100%\n}\n.new-box .item1[data-v-5334c176]{width:50%;float:left;box-sizing:border-box;border-right:1px solid #fff;font-size:0\n}\n.new-box .item1 .top[data-v-5334c176]{width:100%\n}\n.new-box .item1 .top img[data-v-5334c176]{width:100%\n}\n.new-box .item1 .bottom[data-v-5334c176]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.new-box .item1 .bottom .title[data-v-5334c176]{width:100%;display:block;color:#333;line-height:25px\n}\n.new-box .item1 .bottom .desc[data-v-5334c176]{width:100%;display:block;color:#666;font-size:12px\n}\n.new-box .item1 .bottom .price[data-v-5334c176]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n.new-box .item2[data-v-5334c176]{width:50%;float:right;box-sizing:border-box;border-left:1px solid #fff;font-size:0\n}\n.new-box .item2 .top[data-v-5334c176]{width:100%\n}\n.new-box .item2 .top img[data-v-5334c176]{width:100%\n}\n.new-box .item2 .bottom[data-v-5334c176]{width:100%;display:block;padding:5px 10px;box-sizing:border-box;font-size:14px\n}\n.new-box .item2 .bottom .title[data-v-5334c176]{width:100%;display:block;color:#333;line-height:25px\n}\n.new-box .item2 .bottom .desc[data-v-5334c176]{width:100%;display:block;color:#666;font-size:12px\n}\n.new-box .item2 .bottom .price[data-v-5334c176]{width:100%;display:block;font-size:14px;color:#ff601e;line-height:20px\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/newHomeGoods.vue","\n.footer[data-v-40b16e5a]{display:-ms-flexbox;display:flex;height:50px;position:fixed;bottom:0;width:100%;border-top:1px solid #ddd;background:#fff\n}\n.footer .item[data-v-40b16e5a]{width:100%;height:100%;line-height:75px;color:#888;font-size:12px;text-align:center\n}\n.footer .item.icon1[data-v-40b16e5a]{background:url(\"../../images/svg/footer_home1.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon11[data-v-40b16e5a]{color:#ff6700;background:url(\"../../images/svg/footer_home.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon2[data-v-40b16e5a]{background:url(\"../../images/svg/footer_lei1.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon22[data-v-40b16e5a]{color:#ff6700;background:url(\"../../images/svg/footer_lei.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon3[data-v-40b16e5a]{background:url(\"../../images/svg/footer_cart1.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon33[data-v-40b16e5a]{color:#ff6700;background:url(\"../../images/svg/footer_cart.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon4[data-v-40b16e5a]{background:url(\"../../images/svg/footer_me1.svg\") no-repeat center 25%;background-size:20px\n}\n.footer .item.icon44[data-v-40b16e5a]{color:#ff6700;background:url(\"../../images/svg/footer_me.svg\") no-repeat center 25%;background-size:20px\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/index/footer.vue","\n.wripper{font-family:\"Microsoft YaHei\"\n}\n.wripper .addCart{width:100%;height:50px;background:#fff;position:fixed;bottom:0;left:0;font-size:0;border-top:1px solid #efefef\n}\n.wripper .addCart div{text-align:center;line-height:50px;display:inline-block;font-size:0;overflow:hidden;height:50px\n}\n.wripper .addCart div.home{width:15%;color:#333;background:url(\"../../images/svg/home.svg\") no-repeat center center;background-size:25px\n}\n.wripper .addCart div.cart{width:15%;color:#333;background:url(\"../../images/svg/cart.svg\") no-repeat center center;background-size:25px\n}\n.wripper .addCart div.add{width:70%;color:#fff;height:50px\n}\n.wripper .addCart div.add span{text-align:center;line-height:40px;background:#FF5722;width:94%;height:40px;display:block;margin:5px auto 0 auto;font-size:16px\n}\n.alert h5{margin:5px;text-align:center;font-weight:normal;color:#333;font-size:16px\n}\n.alert h6{margin:10px;color:#ff8a27;font-size:14px;font-weight:normal\n}\n.alert p{line-height:25px;font-size:14px;margin:5px;color:#666\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/goods/goods.vue","/**\n * Swiper 3.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * \n * http://www.idangero.us/swiper/\n * \n * Copyright 2016, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: December 13, 2016\n */\n.swiper-container {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n /* Fix of Webkit flickering */\n z-index: 1;\n}\n.swiper-container-no-flexbox .swiper-slide {\n float: left;\n}\n.swiper-container-vertical > .swiper-wrapper {\n -webkit-box-orient: vertical;\n -moz-box-orient: vertical;\n -ms-flex-direction: column;\n -webkit-flex-direction: column;\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-transition-property: -webkit-transform;\n -moz-transition-property: -moz-transform;\n -o-transition-property: -o-transform;\n -ms-transition-property: -ms-transform;\n transition-property: transform;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n.swiper-container-android .swiper-slide,\n.swiper-wrapper {\n -webkit-transform: translate3d(0px, 0, 0);\n -moz-transform: translate3d(0px, 0, 0);\n -o-transform: translate(0px, 0px);\n -ms-transform: translate3d(0px, 0, 0);\n transform: translate3d(0px, 0, 0);\n}\n.swiper-container-multirow > .swiper-wrapper {\n -webkit-box-lines: multiple;\n -moz-box-lines: multiple;\n -ms-flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n.swiper-container-free-mode > .swiper-wrapper {\n -webkit-transition-timing-function: ease-out;\n -moz-transition-timing-function: ease-out;\n -ms-transition-timing-function: ease-out;\n -o-transition-timing-function: ease-out;\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n.swiper-slide {\n -webkit-flex-shrink: 0;\n -ms-flex: 0 0 auto;\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n}\n/* Auto Height */\n.swiper-container-autoheight,\n.swiper-container-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-container-autoheight .swiper-wrapper {\n -webkit-box-align: start;\n -ms-flex-align: start;\n -webkit-align-items: flex-start;\n align-items: flex-start;\n -webkit-transition-property: -webkit-transform, height;\n -moz-transition-property: -moz-transform;\n -o-transition-property: -o-transform;\n -ms-transition-property: -ms-transform;\n transition-property: transform, height;\n}\n/* a11y */\n.swiper-container .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n/* IE10 Windows Phone 8 Fixes */\n.swiper-wp8-horizontal {\n -ms-touch-action: pan-y;\n touch-action: pan-y;\n}\n.swiper-wp8-vertical {\n -ms-touch-action: pan-x;\n touch-action: pan-x;\n}\n/* Arrows */\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n top: 50%;\n width: 27px;\n height: 44px;\n margin-top: -22px;\n z-index: 10;\n cursor: pointer;\n -moz-background-size: 27px 44px;\n -webkit-background-size: 27px 44px;\n background-size: 27px 44px;\n background-position: center;\n background-repeat: no-repeat;\n}\n.swiper-button-prev.swiper-button-disabled,\n.swiper-button-next.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n}\n.swiper-button-prev,\n.swiper-container-rtl .swiper-button-next {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\");\n left: 10px;\n right: auto;\n}\n.swiper-button-prev.swiper-button-black,\n.swiper-container-rtl .swiper-button-next.swiper-button-black {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\");\n}\n.swiper-button-prev.swiper-button-white,\n.swiper-container-rtl .swiper-button-next.swiper-button-white {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\");\n}\n.swiper-button-next,\n.swiper-container-rtl .swiper-button-prev {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E\");\n right: 10px;\n left: auto;\n}\n.swiper-button-next.swiper-button-black,\n.swiper-container-rtl .swiper-button-prev.swiper-button-black {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E\");\n}\n.swiper-button-next.swiper-button-white,\n.swiper-container-rtl .swiper-button-prev.swiper-button-white {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E\");\n}\n/* Pagination Styles */\n.swiper-pagination {\n position: absolute;\n text-align: center;\n -webkit-transition: 300ms;\n -moz-transition: 300ms;\n -o-transition: 300ms;\n transition: 300ms;\n -webkit-transform: translate3d(0, 0, 0);\n -ms-transform: translate3d(0, 0, 0);\n -o-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n z-index: 10;\n}\n.swiper-pagination.swiper-pagination-hidden {\n opacity: 0;\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-container-horizontal > .swiper-pagination-bullets {\n bottom: 10px;\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullet {\n width: 8px;\n height: 8px;\n display: inline-block;\n border-radius: 100%;\n background: #000;\n opacity: 0.2;\n}\nbutton.swiper-pagination-bullet {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n -moz-appearance: none;\n -ms-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n}\n.swiper-pagination-clickable .swiper-pagination-bullet {\n cursor: pointer;\n}\n.swiper-pagination-white .swiper-pagination-bullet {\n background: #fff;\n}\n.swiper-pagination-bullet-active {\n opacity: 1;\n background: #007aff;\n}\n.swiper-pagination-white .swiper-pagination-bullet-active {\n background: #fff;\n}\n.swiper-pagination-black .swiper-pagination-bullet-active {\n background: #000;\n}\n.swiper-container-vertical > .swiper-pagination-bullets {\n right: 10px;\n top: 50%;\n -webkit-transform: translate3d(0px, -50%, 0);\n -moz-transform: translate3d(0px, -50%, 0);\n -o-transform: translate(0px, -50%);\n -ms-transform: translate3d(0px, -50%, 0);\n transform: translate3d(0px, -50%, 0);\n}\n.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 5px 0;\n display: block;\n}\n.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\n margin: 0 5px;\n}\n/* Progress */\n.swiper-pagination-progress {\n background: rgba(0, 0, 0, 0.25);\n position: absolute;\n}\n.swiper-pagination-progress .swiper-pagination-progressbar {\n background: #007aff;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n -webkit-transform: scale(0);\n -ms-transform: scale(0);\n -o-transform: scale(0);\n transform: scale(0);\n -webkit-transform-origin: left top;\n -moz-transform-origin: left top;\n -ms-transform-origin: left top;\n -o-transform-origin: left top;\n transform-origin: left top;\n}\n.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar {\n -webkit-transform-origin: right top;\n -moz-transform-origin: right top;\n -ms-transform-origin: right top;\n -o-transform-origin: right top;\n transform-origin: right top;\n}\n.swiper-container-horizontal > .swiper-pagination-progress {\n width: 100%;\n height: 4px;\n left: 0;\n top: 0;\n}\n.swiper-container-vertical > .swiper-pagination-progress {\n width: 4px;\n height: 100%;\n left: 0;\n top: 0;\n}\n.swiper-pagination-progress.swiper-pagination-white {\n background: rgba(255, 255, 255, 0.5);\n}\n.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar {\n background: #fff;\n}\n.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar {\n background: #000;\n}\n/* 3D Container */\n.swiper-container-3d {\n -webkit-perspective: 1200px;\n -moz-perspective: 1200px;\n -o-perspective: 1200px;\n perspective: 1200px;\n}\n.swiper-container-3d .swiper-wrapper,\n.swiper-container-3d .swiper-slide,\n.swiper-container-3d .swiper-slide-shadow-left,\n.swiper-container-3d .swiper-slide-shadow-right,\n.swiper-container-3d .swiper-slide-shadow-top,\n.swiper-container-3d .swiper-slide-shadow-bottom,\n.swiper-container-3d .swiper-cube-shadow {\n -webkit-transform-style: preserve-3d;\n -moz-transform-style: preserve-3d;\n -ms-transform-style: preserve-3d;\n transform-style: preserve-3d;\n}\n.swiper-container-3d .swiper-slide-shadow-left,\n.swiper-container-3d .swiper-slide-shadow-right,\n.swiper-container-3d .swiper-slide-shadow-top,\n.swiper-container-3d .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n}\n.swiper-container-3d .swiper-slide-shadow-left {\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));\n /* Safari 4+, Chrome */\n background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Chrome 10+, Safari 5.1+, iOS 5+ */\n background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 3.6-15 */\n background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Opera 11.10-12.00 */\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 16+, IE10, Opera 12.50+ */\n}\n.swiper-container-3d .swiper-slide-shadow-right {\n background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));\n /* Safari 4+, Chrome */\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Chrome 10+, Safari 5.1+, iOS 5+ */\n background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 3.6-15 */\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Opera 11.10-12.00 */\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 16+, IE10, Opera 12.50+ */\n}\n.swiper-container-3d .swiper-slide-shadow-top {\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));\n /* Safari 4+, Chrome */\n background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Chrome 10+, Safari 5.1+, iOS 5+ */\n background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 3.6-15 */\n background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Opera 11.10-12.00 */\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 16+, IE10, Opera 12.50+ */\n}\n.swiper-container-3d .swiper-slide-shadow-bottom {\n background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));\n /* Safari 4+, Chrome */\n background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Chrome 10+, Safari 5.1+, iOS 5+ */\n background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 3.6-15 */\n background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Opera 11.10-12.00 */\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n /* Firefox 16+, IE10, Opera 12.50+ */\n}\n/* Coverflow */\n.swiper-container-coverflow .swiper-wrapper,\n.swiper-container-flip .swiper-wrapper {\n /* Windows 8 IE 10 fix */\n -ms-perspective: 1200px;\n}\n/* Cube + Flip */\n.swiper-container-cube,\n.swiper-container-flip {\n overflow: visible;\n}\n.swiper-container-cube .swiper-slide,\n.swiper-container-flip .swiper-slide {\n pointer-events: none;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n -ms-backface-visibility: hidden;\n backface-visibility: hidden;\n z-index: 1;\n}\n.swiper-container-cube .swiper-slide .swiper-slide,\n.swiper-container-flip .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-container-cube .swiper-slide-active,\n.swiper-container-flip .swiper-slide-active,\n.swiper-container-cube .swiper-slide-active .swiper-slide-active,\n.swiper-container-flip .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-container-cube .swiper-slide-shadow-top,\n.swiper-container-flip .swiper-slide-shadow-top,\n.swiper-container-cube .swiper-slide-shadow-bottom,\n.swiper-container-flip .swiper-slide-shadow-bottom,\n.swiper-container-cube .swiper-slide-shadow-left,\n.swiper-container-flip .swiper-slide-shadow-left,\n.swiper-container-cube .swiper-slide-shadow-right,\n.swiper-container-flip .swiper-slide-shadow-right {\n z-index: 0;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n -ms-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n/* Cube */\n.swiper-container-cube .swiper-slide {\n visibility: hidden;\n -webkit-transform-origin: 0 0;\n -moz-transform-origin: 0 0;\n -ms-transform-origin: 0 0;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n}\n.swiper-container-cube.swiper-container-rtl .swiper-slide {\n -webkit-transform-origin: 100% 0;\n -moz-transform-origin: 100% 0;\n -ms-transform-origin: 100% 0;\n transform-origin: 100% 0;\n}\n.swiper-container-cube .swiper-slide-active,\n.swiper-container-cube .swiper-slide-next,\n.swiper-container-cube .swiper-slide-prev,\n.swiper-container-cube .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n}\n.swiper-container-cube .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n background: #000;\n opacity: 0.6;\n -webkit-filter: blur(50px);\n filter: blur(50px);\n z-index: 0;\n}\n/* Fade */\n.swiper-container-fade.swiper-container-free-mode .swiper-slide {\n -webkit-transition-timing-function: ease-out;\n -moz-transition-timing-function: ease-out;\n -ms-transition-timing-function: ease-out;\n -o-transition-timing-function: ease-out;\n transition-timing-function: ease-out;\n}\n.swiper-container-fade .swiper-slide {\n pointer-events: none;\n -webkit-transition-property: opacity;\n -moz-transition-property: opacity;\n -o-transition-property: opacity;\n transition-property: opacity;\n}\n.swiper-container-fade .swiper-slide .swiper-slide {\n pointer-events: none;\n}\n.swiper-container-fade .swiper-slide-active,\n.swiper-container-fade .swiper-slide-active .swiper-slide-active {\n pointer-events: auto;\n}\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: -webkit-box;\n display: -moz-box;\n display: -ms-flexbox;\n display: -webkit-flex;\n display: flex;\n -webkit-box-pack: center;\n -moz-box-pack: center;\n -ms-flex-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n -webkit-box-align: center;\n -moz-box-align: center;\n -ms-flex-align: center;\n -webkit-align-items: center;\n align-items: center;\n text-align: center;\n}\n.swiper-zoom-container > img,\n.swiper-zoom-container > svg,\n.swiper-zoom-container > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n/* Scrollbar */\n.swiper-scrollbar {\n border-radius: 10px;\n position: relative;\n -ms-touch-action: none;\n background: rgba(0, 0, 0, 0.1);\n}\n.swiper-container-horizontal > .swiper-scrollbar {\n position: absolute;\n left: 1%;\n bottom: 3px;\n z-index: 50;\n height: 5px;\n width: 98%;\n}\n.swiper-container-vertical > .swiper-scrollbar {\n position: absolute;\n right: 3px;\n top: 1%;\n z-index: 50;\n width: 5px;\n height: 98%;\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: rgba(0, 0, 0, 0.5);\n border-radius: 10px;\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n/* Preloader */\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n -webkit-transform-origin: 50%;\n -moz-transform-origin: 50%;\n transform-origin: 50%;\n -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite;\n -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite;\n animation: swiper-preloader-spin 1s steps(12, end) infinite;\n}\n.swiper-lazy-preloader:after {\n display: block;\n content: \"\";\n width: 100%;\n height: 100%;\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n background-position: 50%;\n -webkit-background-size: 100%;\n background-size: 100%;\n background-repeat: no-repeat;\n}\n.swiper-lazy-preloader-white:after {\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n@-webkit-keyframes swiper-preloader-spin {\n 100% {\n -webkit-transform: rotate(360deg);\n }\n}\n@keyframes swiper-preloader-spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///lib/swiper.css","\n.swiper-pagination-bullet-active {\n background: #ff8b0f;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/goods/img.vue","\n.buy-control{width:100%;background:#fff;box-sizing:border-box;padding:10px;border-top:1px solid #ddd;font-family:'Microsoft YaHei'\n}\n.buy-control .title{line-height:25px;font-size:15px\n}\n.buy-control .price{font-size:16px;color:#FF5722;line-height:25px\n}\n.buy-control .desc{color:#999;font-size:12px\n}\n.buy-control .desc .tag{color:#FF5722\n}\n.buy-control .attr{width:100%;padding:10px 0 0 0\n}\n.buy-control .attr ul{width:100%;padding:0;margin:0\n}\n.buy-control .attr ul li{list-style-type:none;font-size:12px;border:1px solid #bbb;padding:6px 10px;margin:5px;display:inline-block\n}\n.buy-control .attr ul li.active{border:1px solid #ff5722;color:#ff5722\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/goods/buyControl.vue","\n.tab{font-family:'Microsoft YaHei';width:100%;font-size:0;height:45px;box-sizing:border-box;background:#fff;border-top:1px solid #d5d5d5\n}\n.tab span{font-size:16px;color:#333;margin-top:6px;width:50%;box-sizing:border-box;text-align:center;line-height:30px;display:inline-block\n}\n.tab span:first-child{border-right:1px solid #d5d5d5\n}\n.tab span.active{color:#ff5722\n}\n.detail,.attr{width:100%;font-size:0\n}\n.detail img,.attr img{width:100%\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/goods/detail.vue","\n.screen1[data-v-5a539637]{width:100%;height:100%;background:rgba(0,0,0,0.5);position:fixed;top:0;left:0;transition:opacity .3s ease;z-index:1000\n}\n.screen1 .model-box[data-v-5a539637]{display:table;width:100%;height:100%;font-family:\"微软雅黑\"\n}\n.screen1 .model-box .model[data-v-5a539637]{vertical-align:middle;display:table-cell;text-align:center\n}\n.screen1 .model-box .model .main[data-v-5a539637]{display:inline-block;text-align:left;width:70%;transition:all .3s ease\n}\n.screen1 .model-box .model .main .pop[data-v-5a539637]{background:#fff\n}\n.screen1 .model-box .model .main .pop .head[data-v-5a539637]{width:100%;background:green\n}\n.screen1 .model-box .model .main .pop .head .close[data-v-5a539637]{width:30px;height:30px;float:right;margin:10px;cursor:pointer;font-size:25px;line-height:30px;color:#fff;font-family:Arial;opacity:.6\n}\n.screen1 .model-box .model .main .pop .head .close[data-v-5a539637]:active{opacity:1\n}\n.screen1 .model-box .model .main .pop .head .title[data-v-5a539637]{width:100%;line-height:50px;color:#fff;font-size:16px;text-align:center;padding-left:30px\n}\n.screen1 .model-box .model .main .alert[data-v-5a539637]{width:100%;display:block;border-radius:10px;background:#fff\n}\n.screen1 .model-box .model .main .alert .top[data-v-5a539637]{width:92%;padding:15px 4%\n}\n.screen1 .model-box .model .main .alert .bottom[data-v-5a539637]{width:100%;height:45px\n}\n.screen1 .model-box .model .main .alert .bottom button[data-v-5a539637]{width:100%;height:100%;background:#fff;border:none;border-top:1px solid #56aeb0;font-size:17px;color:#108d93;border-radius:0 0 10px 10px;font-family:\"微软雅黑\";outline:none\n}\n.screen1 .model-box .model .main .alert .bottom button[data-v-5a539637]:active{transition:background .2s ease;background:#ddd\n}\n.screen1 .model-box .model .main .confirm[data-v-5a539637]{width:100%;display:block;border-radius:10px;background:#fff\n}\n.screen1 .model-box .model .main .confirm .top[data-v-5a539637]{width:92%;padding:15px 4%\n}\n.screen1 .model-box .model .main .confirm .bottom[data-v-5a539637]{width:100%;height:45px\n}\n.screen1 .model-box .model .main .confirm .bottom button[data-v-5a539637]{width:50%;height:100%;background:#fff;border:1px solid #ddd;float:left;font-size:16px;color:#333;font-family:\"微软雅黑\";outline:none\n}\n.screen1 .model-box .model .main .confirm .bottom button[data-v-5a539637]:active{transition:background .2s ease;background:#ddd\n}\n.screen1 .model-box .model .main .confirm .bottom button.radius-left[data-v-5a539637]{border-radius:0 0 0 10px;border-right:none !important\n}\n.screen1 .model-box .model .main .confirm .bottom button.radius-right[data-v-5a539637]{border-radius:0 0 10px 0\n}\n.animateBase-enter[data-v-5a539637],.animateBase-leave-active[data-v-5a539637]{opacity:0\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/model.vue","\n@import \"../../../lib/swiper.css\";\n.swiper-container[data-v-0d72b8fd]{width:100%\n}\n.swiper-container .swiper-slide img[data-v-0d72b8fd]{width:100%;overflow:hidden\n}\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/test/test.vue"],"sourceRoot":""} -------------------------------------------------------------------------------- /demo/static/img/mitugongzai.99d8881.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beautifulBoys/vue-XiaoMi-Shop/391e3f144a504a668c0cd6b8241eee1cf6a05b94/demo/static/img/mitugongzai.99d8881.png -------------------------------------------------------------------------------- /demo/static/js/manifest.8659f724d6d5ef01e4d3.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n=window.webpackJsonp;window.webpackJsonp=function(c,o){for(var p,s,l=0,f=[];l 2 | 3 | 4 | 5 | 6 | 小米-手机版 7 | 8 | 9 |
10 | 11 | 12 | 18 | -------------------------------------------------------------------------------- /lib/swiper.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Swiper 3.4.1 3 | * Most modern mobile touch slider and framework with hardware accelerated transitions 4 | * 5 | * http://www.idangero.us/swiper/ 6 | * 7 | * Copyright 2016, Vladimir Kharlampidi 8 | * The iDangero.us 9 | * http://www.idangero.us/ 10 | * 11 | * Licensed under MIT 12 | * 13 | * Released on: December 13, 2016 14 | */ 15 | .swiper-container { 16 | margin-left: auto; 17 | margin-right: auto; 18 | position: relative; 19 | overflow: hidden; 20 | /* Fix of Webkit flickering */ 21 | z-index: 1; 22 | } 23 | .swiper-container-no-flexbox .swiper-slide { 24 | float: left; 25 | } 26 | .swiper-container-vertical > .swiper-wrapper { 27 | -webkit-box-orient: vertical; 28 | -moz-box-orient: vertical; 29 | -ms-flex-direction: column; 30 | -webkit-flex-direction: column; 31 | flex-direction: column; 32 | } 33 | .swiper-wrapper { 34 | position: relative; 35 | width: 100%; 36 | height: 100%; 37 | z-index: 1; 38 | display: -webkit-box; 39 | display: -moz-box; 40 | display: -ms-flexbox; 41 | display: -webkit-flex; 42 | display: flex; 43 | -webkit-transition-property: -webkit-transform; 44 | -moz-transition-property: -moz-transform; 45 | -o-transition-property: -o-transform; 46 | -ms-transition-property: -ms-transform; 47 | transition-property: transform; 48 | -webkit-box-sizing: content-box; 49 | -moz-box-sizing: content-box; 50 | box-sizing: content-box; 51 | } 52 | .swiper-container-android .swiper-slide, 53 | .swiper-wrapper { 54 | -webkit-transform: translate3d(0px, 0, 0); 55 | -moz-transform: translate3d(0px, 0, 0); 56 | -o-transform: translate(0px, 0px); 57 | -ms-transform: translate3d(0px, 0, 0); 58 | transform: translate3d(0px, 0, 0); 59 | } 60 | .swiper-container-multirow > .swiper-wrapper { 61 | -webkit-box-lines: multiple; 62 | -moz-box-lines: multiple; 63 | -ms-flex-wrap: wrap; 64 | -webkit-flex-wrap: wrap; 65 | flex-wrap: wrap; 66 | } 67 | .swiper-container-free-mode > .swiper-wrapper { 68 | -webkit-transition-timing-function: ease-out; 69 | -moz-transition-timing-function: ease-out; 70 | -ms-transition-timing-function: ease-out; 71 | -o-transition-timing-function: ease-out; 72 | transition-timing-function: ease-out; 73 | margin: 0 auto; 74 | } 75 | .swiper-slide { 76 | -webkit-flex-shrink: 0; 77 | -ms-flex: 0 0 auto; 78 | flex-shrink: 0; 79 | width: 100%; 80 | height: 100%; 81 | position: relative; 82 | } 83 | /* Auto Height */ 84 | .swiper-container-autoheight, 85 | .swiper-container-autoheight .swiper-slide { 86 | height: auto; 87 | } 88 | .swiper-container-autoheight .swiper-wrapper { 89 | -webkit-box-align: start; 90 | -ms-flex-align: start; 91 | -webkit-align-items: flex-start; 92 | align-items: flex-start; 93 | -webkit-transition-property: -webkit-transform, height; 94 | -moz-transition-property: -moz-transform; 95 | -o-transition-property: -o-transform; 96 | -ms-transition-property: -ms-transform; 97 | transition-property: transform, height; 98 | } 99 | /* a11y */ 100 | .swiper-container .swiper-notification { 101 | position: absolute; 102 | left: 0; 103 | top: 0; 104 | pointer-events: none; 105 | opacity: 0; 106 | z-index: -1000; 107 | } 108 | /* IE10 Windows Phone 8 Fixes */ 109 | .swiper-wp8-horizontal { 110 | -ms-touch-action: pan-y; 111 | touch-action: pan-y; 112 | } 113 | .swiper-wp8-vertical { 114 | -ms-touch-action: pan-x; 115 | touch-action: pan-x; 116 | } 117 | /* Arrows */ 118 | .swiper-button-prev, 119 | .swiper-button-next { 120 | position: absolute; 121 | top: 50%; 122 | width: 27px; 123 | height: 44px; 124 | margin-top: -22px; 125 | z-index: 10; 126 | cursor: pointer; 127 | -moz-background-size: 27px 44px; 128 | -webkit-background-size: 27px 44px; 129 | background-size: 27px 44px; 130 | background-position: center; 131 | background-repeat: no-repeat; 132 | } 133 | .swiper-button-prev.swiper-button-disabled, 134 | .swiper-button-next.swiper-button-disabled { 135 | opacity: 0.35; 136 | cursor: auto; 137 | pointer-events: none; 138 | } 139 | .swiper-button-prev, 140 | .swiper-container-rtl .swiper-button-next { 141 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); 142 | left: 10px; 143 | right: auto; 144 | } 145 | .swiper-button-prev.swiper-button-black, 146 | .swiper-container-rtl .swiper-button-next.swiper-button-black { 147 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); 148 | } 149 | .swiper-button-prev.swiper-button-white, 150 | .swiper-container-rtl .swiper-button-next.swiper-button-white { 151 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); 152 | } 153 | .swiper-button-next, 154 | .swiper-container-rtl .swiper-button-prev { 155 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); 156 | right: 10px; 157 | left: auto; 158 | } 159 | .swiper-button-next.swiper-button-black, 160 | .swiper-container-rtl .swiper-button-prev.swiper-button-black { 161 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); 162 | } 163 | .swiper-button-next.swiper-button-white, 164 | .swiper-container-rtl .swiper-button-prev.swiper-button-white { 165 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); 166 | } 167 | /* Pagination Styles */ 168 | .swiper-pagination { 169 | position: absolute; 170 | text-align: center; 171 | -webkit-transition: 300ms; 172 | -moz-transition: 300ms; 173 | -o-transition: 300ms; 174 | transition: 300ms; 175 | -webkit-transform: translate3d(0, 0, 0); 176 | -ms-transform: translate3d(0, 0, 0); 177 | -o-transform: translate3d(0, 0, 0); 178 | transform: translate3d(0, 0, 0); 179 | z-index: 10; 180 | } 181 | .swiper-pagination.swiper-pagination-hidden { 182 | opacity: 0; 183 | } 184 | /* Common Styles */ 185 | .swiper-pagination-fraction, 186 | .swiper-pagination-custom, 187 | .swiper-container-horizontal > .swiper-pagination-bullets { 188 | bottom: 10px; 189 | left: 0; 190 | width: 100%; 191 | } 192 | /* Bullets */ 193 | .swiper-pagination-bullet { 194 | width: 8px; 195 | height: 8px; 196 | display: inline-block; 197 | border-radius: 100%; 198 | background: #000; 199 | opacity: 0.2; 200 | } 201 | button.swiper-pagination-bullet { 202 | border: none; 203 | margin: 0; 204 | padding: 0; 205 | box-shadow: none; 206 | -moz-appearance: none; 207 | -ms-appearance: none; 208 | -webkit-appearance: none; 209 | appearance: none; 210 | } 211 | .swiper-pagination-clickable .swiper-pagination-bullet { 212 | cursor: pointer; 213 | } 214 | .swiper-pagination-white .swiper-pagination-bullet { 215 | background: #fff; 216 | } 217 | .swiper-pagination-bullet-active { 218 | opacity: 1; 219 | background: #007aff; 220 | } 221 | .swiper-pagination-white .swiper-pagination-bullet-active { 222 | background: #fff; 223 | } 224 | .swiper-pagination-black .swiper-pagination-bullet-active { 225 | background: #000; 226 | } 227 | .swiper-container-vertical > .swiper-pagination-bullets { 228 | right: 10px; 229 | top: 50%; 230 | -webkit-transform: translate3d(0px, -50%, 0); 231 | -moz-transform: translate3d(0px, -50%, 0); 232 | -o-transform: translate(0px, -50%); 233 | -ms-transform: translate3d(0px, -50%, 0); 234 | transform: translate3d(0px, -50%, 0); 235 | } 236 | .swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet { 237 | margin: 5px 0; 238 | display: block; 239 | } 240 | .swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet { 241 | margin: 0 5px; 242 | } 243 | /* Progress */ 244 | .swiper-pagination-progress { 245 | background: rgba(0, 0, 0, 0.25); 246 | position: absolute; 247 | } 248 | .swiper-pagination-progress .swiper-pagination-progressbar { 249 | background: #007aff; 250 | position: absolute; 251 | left: 0; 252 | top: 0; 253 | width: 100%; 254 | height: 100%; 255 | -webkit-transform: scale(0); 256 | -ms-transform: scale(0); 257 | -o-transform: scale(0); 258 | transform: scale(0); 259 | -webkit-transform-origin: left top; 260 | -moz-transform-origin: left top; 261 | -ms-transform-origin: left top; 262 | -o-transform-origin: left top; 263 | transform-origin: left top; 264 | } 265 | .swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar { 266 | -webkit-transform-origin: right top; 267 | -moz-transform-origin: right top; 268 | -ms-transform-origin: right top; 269 | -o-transform-origin: right top; 270 | transform-origin: right top; 271 | } 272 | .swiper-container-horizontal > .swiper-pagination-progress { 273 | width: 100%; 274 | height: 4px; 275 | left: 0; 276 | top: 0; 277 | } 278 | .swiper-container-vertical > .swiper-pagination-progress { 279 | width: 4px; 280 | height: 100%; 281 | left: 0; 282 | top: 0; 283 | } 284 | .swiper-pagination-progress.swiper-pagination-white { 285 | background: rgba(255, 255, 255, 0.5); 286 | } 287 | .swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar { 288 | background: #fff; 289 | } 290 | .swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar { 291 | background: #000; 292 | } 293 | /* 3D Container */ 294 | .swiper-container-3d { 295 | -webkit-perspective: 1200px; 296 | -moz-perspective: 1200px; 297 | -o-perspective: 1200px; 298 | perspective: 1200px; 299 | } 300 | .swiper-container-3d .swiper-wrapper, 301 | .swiper-container-3d .swiper-slide, 302 | .swiper-container-3d .swiper-slide-shadow-left, 303 | .swiper-container-3d .swiper-slide-shadow-right, 304 | .swiper-container-3d .swiper-slide-shadow-top, 305 | .swiper-container-3d .swiper-slide-shadow-bottom, 306 | .swiper-container-3d .swiper-cube-shadow { 307 | -webkit-transform-style: preserve-3d; 308 | -moz-transform-style: preserve-3d; 309 | -ms-transform-style: preserve-3d; 310 | transform-style: preserve-3d; 311 | } 312 | .swiper-container-3d .swiper-slide-shadow-left, 313 | .swiper-container-3d .swiper-slide-shadow-right, 314 | .swiper-container-3d .swiper-slide-shadow-top, 315 | .swiper-container-3d .swiper-slide-shadow-bottom { 316 | position: absolute; 317 | left: 0; 318 | top: 0; 319 | width: 100%; 320 | height: 100%; 321 | pointer-events: none; 322 | z-index: 10; 323 | } 324 | .swiper-container-3d .swiper-slide-shadow-left { 325 | background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); 326 | /* Safari 4+, Chrome */ 327 | background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 328 | /* Chrome 10+, Safari 5.1+, iOS 5+ */ 329 | background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 330 | /* Firefox 3.6-15 */ 331 | background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 332 | /* Opera 11.10-12.00 */ 333 | background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 334 | /* Firefox 16+, IE10, Opera 12.50+ */ 335 | } 336 | .swiper-container-3d .swiper-slide-shadow-right { 337 | background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); 338 | /* Safari 4+, Chrome */ 339 | background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 340 | /* Chrome 10+, Safari 5.1+, iOS 5+ */ 341 | background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 342 | /* Firefox 3.6-15 */ 343 | background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 344 | /* Opera 11.10-12.00 */ 345 | background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 346 | /* Firefox 16+, IE10, Opera 12.50+ */ 347 | } 348 | .swiper-container-3d .swiper-slide-shadow-top { 349 | background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); 350 | /* Safari 4+, Chrome */ 351 | background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 352 | /* Chrome 10+, Safari 5.1+, iOS 5+ */ 353 | background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 354 | /* Firefox 3.6-15 */ 355 | background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 356 | /* Opera 11.10-12.00 */ 357 | background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 358 | /* Firefox 16+, IE10, Opera 12.50+ */ 359 | } 360 | .swiper-container-3d .swiper-slide-shadow-bottom { 361 | background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0))); 362 | /* Safari 4+, Chrome */ 363 | background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 364 | /* Chrome 10+, Safari 5.1+, iOS 5+ */ 365 | background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 366 | /* Firefox 3.6-15 */ 367 | background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 368 | /* Opera 11.10-12.00 */ 369 | background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); 370 | /* Firefox 16+, IE10, Opera 12.50+ */ 371 | } 372 | /* Coverflow */ 373 | .swiper-container-coverflow .swiper-wrapper, 374 | .swiper-container-flip .swiper-wrapper { 375 | /* Windows 8 IE 10 fix */ 376 | -ms-perspective: 1200px; 377 | } 378 | /* Cube + Flip */ 379 | .swiper-container-cube, 380 | .swiper-container-flip { 381 | overflow: visible; 382 | } 383 | .swiper-container-cube .swiper-slide, 384 | .swiper-container-flip .swiper-slide { 385 | pointer-events: none; 386 | -webkit-backface-visibility: hidden; 387 | -moz-backface-visibility: hidden; 388 | -ms-backface-visibility: hidden; 389 | backface-visibility: hidden; 390 | z-index: 1; 391 | } 392 | .swiper-container-cube .swiper-slide .swiper-slide, 393 | .swiper-container-flip .swiper-slide .swiper-slide { 394 | pointer-events: none; 395 | } 396 | .swiper-container-cube .swiper-slide-active, 397 | .swiper-container-flip .swiper-slide-active, 398 | .swiper-container-cube .swiper-slide-active .swiper-slide-active, 399 | .swiper-container-flip .swiper-slide-active .swiper-slide-active { 400 | pointer-events: auto; 401 | } 402 | .swiper-container-cube .swiper-slide-shadow-top, 403 | .swiper-container-flip .swiper-slide-shadow-top, 404 | .swiper-container-cube .swiper-slide-shadow-bottom, 405 | .swiper-container-flip .swiper-slide-shadow-bottom, 406 | .swiper-container-cube .swiper-slide-shadow-left, 407 | .swiper-container-flip .swiper-slide-shadow-left, 408 | .swiper-container-cube .swiper-slide-shadow-right, 409 | .swiper-container-flip .swiper-slide-shadow-right { 410 | z-index: 0; 411 | -webkit-backface-visibility: hidden; 412 | -moz-backface-visibility: hidden; 413 | -ms-backface-visibility: hidden; 414 | backface-visibility: hidden; 415 | } 416 | /* Cube */ 417 | .swiper-container-cube .swiper-slide { 418 | visibility: hidden; 419 | -webkit-transform-origin: 0 0; 420 | -moz-transform-origin: 0 0; 421 | -ms-transform-origin: 0 0; 422 | transform-origin: 0 0; 423 | width: 100%; 424 | height: 100%; 425 | } 426 | .swiper-container-cube.swiper-container-rtl .swiper-slide { 427 | -webkit-transform-origin: 100% 0; 428 | -moz-transform-origin: 100% 0; 429 | -ms-transform-origin: 100% 0; 430 | transform-origin: 100% 0; 431 | } 432 | .swiper-container-cube .swiper-slide-active, 433 | .swiper-container-cube .swiper-slide-next, 434 | .swiper-container-cube .swiper-slide-prev, 435 | .swiper-container-cube .swiper-slide-next + .swiper-slide { 436 | pointer-events: auto; 437 | visibility: visible; 438 | } 439 | .swiper-container-cube .swiper-cube-shadow { 440 | position: absolute; 441 | left: 0; 442 | bottom: 0px; 443 | width: 100%; 444 | height: 100%; 445 | background: #000; 446 | opacity: 0.6; 447 | -webkit-filter: blur(50px); 448 | filter: blur(50px); 449 | z-index: 0; 450 | } 451 | /* Fade */ 452 | .swiper-container-fade.swiper-container-free-mode .swiper-slide { 453 | -webkit-transition-timing-function: ease-out; 454 | -moz-transition-timing-function: ease-out; 455 | -ms-transition-timing-function: ease-out; 456 | -o-transition-timing-function: ease-out; 457 | transition-timing-function: ease-out; 458 | } 459 | .swiper-container-fade .swiper-slide { 460 | pointer-events: none; 461 | -webkit-transition-property: opacity; 462 | -moz-transition-property: opacity; 463 | -o-transition-property: opacity; 464 | transition-property: opacity; 465 | } 466 | .swiper-container-fade .swiper-slide .swiper-slide { 467 | pointer-events: none; 468 | } 469 | .swiper-container-fade .swiper-slide-active, 470 | .swiper-container-fade .swiper-slide-active .swiper-slide-active { 471 | pointer-events: auto; 472 | } 473 | .swiper-zoom-container { 474 | width: 100%; 475 | height: 100%; 476 | display: -webkit-box; 477 | display: -moz-box; 478 | display: -ms-flexbox; 479 | display: -webkit-flex; 480 | display: flex; 481 | -webkit-box-pack: center; 482 | -moz-box-pack: center; 483 | -ms-flex-pack: center; 484 | -webkit-justify-content: center; 485 | justify-content: center; 486 | -webkit-box-align: center; 487 | -moz-box-align: center; 488 | -ms-flex-align: center; 489 | -webkit-align-items: center; 490 | align-items: center; 491 | text-align: center; 492 | } 493 | .swiper-zoom-container > img, 494 | .swiper-zoom-container > svg, 495 | .swiper-zoom-container > canvas { 496 | max-width: 100%; 497 | max-height: 100%; 498 | object-fit: contain; 499 | } 500 | /* Scrollbar */ 501 | .swiper-scrollbar { 502 | border-radius: 10px; 503 | position: relative; 504 | -ms-touch-action: none; 505 | background: rgba(0, 0, 0, 0.1); 506 | } 507 | .swiper-container-horizontal > .swiper-scrollbar { 508 | position: absolute; 509 | left: 1%; 510 | bottom: 3px; 511 | z-index: 50; 512 | height: 5px; 513 | width: 98%; 514 | } 515 | .swiper-container-vertical > .swiper-scrollbar { 516 | position: absolute; 517 | right: 3px; 518 | top: 1%; 519 | z-index: 50; 520 | width: 5px; 521 | height: 98%; 522 | } 523 | .swiper-scrollbar-drag { 524 | height: 100%; 525 | width: 100%; 526 | position: relative; 527 | background: rgba(0, 0, 0, 0.5); 528 | border-radius: 10px; 529 | left: 0; 530 | top: 0; 531 | } 532 | .swiper-scrollbar-cursor-drag { 533 | cursor: move; 534 | } 535 | /* Preloader */ 536 | .swiper-lazy-preloader { 537 | width: 42px; 538 | height: 42px; 539 | position: absolute; 540 | left: 50%; 541 | top: 50%; 542 | margin-left: -21px; 543 | margin-top: -21px; 544 | z-index: 10; 545 | -webkit-transform-origin: 50%; 546 | -moz-transform-origin: 50%; 547 | transform-origin: 50%; 548 | -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite; 549 | -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite; 550 | animation: swiper-preloader-spin 1s steps(12, end) infinite; 551 | } 552 | .swiper-lazy-preloader:after { 553 | display: block; 554 | content: ""; 555 | width: 100%; 556 | height: 100%; 557 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); 558 | background-position: 50%; 559 | -webkit-background-size: 100%; 560 | background-size: 100%; 561 | background-repeat: no-repeat; 562 | } 563 | .swiper-lazy-preloader-white:after { 564 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); 565 | } 566 | @-webkit-keyframes swiper-preloader-spin { 567 | 100% { 568 | -webkit-transform: rotate(360deg); 569 | } 570 | } 571 | @keyframes swiper-preloader-spin { 572 | 100% { 573 | transform: rotate(360deg); 574 | } 575 | } 576 | -------------------------------------------------------------------------------- /lib/util.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by user on 2017/2/17. 3 | */ 4 | 5 | utilObj = { 6 | screenSize () { 7 | var width = window.screen.width; 8 | var height = window.screen.height; 9 | return {width: width, height: height}; 10 | } 11 | }; 12 | module.exports = utilObj; 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi", 3 | "version": "1.0.0", 4 | "description": "A Web App By Vue.js", 5 | "author": "liuyun", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build": "node build/build.js" 10 | }, 11 | "dependencies": { 12 | "element-ui": "^1.1.6", 13 | "vue": "^2.1.0", 14 | "vue-router": "^2.2.0" 15 | }, 16 | "devDependencies": { 17 | "autoprefixer": "^6.4.0", 18 | "babel-core": "^6.0.0", 19 | "babel-eslint": "^7.0.0", 20 | "babel-loader": "^6.0.0", 21 | "babel-plugin-transform-runtime": "^6.0.0", 22 | "babel-preset-es2015": "^6.0.0", 23 | "babel-preset-stage-2": "^6.0.0", 24 | "babel-register": "^6.0.0", 25 | "chalk": "^1.1.3", 26 | "connect-history-api-fallback": "^1.1.0", 27 | "css-loader": "^0.25.0", 28 | "eslint": "^3.7.1", 29 | "eslint-config-standard": "^6.1.0", 30 | "eslint-friendly-formatter": "^2.0.5", 31 | "eslint-loader": "^1.5.0", 32 | "eslint-plugin-html": "^1.3.0", 33 | "eslint-plugin-promise": "^3.4.0", 34 | "eslint-plugin-standard": "^2.0.1", 35 | "eventsource-polyfill": "^0.9.6", 36 | "express": "^4.13.3", 37 | "extract-text-webpack-plugin": "^1.0.1", 38 | "file-loader": "^0.9.0", 39 | "friendly-errors-webpack-plugin": "^1.1.2", 40 | "function-bind": "^1.0.2", 41 | "html-webpack-plugin": "^2.8.1", 42 | "http-proxy-middleware": "^0.17.2", 43 | "json-loader": "^0.5.4", 44 | "less": "^2.7.2", 45 | "less-loader": "^2.2.3", 46 | "opn": "^4.0.2", 47 | "ora": "^0.3.0", 48 | "semver": "^5.3.0", 49 | "shelljs": "^0.7.4", 50 | "url-loader": "^0.5.7", 51 | "vue-loader": "^10.0.0", 52 | "vue-style-loader": "^1.0.0", 53 | "vue-template-compiler": "^2.1.0", 54 | "webpack": "^1.13.2", 55 | "webpack-dev-middleware": "^1.8.3", 56 | "webpack-hot-middleware": "^2.12.2", 57 | "webpack-merge": "^0.14.1" 58 | }, 59 | "engines": { 60 | "node": ">= 4.0.0", 61 | "npm": ">= 3.0.0" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beautifulBoys/vue-XiaoMi-Shop/391e3f144a504a668c0cd6b8241eee1cf6a05b94/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/cart/header.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 67 | 68 | 194 | -------------------------------------------------------------------------------- /src/components/goods/buyControl.vue: -------------------------------------------------------------------------------- 1 | 28 | 53 | 54 | 103 | -------------------------------------------------------------------------------- /src/components/goods/detail.vue: -------------------------------------------------------------------------------- 1 | 15 | 40 | 41 | 75 | -------------------------------------------------------------------------------- /src/components/goods/img.vue: -------------------------------------------------------------------------------- 1 | 18 | 50 | 51 | 104 | 109 | -------------------------------------------------------------------------------- /src/components/index/banner.vue: -------------------------------------------------------------------------------- 1 | 15 | 37 | 38 | 57 | -------------------------------------------------------------------------------- /src/components/index/body.vue: -------------------------------------------------------------------------------- 1 | 9 | 27 | 28 | 33 | -------------------------------------------------------------------------------- /src/components/index/footer.vue: -------------------------------------------------------------------------------- 1 | 9 | 23 | 24 | 79 | -------------------------------------------------------------------------------- /src/components/index/header.vue: -------------------------------------------------------------------------------- 1 | 29 | 30 | 68 | 69 | 199 | -------------------------------------------------------------------------------- /src/components/index/intelligenceGoods.vue: -------------------------------------------------------------------------------- 1 | 22 | 42 | 43 | 121 | -------------------------------------------------------------------------------- /src/components/index/menu.vue: -------------------------------------------------------------------------------- 1 | 14 | 22 | 23 | 49 | -------------------------------------------------------------------------------- /src/components/index/newGoods.vue: -------------------------------------------------------------------------------- 1 | 22 | 42 | 43 | 121 | -------------------------------------------------------------------------------- /src/components/index/newHomeGoods.vue: -------------------------------------------------------------------------------- 1 | 25 | 45 | 46 | 123 | -------------------------------------------------------------------------------- /src/components/index/starGoods.vue: -------------------------------------------------------------------------------- 1 | 22 | 42 | 43 | 120 | -------------------------------------------------------------------------------- /src/components/loading.vue: -------------------------------------------------------------------------------- 1 | 9 | 29 | 30 | 63 | -------------------------------------------------------------------------------- /src/components/model.vue: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | 说明: 4 | 1.标签:vModel 5 | 2.默认状态:checked 6 | 3.是否显示头部:为了友好手机端,默认设置不显示头部(不写就可以了),如需要显示:isHeadShow = true 7 | 4.父组件关闭弹窗操作:this.$refs.{refName}.modelHide() 8 | 5.类型:type = 'pop'、'alert'、'confirm' 三种任选其一。 9 | 6.内容分发:slot为容器。宽度100%,高度自定义 10 | 11 | 7.不明白 参考hello2示例,都有写 12 | 13 | 示例: 14 | 15 | 16 | 17 |
我是一个alert弹窗
18 |
19 | 20 | */ 21 | 22 | 23 | 72 | 73 | 107 | 108 | 109 | 241 | -------------------------------------------------------------------------------- /src/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beautifulBoys/vue-XiaoMi-Shop/391e3f144a504a668c0cd6b8241eee1cf6a05b94/src/images/loading.gif -------------------------------------------------------------------------------- /src/images/mi_load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beautifulBoys/vue-XiaoMi-Shop/391e3f144a504a668c0cd6b8241eee1cf6a05b94/src/images/mi_load.png -------------------------------------------------------------------------------- /src/images/mitugongzai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beautifulBoys/vue-XiaoMi-Shop/391e3f144a504a668c0cd6b8241eee1cf6a05b94/src/images/mitugongzai.png -------------------------------------------------------------------------------- /src/images/svg/back.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/back1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/cart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/footer_cart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/footer_cart1.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/images/svg/footer_home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/footer_home1.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/images/svg/footer_lei.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/footer_lei1.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/images/svg/footer_me.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/footer_me1.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/images/svg/home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/mi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/svg/search1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App'; 3 | import Index from './views/index.vue'; 4 | import Goods from './views/goods.vue'; 5 | import Cart from './views/cart.vue'; 6 | 7 | import VueRouter from 'vue-router'; 8 | import Element from 'element-ui'; 9 | 10 | Vue.use(VueRouter); 11 | Vue.use(Element); 12 | 13 | const routes = [ 14 | {path: '/', redirect: '/index'}, 15 | { path: '/index', component: Index }, 16 | { path: '/goods', component: Goods }, 17 | { path: '/cart', component: Cart } 18 | ]; 19 | 20 | const router = new VueRouter({ 21 | routes 22 | }); 23 | 24 | /* eslint-disable no-new */ 25 | new Vue({ 26 | router, 27 | el: '#app', 28 | template: '', 29 | components: { App } 30 | }); 31 | -------------------------------------------------------------------------------- /src/views/cart.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 61 | 62 | 148 | -------------------------------------------------------------------------------- /src/views/goods.vue: -------------------------------------------------------------------------------- 1 | 22 | 74 | 75 | 149 | -------------------------------------------------------------------------------- /src/views/index.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 86 | 87 | 102 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beautifulBoys/vue-XiaoMi-Shop/391e3f144a504a668c0cd6b8241eee1cf6a05b94/static/.gitkeep --------------------------------------------------------------------------------