├── .babelrc ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── favicon.ico ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.vue ├── assets │ ├── css │ │ ├── animate.css │ │ ├── base.css │ │ ├── iconfont.css │ │ └── weui.min.css │ └── image │ │ ├── book.png │ │ ├── chat-info-qr.png │ │ ├── contact_add-friend-addgroup.png │ │ ├── contact_add-friend-contacts.png │ │ ├── contact_add-friend-my-qr.png │ │ ├── contact_add-friend-offical.png │ │ ├── contact_add-friend-reda.png │ │ ├── contact_add-friend-scanqr.png │ │ ├── contact_female.png │ │ ├── contact_male.png │ │ ├── contact_top-addgroup.png │ │ ├── contact_top-friend-notify.png │ │ ├── contact_top-offical.png │ │ ├── contact_top-tag.png │ │ ├── find-album-reflash-icon.png │ │ ├── find_icon-bottle.png │ │ ├── find_icon-circle.png │ │ ├── find_icon-locationservice.png │ │ ├── find_icon-moregame.png │ │ ├── find_icon-qrcode.png │ │ ├── find_icon-shake.png │ │ ├── find_icon-shopping.png │ │ ├── me_more-expression.png │ │ ├── me_more-my-album.png │ │ ├── me_more-my-bank-card.png │ │ ├── me_more-my-favorites.png │ │ ├── me_more-setting.png │ │ ├── me_my-card-package-icon.png │ │ ├── mht.jpg │ │ ├── mybackground.jpg │ │ ├── myqr.png │ │ ├── rico.png │ │ ├── rzf.jpg │ │ ├── timg.png │ │ ├── tyx.jpg │ │ ├── yyx.jpg │ │ └── zxl.jpg ├── components │ ├── common │ │ ├── vfooter.vue │ │ ├── vheader.vue │ │ └── vsearch.vue │ ├── pages │ │ ├── albums.vue │ │ ├── chatview.vue │ │ ├── details.vue │ │ ├── moments.vue │ │ ├── myprofile.vue │ │ ├── myqr.vue │ │ ├── personalheader.vue │ │ ├── photo.vue │ │ └── settings.vue │ ├── vcontact.vue │ ├── vdialogue.vue │ ├── vexplore.vue │ └── vme.vue ├── main.js ├── router │ └── index.js └── vuex │ └── store.js └── static ├── .gitkeep └── data.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-vue-jsx", "transform-runtime"] 12 | } 13 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### 起因 2 | 看过一遍Vue.js文档后,想做点什么,于是挑了微信作为目标 3 | ### 技术 4 | 技术上用的基础的Vue router和axios等等全家桶,实现了几乎全部界面。 5 | ### 界面 6 | ![请输入图片描述][1] 7 | ![请输入图片描述][2] 8 | ![请输入图片描述][3] 9 | ![请输入图片描述][4] 10 | ### 在线演示地址 11 | [微信](http://www.ricofishing.com) 12 | [Github地址](https://github.com/RicardoCao-Biker/vue-wechat) 13 | 14 | [1]: http://39.107.107.62/vuenote/vuewechat1.jpg 15 | [2]: http://39.107.107.62/vuenote/vuewechat2.jpg 16 | [3]: http://39.107.107.62/vuenote/vuewechat3.jpg 17 | [4]: http://39.107.107.62/vuenote/vuewechat4.jpg 18 | 19 | ### Build Setup 20 | 21 | ``` bash 22 | # install dependencies 23 | npm install 24 | 25 | # serve with hot reload at localhost:8080 26 | npm run dev 27 | 28 | # build for production with minification 29 | npm run build 30 | 31 | # build for production and view the bundle analyzer report 32 | npm run build --report 33 | ``` 34 | 35 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 36 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/build/logo.png -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const config = require('../config') 4 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 5 | const packageConfig = require('../package.json') 6 | 7 | exports.assetsPath = function (_path) { 8 | const assetsSubDirectory = process.env.NODE_ENV === 'production' 9 | ? config.build.assetsSubDirectory 10 | : config.dev.assetsSubDirectory 11 | 12 | return path.posix.join(assetsSubDirectory, _path) 13 | } 14 | 15 | exports.cssLoaders = function (options) { 16 | options = options || {} 17 | 18 | const cssLoader = { 19 | loader: 'css-loader', 20 | options: { 21 | sourceMap: options.sourceMap 22 | } 23 | } 24 | 25 | const postcssLoader = { 26 | loader: 'postcss-loader', 27 | options: { 28 | sourceMap: options.sourceMap 29 | } 30 | } 31 | 32 | // generate loader string to be used with extract text plugin 33 | function generateLoaders (loader, loaderOptions) { 34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] 35 | 36 | if (loader) { 37 | loaders.push({ 38 | loader: loader + '-loader', 39 | options: Object.assign({}, loaderOptions, { 40 | sourceMap: options.sourceMap 41 | }) 42 | }) 43 | } 44 | 45 | // Extract CSS when that option is specified 46 | // (which is the case during production build) 47 | if (options.extract) { 48 | return ExtractTextPlugin.extract({ 49 | use: loaders, 50 | fallback: 'vue-style-loader' 51 | }) 52 | } else { 53 | return ['vue-style-loader'].concat(loaders) 54 | } 55 | } 56 | 57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 58 | return { 59 | css: generateLoaders(), 60 | postcss: generateLoaders(), 61 | less: generateLoaders('less'), 62 | sass: generateLoaders('sass', { indentedSyntax: true }), 63 | scss: generateLoaders('sass'), 64 | stylus: generateLoaders('stylus'), 65 | styl: generateLoaders('stylus') 66 | } 67 | } 68 | 69 | // Generate loaders for standalone style files (outside of .vue) 70 | exports.styleLoaders = function (options) { 71 | const output = [] 72 | const loaders = exports.cssLoaders(options) 73 | 74 | for (const extension in loaders) { 75 | const loader = loaders[extension] 76 | output.push({ 77 | test: new RegExp('\\.' + extension + '$'), 78 | use: loader 79 | }) 80 | } 81 | 82 | return output 83 | } 84 | 85 | exports.createNotifierCallback = () => { 86 | const notifier = require('node-notifier') 87 | 88 | return (severity, errors) => { 89 | if (severity !== 'error') return 90 | 91 | const error = errors[0] 92 | const filename = error.file && error.file.split('!').pop() 93 | 94 | notifier.notify({ 95 | title: packageConfig.name, 96 | message: severity + ': ' + error.name, 97 | subtitle: filename || '', 98 | icon: path.join(__dirname, 'logo.png') 99 | }) 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const config = require('../config') 5 | const vueLoaderConfig = require('./vue-loader.conf') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | 12 | 13 | module.exports = { 14 | context: path.resolve(__dirname, '../'), 15 | entry: { 16 | app: './src/main.js' 17 | }, 18 | output: { 19 | path: config.build.assetsRoot, 20 | filename: '[name].js', 21 | publicPath: process.env.NODE_ENV === 'production' 22 | ? config.build.assetsPublicPath 23 | : config.dev.assetsPublicPath 24 | }, 25 | resolve: { 26 | extensions: ['.js', '.vue', '.json'], 27 | alias: { 28 | 'vue$': 'vue/dist/vue.esm.js', 29 | '@': resolve('src'), 30 | } 31 | }, 32 | module: { 33 | rules: [ 34 | { 35 | test: /\.vue$/, 36 | loader: 'vue-loader', 37 | options: vueLoaderConfig 38 | }, 39 | { 40 | test: /\.js$/, 41 | loader: 'babel-loader', 42 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] 43 | }, 44 | { 45 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 46 | loader: 'url-loader', 47 | options: { 48 | limit: 10000, 49 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 50 | } 51 | }, 52 | { 53 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 54 | loader: 'url-loader', 55 | options: { 56 | limit: 10000, 57 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 58 | } 59 | }, 60 | { 61 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 62 | loader: 'url-loader', 63 | options: { 64 | limit: 10000, 65 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 66 | } 67 | } 68 | ] 69 | }, 70 | node: { 71 | // prevent webpack from injecting useless setImmediate polyfill because Vue 72 | // source contains it (although only uses it if it's native). 73 | setImmediate: false, 74 | // prevent webpack from injecting mocks to Node native modules 75 | // that does not make sense for the client 76 | dgram: 'empty', 77 | fs: 'empty', 78 | net: 'empty', 79 | tls: 'empty', 80 | child_process: 'empty' 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const webpack = require('webpack') 4 | const config = require('../config') 5 | const merge = require('webpack-merge') 6 | const path = require('path') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 11 | const portfinder = require('portfinder') 12 | 13 | const HOST = process.env.HOST 14 | const PORT = process.env.PORT && Number(process.env.PORT) 15 | 16 | const devWebpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) 19 | }, 20 | // cheap-module-eval-source-map is faster for development 21 | devtool: config.dev.devtool, 22 | 23 | // these devServer options should be customized in /config/index.js 24 | devServer: { 25 | clientLogLevel: 'warning', 26 | historyApiFallback: { 27 | rewrites: [ 28 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, 29 | ], 30 | }, 31 | hot: true, 32 | contentBase: false, // since we use CopyWebpackPlugin. 33 | compress: true, 34 | host: HOST || config.dev.host, 35 | port: PORT || config.dev.port, 36 | open: config.dev.autoOpenBrowser, 37 | overlay: config.dev.errorOverlay 38 | ? { warnings: false, errors: true } 39 | : false, 40 | publicPath: config.dev.assetsPublicPath, 41 | proxy: config.dev.proxyTable, 42 | quiet: true, // necessary for FriendlyErrorsPlugin 43 | watchOptions: { 44 | poll: config.dev.poll, 45 | } 46 | }, 47 | plugins: [ 48 | new webpack.DefinePlugin({ 49 | 'process.env': require('../config/dev.env') 50 | }), 51 | new webpack.HotModuleReplacementPlugin(), 52 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. 53 | new webpack.NoEmitOnErrorsPlugin(), 54 | // https://github.com/ampedandwired/html-webpack-plugin 55 | new HtmlWebpackPlugin({ 56 | filename: 'index.html', 57 | template: 'index.html', 58 | inject: true 59 | }), 60 | // copy custom static assets 61 | new CopyWebpackPlugin([ 62 | { 63 | from: path.resolve(__dirname, '../static'), 64 | to: config.dev.assetsSubDirectory, 65 | ignore: ['.*'] 66 | } 67 | ]) 68 | ] 69 | }) 70 | 71 | module.exports = new Promise((resolve, reject) => { 72 | portfinder.basePort = process.env.PORT || config.dev.port 73 | portfinder.getPort((err, port) => { 74 | if (err) { 75 | reject(err) 76 | } else { 77 | // publish the new Port, necessary for e2e tests 78 | process.env.PORT = port 79 | // add port to devServer config 80 | devWebpackConfig.devServer.port = port 81 | 82 | // Add FriendlyErrorsPlugin 83 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ 84 | compilationSuccessInfo: { 85 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], 86 | }, 87 | onErrors: config.dev.notifyOnErrors 88 | ? utils.createNotifierCallback() 89 | : undefined 90 | })) 91 | 92 | resolve(devWebpackConfig) 93 | } 94 | }) 95 | }) 96 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const path = require('path') 3 | const utils = require('./utils') 4 | const webpack = require('webpack') 5 | const config = require('../config') 6 | const merge = require('webpack-merge') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | const CopyWebpackPlugin = require('copy-webpack-plugin') 9 | const HtmlWebpackPlugin = require('html-webpack-plugin') 10 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 13 | 14 | const env = require('../config/prod.env') 15 | 16 | const webpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ 19 | sourceMap: config.build.productionSourceMap, 20 | extract: true, 21 | usePostCSS: true 22 | }) 23 | }, 24 | devtool: config.build.productionSourceMap ? config.build.devtool : false, 25 | output: { 26 | path: config.build.assetsRoot, 27 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 28 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 29 | }, 30 | plugins: [ 31 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 32 | new webpack.DefinePlugin({ 33 | 'process.env': env 34 | }), 35 | new UglifyJsPlugin({ 36 | uglifyOptions: { 37 | compress: { 38 | warnings: false 39 | } 40 | }, 41 | sourceMap: config.build.productionSourceMap, 42 | parallel: true 43 | }), 44 | // extract css into its own file 45 | new ExtractTextPlugin({ 46 | filename: utils.assetsPath('css/[name].[contenthash].css'), 47 | // Setting the following option to `false` will not extract CSS from codesplit chunks. 48 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. 49 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 50 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 51 | allChunks: true, 52 | }), 53 | // Compress extracted CSS. We are using this plugin so that possible 54 | // duplicated CSS from different components can be deduped. 55 | new OptimizeCSSPlugin({ 56 | cssProcessorOptions: config.build.productionSourceMap 57 | ? { safe: true, map: { inline: false } } 58 | : { safe: true } 59 | }), 60 | // generate dist index.html with correct asset hash for caching. 61 | // you can customize output by editing /index.html 62 | // see https://github.com/ampedandwired/html-webpack-plugin 63 | new HtmlWebpackPlugin({ 64 | filename: config.build.index, 65 | template: 'index.html', 66 | inject: true, 67 | minify: { 68 | removeComments: true, 69 | collapseWhitespace: true, 70 | removeAttributeQuotes: true 71 | // more options: 72 | // https://github.com/kangax/html-minifier#options-quick-reference 73 | }, 74 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 75 | chunksSortMode: 'dependency' 76 | }), 77 | // keep module.id stable when vendor modules does not change 78 | new webpack.HashedModuleIdsPlugin(), 79 | // enable scope hoisting 80 | new webpack.optimize.ModuleConcatenationPlugin(), 81 | // split vendor js into its own file 82 | new webpack.optimize.CommonsChunkPlugin({ 83 | name: 'vendor', 84 | minChunks (module) { 85 | // any required modules inside node_modules are extracted to vendor 86 | return ( 87 | module.resource && 88 | /\.js$/.test(module.resource) && 89 | module.resource.indexOf( 90 | path.join(__dirname, '../node_modules') 91 | ) === 0 92 | ) 93 | } 94 | }), 95 | // extract webpack runtime and module manifest to its own file in order to 96 | // prevent vendor hash from being updated whenever app bundle is updated 97 | new webpack.optimize.CommonsChunkPlugin({ 98 | name: 'manifest', 99 | minChunks: Infinity 100 | }), 101 | // This instance extracts shared chunks from code splitted chunks and bundles them 102 | // in a separate chunk, similar to the vendor chunk 103 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk 104 | new webpack.optimize.CommonsChunkPlugin({ 105 | name: 'app', 106 | async: 'vendor-async', 107 | children: true, 108 | minChunks: 3 109 | }), 110 | 111 | // copy custom static assets 112 | new CopyWebpackPlugin([ 113 | { 114 | from: path.resolve(__dirname, '../static'), 115 | to: config.build.assetsSubDirectory, 116 | ignore: ['.*'] 117 | } 118 | ]) 119 | ] 120 | }) 121 | 122 | if (config.build.productionGzip) { 123 | const CompressionWebpackPlugin = require('compression-webpack-plugin') 124 | 125 | webpackConfig.plugins.push( 126 | new CompressionWebpackPlugin({ 127 | asset: '[path].gz[query]', 128 | algorithm: 'gzip', 129 | test: new RegExp( 130 | '\\.(' + 131 | config.build.productionGzipExtensions.join('|') + 132 | ')$' 133 | ), 134 | threshold: 10240, 135 | minRatio: 0.8 136 | }) 137 | ) 138 | } 139 | 140 | if (config.build.bundleAnalyzerReport) { 141 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 142 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 143 | } 144 | 145 | module.exports = webpackConfig 146 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // Template version: 1.3.1 3 | // see http://vuejs-templates.github.io/webpack for documentation. 4 | 5 | const path = require('path') 6 | 7 | module.exports = { 8 | dev: { 9 | 10 | // Paths 11 | assetsSubDirectory: 'static', 12 | assetsPublicPath: '/', 13 | proxyTable: {}, 14 | 15 | // Various Dev Server settings 16 | host: 'localhost', // can be overwritten by process.env.HOST 17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined 18 | autoOpenBrowser: false, 19 | errorOverlay: true, 20 | notifyOnErrors: true, 21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 22 | 23 | 24 | /** 25 | * Source Maps 26 | */ 27 | 28 | // https://webpack.js.org/configuration/devtool/#development 29 | devtool: 'cheap-module-eval-source-map', 30 | 31 | // If you have problems debugging vue-files in devtools, 32 | // set this to false - it *may* help 33 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 34 | cacheBusting: true, 35 | 36 | cssSourceMap: true 37 | }, 38 | 39 | build: { 40 | // Template for index.html 41 | index: path.resolve(__dirname, '../dist/index.html'), 42 | 43 | // Paths 44 | assetsRoot: path.resolve(__dirname, '../dist'), 45 | assetsSubDirectory: 'static', 46 | assetsPublicPath: '/', 47 | 48 | /** 49 | * Source Maps 50 | */ 51 | 52 | productionSourceMap: true, 53 | // https://webpack.js.org/configuration/devtool/#production 54 | devtool: '#source-map', 55 | 56 | // Gzip off by default as many popular static hosts such as 57 | // Surge or Netlify already gzip all static assets for you. 58 | // Before setting to `true`, make sure to: 59 | // npm install --save-dev compression-webpack-plugin 60 | productionGzip: false, 61 | productionGzipExtensions: ['js', 'css'], 62 | 63 | // Run the build command with an extra argument to 64 | // View the bundle analyzer report after build finishes: 65 | // `npm run build --report` 66 | // Set to `true` or `false` to always turn it on or off 67 | bundleAnalyzerReport: process.env.npm_config_report 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 微信 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-wechat", 3 | "version": "1.0.0", 4 | "description": "vue-wechat", 5 | "author": "rico", 6 | "private": true, 7 | "scripts": { 8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 9 | "start": "npm run dev", 10 | "build": "node build/build.js" 11 | }, 12 | "dependencies": { 13 | "vue": "^2.5.2", 14 | "vue-router": "^3.0.1", 15 | "vuex": "^3.0.1", 16 | "axios":"^0.18.0" 17 | }, 18 | "devDependencies": { 19 | "autoprefixer": "^7.1.2", 20 | "babel-core": "^6.22.1", 21 | "babel-helper-vue-jsx-merge-props": "^2.0.3", 22 | "babel-loader": "^7.1.1", 23 | "babel-plugin-syntax-jsx": "^6.18.0", 24 | "babel-plugin-transform-runtime": "^6.22.0", 25 | "babel-plugin-transform-vue-jsx": "^3.5.0", 26 | "babel-preset-env": "^1.3.2", 27 | "babel-preset-stage-2": "^6.22.0", 28 | "chalk": "^2.0.1", 29 | "copy-webpack-plugin": "^4.0.1", 30 | "css-loader": "^0.28.0", 31 | "extract-text-webpack-plugin": "^3.0.0", 32 | "file-loader": "^1.1.4", 33 | "friendly-errors-webpack-plugin": "^1.6.1", 34 | "html-webpack-plugin": "^2.30.1", 35 | "node-notifier": "^5.1.2", 36 | "optimize-css-assets-webpack-plugin": "^3.2.0", 37 | "ora": "^1.2.0", 38 | "portfinder": "^1.0.13", 39 | "postcss-import": "^11.0.0", 40 | "postcss-loader": "^2.0.8", 41 | "postcss-url": "^7.2.1", 42 | "rimraf": "^2.6.0", 43 | "semver": "^5.3.0", 44 | "shelljs": "^0.7.6", 45 | "uglifyjs-webpack-plugin": "^1.1.1", 46 | "url-loader": "^0.5.8", 47 | "vue-loader": "^13.3.0", 48 | "vue-style-loader": "^3.0.1", 49 | "vue-template-compiler": "^2.5.2", 50 | "webpack": "^3.6.0", 51 | "webpack-bundle-analyzer": "^2.9.0", 52 | "webpack-dev-server": "^2.9.1", 53 | "webpack-merge": "^4.1.0" 54 | }, 55 | "engines": { 56 | "node": ">= 6.0.0", 57 | "npm": ">= 3.0.0" 58 | }, 59 | "browserslist": [ 60 | "> 1%", 61 | "last 2 versions", 62 | "not ie <= 8" 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 13 | 26 | 31 | -------------------------------------------------------------------------------- /src/assets/css/base.css: -------------------------------------------------------------------------------- 1 | .middle{ 2 | position:fixed; 3 | top:45px; 4 | width:100%; 5 | height:100%; 6 | } 7 | body{ 8 | width:100%; 9 | margin:0; 10 | padding:0; 11 | background-color: #efeff4; 12 | height:100%; 13 | 14 | } 15 | a{ 16 | text-decoration: none; 17 | } 18 | a:link { 19 | color: #000000; 20 | text-decoration: none; 21 | } 22 | a:visited { 23 | color: #000000; 24 | text-decoration: none; 25 | } 26 | a:hover { 27 | color: #000000; 28 | text-decoration: none; 29 | 30 | } 31 | a:active { 32 | color: #000000; 33 | text-decoration: none; 34 | } 35 | /*a:active div{ 36 | background-color:#efeff4; 37 | }*/ 38 | #app{ 39 | width:100%; 40 | margin:0; 41 | padding:0; 42 | } 43 | p{ 44 | margin:0; 45 | } 46 | span{ 47 | margin:0; 48 | 49 | } 50 | dl{ 51 | margin:0px; 52 | } 53 | h4{margin:5px 0 5px 0 ;} 54 | .idcells{ 55 | width:100%; 56 | border-top: solid 0.5px #d9d9d9; 57 | border-bottom: solid 0.5px #d9d9d9; 58 | margin:10px 0 12px 0; 59 | background-color: white; 60 | } 61 | .cells{ 62 | width:100%; 63 | border-top: solid 0.5px #d9d9d9; 64 | margin:10px 0 12px 0; 65 | display:flex; 66 | align-items: center; 67 | background-color: white; 68 | flex-direction: column; 69 | } 70 | .cells a{ 71 | width:100%; 72 | } 73 | .cellimg img{ 74 | width:24px; 75 | height:24px; 76 | 77 | } 78 | .cellimg{ 79 | display: inline-block; 80 | margin:5px 10px 0 10px 81 | } 82 | .cellname{ 83 | font-size: 15px; 84 | display: inline-block; 85 | margin:5px 0px 5px 10px; 86 | } 87 | .cell{ 88 | width:100%; 89 | border-bottom: solid 0.5px #d9d9d9; 90 | margin:0px; 91 | display:flex; 92 | align-items: center; 93 | background-color: white; 94 | } 95 | .buttongreen{ 96 | width:90%; 97 | height:35px; 98 | background-color:#1aad19; 99 | border-radius: 5px; 100 | margin:15px auto; 101 | text-align: center; 102 | line-height: 35px; 103 | color:white; 104 | } 105 | .buttonwhite{ 106 | width:90%; 107 | height:35px; 108 | background-color:white; 109 | border-radius: 5px; 110 | margin:10px auto; 111 | text-align: center; 112 | line-height: 35px; 113 | color:black; 114 | } 115 | ::-webkit-scrollbar{ 116 | display:none; 117 | } 118 | -------------------------------------------------------------------------------- /src/assets/css/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'iconfont'; 3 | src: url('//at.alicdn.com/t/font_1474796923_6082804.eot'); /* IE9*/ 4 | src: url('//at.alicdn.com/t/font_1474796923_6082804.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 5 | url('//at.alicdn.com/t/font_1474796923_6082804.woff') format('woff'), /* chrome、firefox */ 6 | url('//at.alicdn.com/t/font_1474796923_6082804.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ 7 | url('//at.alicdn.com/t/font_1474796923_6082804.svg#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family:"iconfont" !important; 12 | font-size:16px; 13 | font-style:normal; 14 | -webkit-font-smoothing: antialiased; 15 | -webkit-text-stroke-width: 0.2px; 16 | -moz-osx-font-smoothing: grayscale; 17 | } 18 | 19 | /**/ 20 | .icon-tips-jia::before { content: "\e605"; } 21 | .icon-return-arrow::before { content: "\e60a"; } 22 | .icon-tips-add-friend::before { content: "\e606"; } 23 | .icon-chat-set::before { content: "\e60e"; } 24 | .icon-mute::before { content: "\e604"; } 25 | .icon-tips-xiaoxi::before { content: "\e607"; } 26 | .icon-chat-person::before { content: "\e60c"; } 27 | .icon-chat-friends::before { content: "\e60c"; } 28 | .icon-more::before { content: "\e60b"; } 29 | .icon-tips-saoyisao::before { content: "\e608"; } 30 | .icon-wechat::before { content: "\e600"; } 31 | .icon-me::before { content: "\e601"; } 32 | .icon-dialogue-jia::before { content: "\e615"; } 33 | .icon-tips-fukuan::before { content: "\e609"; } 34 | .icon-contact::before { content: "\e610"; } 35 | .icon-find::before { content: "\e603"; } 36 | .icon-chat-group::before { content: "\e60d"; } 37 | .icon-chat-detail-add::before { content: "\e616"; } 38 | 39 | .icon-dialogue-voice::before { content: "\e60f"; } 40 | .icon-dialogue-jianpan::before { content: "\e611"; } 41 | .icon-dialogue-smile::before { content: "\e612"; } 42 | .icon-dialogue-bar-jianpan::before{ content: "\e602"; } 43 | .icon-dialogue-bar-menu::before{ content: "\e613"; } 44 | .icon-search::before{ content: "\e614"; } 45 | .icon-iphone-address::before{ content: "\e617"; } 46 | 47 | -------------------------------------------------------------------------------- /src/assets/css/weui.min.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-weight: 400; 3 | font-style: normal; 4 | font-family: weui; 5 | src: url("data:application/octet-stream;base64,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") format("truetype") 6 | } 7 | 8 | [class*=" weui-icon-"], 9 | [class^=weui-icon-] { 10 | display: inline-block; 11 | vertical-align: middle; 12 | font: normal normal normal 14px/1 weui; 13 | font-size: inherit; 14 | text-rendering: auto; 15 | -webkit-font-smoothing: antialiased 16 | } 17 | 18 | [class*=" weui-icon-"]:before, 19 | [class^=weui-icon-]:before { 20 | display: inline-block; 21 | margin-left: .2em; 22 | margin-right: .2em 23 | } 24 | 25 | .weui-icon-circle:before { 26 | content: "\EA01" 27 | } 28 | 29 | .weui-icon-download:before { 30 | content: "\EA02" 31 | } 32 | 33 | .weui-icon-info:before { 34 | content: "\EA03" 35 | } 36 | 37 | .weui-icon-safe-success:before { 38 | content: "\EA04" 39 | } 40 | 41 | .weui-icon-safe-warn:before { 42 | content: "\EA05" 43 | } 44 | 45 | .weui-icon-success:before { 46 | content: "\EA06" 47 | } 48 | 49 | .weui-icon-success-circle:before { 50 | content: "\EA07" 51 | } 52 | 53 | .weui-icon-success-no-circle:before { 54 | content: "\EA08" 55 | } 56 | 57 | .weui-icon-waiting:before { 58 | content: "\EA09" 59 | } 60 | 61 | .weui-icon-waiting-circle:before { 62 | content: "\EA0A" 63 | } 64 | 65 | .weui-icon-warn:before { 66 | content: "\EA0B" 67 | } 68 | 69 | .weui-icon-info-circle:before { 70 | content: "\EA0C" 71 | } 72 | 73 | .weui-icon-cancel:before { 74 | content: "\EA0D" 75 | } 76 | 77 | .weui-icon-search:before { 78 | content: "\EA0E" 79 | } 80 | 81 | .weui-icon-clear:before { 82 | content: "\EA0F" 83 | } 84 | 85 | .weui-icon-back:before { 86 | content: "\EA10" 87 | } 88 | 89 | .weui-icon-delete:before { 90 | content: "\EA11" 91 | } 92 | 93 | [class*=" weui-icon_"]:before, 94 | [class^=weui-icon_]:before { 95 | margin: 0 96 | } 97 | 98 | .weui-icon-success { 99 | font-size: 23px; 100 | color: #09bb07 101 | } 102 | 103 | .weui-icon-waiting { 104 | font-size: 23px; 105 | color: #10aeff 106 | } 107 | 108 | .weui-icon-warn { 109 | font-size: 23px; 110 | color: #f43530 111 | } 112 | 113 | .weui-icon-info { 114 | font-size: 23px; 115 | color: #10aeff 116 | } 117 | 118 | .weui-icon-success-circle, 119 | .weui-icon-success-no-circle { 120 | font-size: 23px; 121 | color: #09bb07 122 | } 123 | 124 | .weui-icon-waiting-circle { 125 | font-size: 23px; 126 | color: #10aeff 127 | } 128 | 129 | .weui-icon-circle { 130 | font-size: 23px; 131 | color: #c9c9c9 132 | } 133 | 134 | .weui-icon-download, 135 | .weui-icon-info-circle { 136 | font-size: 23px; 137 | color: #09bb07 138 | } 139 | 140 | .weui-icon-safe-success { 141 | color: #09bb07 142 | } 143 | 144 | .weui-icon-safe-warn { 145 | color: #ffbe00 146 | } 147 | 148 | .weui-icon-cancel { 149 | color: #f43530; 150 | font-size: 22px 151 | } 152 | 153 | .weui-icon-clear, 154 | .weui-icon-search { 155 | color: #b2b2b2; 156 | font-size: 14px 157 | } 158 | 159 | .weui-icon-delete.weui-icon_gallery-delete { 160 | color: #fff; 161 | font-size: 22px 162 | } 163 | 164 | .weui-icon_msg { 165 | font-size: 93px 166 | } 167 | 168 | .weui-icon_msg.weui-icon-warn { 169 | color: #f76260 170 | } 171 | 172 | .weui-icon_msg-primary { 173 | font-size: 93px 174 | } 175 | 176 | .weui-icon_msg-primary.weui-icon-warn { 177 | color: #ffbe00 178 | } 179 | 180 | .weui-btn { 181 | position: relative; 182 | display: block; 183 | margin-left: auto; 184 | margin-right: auto; 185 | padding-left: 14px; 186 | padding-right: 14px; 187 | box-sizing: border-box; 188 | font-size: 18px; 189 | text-align: center; 190 | text-decoration: none; 191 | color: #fff; 192 | line-height: 2.55555556; 193 | border-radius: 5px; 194 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 195 | overflow: hidden 196 | } 197 | 198 | .weui-btn:after { 199 | content: " "; 200 | width: 200%; 201 | height: 200%; 202 | position: absolute; 203 | top: 0; 204 | left: 0; 205 | border: 1px solid rgba(0, 0, 0, .2); 206 | -webkit-transform: scale(.5); 207 | transform: scale(.5); 208 | -webkit-transform-origin: 0 0; 209 | transform-origin: 0 0; 210 | box-sizing: border-box; 211 | border-radius: 10px 212 | } 213 | 214 | .weui-btn_inline { 215 | display: inline-block 216 | } 217 | 218 | .weui-btn_default { 219 | color: #000; 220 | background-color: #f8f8f8 221 | } 222 | 223 | .weui-btn_default:not(.weui-btn_disabled):visited { 224 | color: #000 225 | } 226 | 227 | .weui-btn_default:not(.weui-btn_disabled):active { 228 | color: rgba(0, 0, 0, .6); 229 | background-color: #dedede 230 | } 231 | 232 | .weui-btn_primary { 233 | background-color: #1aad19 234 | } 235 | 236 | .weui-btn_primary:not(.weui-btn_disabled):visited { 237 | color: #fff 238 | } 239 | 240 | .weui-btn_primary:not(.weui-btn_disabled):active { 241 | color: hsla(0, 0%, 100%, .6); 242 | background-color: #179b16 243 | } 244 | 245 | .weui-btn_warn { 246 | background-color: #e64340 247 | } 248 | 249 | .weui-btn_warn:not(.weui-btn_disabled):visited { 250 | color: #fff 251 | } 252 | 253 | .weui-btn_warn:not(.weui-btn_disabled):active { 254 | color: hsla(0, 0%, 100%, .6); 255 | background-color: #ce3c39 256 | } 257 | 258 | .weui-btn_disabled { 259 | color: hsla(0, 0%, 100%, .6) 260 | } 261 | 262 | .weui-btn_disabled.weui-btn_default { 263 | color: rgba(0, 0, 0, .3); 264 | background-color: #f7f7f7 265 | } 266 | 267 | .weui-btn_disabled.weui-btn_primary { 268 | background-color: #9ed99d 269 | } 270 | 271 | .weui-btn_disabled.weui-btn_warn { 272 | background-color: #ec8b89 273 | } 274 | 275 | .weui-btn_loading .weui-loading { 276 | margin: -.2em .34em 0 0 277 | } 278 | 279 | .weui-btn_loading.weui-btn_primary, 280 | .weui-btn_loading.weui-btn_warn { 281 | color: hsla(0, 0%, 100%, .6) 282 | } 283 | 284 | .weui-btn_loading.weui-btn_primary .weui-loading, 285 | .weui-btn_loading.weui-btn_warn .weui-loading { 286 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") 287 | } 288 | 289 | .weui-btn_loading.weui-btn_primary { 290 | background-color: #179b16 291 | } 292 | 293 | .weui-btn_loading.weui-btn_warn { 294 | background-color: #ce3c39 295 | } 296 | 297 | .weui-btn_plain-primary { 298 | color: #1aad19; 299 | border: 1px solid #1aad19 300 | } 301 | 302 | .weui-btn_plain-primary:not(.weui-btn_plain-disabled):active { 303 | color: rgba(26, 173, 25, .6); 304 | border-color: rgba(26, 173, 25, .6) 305 | } 306 | 307 | .weui-btn_plain-primary:after { 308 | border-width: 0 309 | } 310 | 311 | .weui-btn_plain-default { 312 | color: #353535; 313 | border: 1px solid #353535 314 | } 315 | 316 | .weui-btn_plain-default:not(.weui-btn_plain-disabled):active { 317 | color: rgba(53, 53, 53, .6); 318 | border-color: rgba(53, 53, 53, .6) 319 | } 320 | 321 | .weui-btn_plain-default:after { 322 | border-width: 0 323 | } 324 | 325 | .weui-btn_plain-disabled { 326 | color: rgba(0, 0, 0, .2); 327 | border-color: rgba(0, 0, 0, .2) 328 | } 329 | 330 | button.weui-btn, 331 | input.weui-btn { 332 | width: 100%; 333 | border-width: 0; 334 | outline: 0; 335 | -webkit-appearance: none 336 | } 337 | 338 | button.weui-btn:focus, 339 | input.weui-btn:focus { 340 | outline: 0 341 | } 342 | 343 | button.weui-btn_inline, 344 | button.weui-btn_mini, 345 | input.weui-btn_inline, 346 | input.weui-btn_mini { 347 | width: auto 348 | } 349 | 350 | button.weui-btn_plain-default, 351 | button.weui-btn_plain-primary, 352 | input.weui-btn_plain-default, 353 | input.weui-btn_plain-primary { 354 | border-width: 1px; 355 | background-color: transparent 356 | } 357 | 358 | .weui-btn_mini { 359 | display: inline-block; 360 | padding: 0 1.32em; 361 | line-height: 2.3; 362 | font-size: 13px 363 | } 364 | 365 | .weui-btn+.weui-btn { 366 | margin-top: 15px 367 | } 368 | 369 | .weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline { 370 | margin-top: auto; 371 | margin-left: 15px 372 | } 373 | 374 | .weui-btn-area { 375 | margin: 1.17647059em 15px .3em 376 | } 377 | 378 | .weui-btn-area_inline { 379 | display: -webkit-box; 380 | display: -webkit-flex; 381 | display: flex 382 | } 383 | 384 | .weui-btn-area_inline .weui-btn { 385 | margin-top: auto; 386 | margin-right: 15px; 387 | width: 100%; 388 | -webkit-box-flex: 1; 389 | -webkit-flex: 1; 390 | flex: 1 391 | } 392 | 393 | .weui-btn-area_inline .weui-btn:last-child { 394 | margin-right: 0 395 | } 396 | 397 | .weui-cells { 398 | margin-top: 1.17647059em; 399 | background-color: #fff; 400 | line-height: 1.41176471; 401 | font-size: 15px; 402 | overflow: hidden; 403 | position: relative 404 | } 405 | 406 | .weui-cells:before { 407 | top: 0; 408 | border-top: 1px solid #d9d9d9; 409 | -webkit-transform-origin: 0 0; 410 | transform-origin: 0 0; 411 | -webkit-transform: scaleY(.5); 412 | transform: scaleY(.5) 413 | } 414 | 415 | .weui-cells:after, 416 | .weui-cells:before { 417 | content: " "; 418 | position: absolute; 419 | left: 0; 420 | right: 0; 421 | height: 1px; 422 | color: #d9d9d9 423 | } 424 | 425 | .weui-cells:after { 426 | bottom: 0; 427 | border-bottom: 1px solid #d9d9d9; 428 | -webkit-transform-origin: 0 100%; 429 | transform-origin: 0 100%; 430 | -webkit-transform: scaleY(.5); 431 | transform: scaleY(.5) 432 | } 433 | 434 | .weui-cells__title { 435 | margin-top: .77em; 436 | margin-bottom: .3em; 437 | padding-left: 15px; 438 | padding-right: 15px; 439 | color: #999; 440 | font-size: 14px 441 | } 442 | 443 | .weui-cells__title+.weui-cells { 444 | margin-top: 0 445 | } 446 | 447 | .weui-cells__tips { 448 | margin-top: .3em; 449 | color: #999; 450 | padding-left: 15px; 451 | padding-right: 15px; 452 | font-size: 14px 453 | } 454 | 455 | .weui-cell { 456 | padding: 10px 15px; 457 | position: relative; 458 | display: -webkit-box; 459 | display: -webkit-flex; 460 | display: flex; 461 | -webkit-box-align: center; 462 | -webkit-align-items: center; 463 | align-items: center 464 | } 465 | 466 | .weui-cell:before { 467 | content: " "; 468 | position: absolute; 469 | left: 0; 470 | top: 0; 471 | right: 0; 472 | height: 1px; 473 | border-top: 1px solid #d9d9d9; 474 | color: #d9d9d9; 475 | -webkit-transform-origin: 0 0; 476 | transform-origin: 0 0; 477 | -webkit-transform: scaleY(.5); 478 | transform: scaleY(.5); 479 | left: 15px 480 | } 481 | 482 | .weui-cell:first-child:before { 483 | display: none 484 | } 485 | 486 | .weui-cell_primary { 487 | -webkit-box-align: start; 488 | -webkit-align-items: flex-start; 489 | align-items: flex-start 490 | } 491 | 492 | .weui-cell__bd { 493 | -webkit-box-flex: 1; 494 | -webkit-flex: 1; 495 | flex: 1 496 | } 497 | 498 | .weui-cell__ft { 499 | text-align: right; 500 | color: #999 501 | } 502 | 503 | .weui-cell_access { 504 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 505 | color: inherit 506 | } 507 | 508 | .weui-cell_access:active { 509 | background-color: #ececec 510 | } 511 | 512 | .weui-cell_access .weui-cell__ft { 513 | padding-right: 13px; 514 | position: relative 515 | } 516 | 517 | .weui-cell_access .weui-cell__ft:after { 518 | content: " "; 519 | display: inline-block; 520 | height: 6px; 521 | width: 6px; 522 | border-width: 2px 2px 0 0; 523 | border-color: #c8c8cd; 524 | border-style: solid; 525 | -webkit-transform: matrix(.71, .71, -.71, .71, 0, 0); 526 | transform: matrix(.71, .71, -.71, .71, 0, 0); 527 | position: relative; 528 | top: -2px; 529 | position: absolute; 530 | top: 50%; 531 | margin-top: -4px; 532 | right: 2px 533 | } 534 | 535 | .weui-cell_link { 536 | color: #586c94; 537 | font-size: 14px 538 | } 539 | 540 | .weui-cell_link:first-child:before { 541 | display: block 542 | } 543 | 544 | .weui-check__label { 545 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 546 | } 547 | 548 | .weui-check__label:active { 549 | background-color: #ececec 550 | } 551 | 552 | .weui-check { 553 | position: absolute; 554 | left: -9999em 555 | } 556 | 557 | .weui-cells_radio .weui-cell__ft { 558 | padding-left: .35em 559 | } 560 | 561 | .weui-cells_radio .weui-check:checked+.weui-icon-checked:before { 562 | display: block; 563 | content: "\EA08"; 564 | color: #09bb07; 565 | font-size: 16px 566 | } 567 | 568 | .weui-cells_checkbox .weui-cell__hd { 569 | padding-right: .35em 570 | } 571 | 572 | .weui-cells_checkbox .weui-icon-checked:before { 573 | content: "\EA01"; 574 | color: #c9c9c9; 575 | font-size: 23px; 576 | display: block 577 | } 578 | 579 | .weui-cells_checkbox .weui-check:checked+.weui-icon-checked:before { 580 | content: "\EA06"; 581 | color: #09bb07 582 | } 583 | 584 | .weui-label { 585 | display: block; 586 | width: 105px; 587 | word-wrap: break-word; 588 | word-break: break-all 589 | } 590 | 591 | .weui-input { 592 | width: 100%; 593 | border: 0; 594 | outline: 0; 595 | -webkit-appearance: none; 596 | background-color: transparent; 597 | font-size: inherit; 598 | color: inherit; 599 | height: 1.41176471em; 600 | line-height: 1.41176471 601 | } 602 | 603 | .weui-input::-webkit-inner-spin-button, 604 | .weui-input::-webkit-outer-spin-button { 605 | -webkit-appearance: none; 606 | margin: 0 607 | } 608 | 609 | .weui-textarea { 610 | display: block; 611 | border: 0; 612 | resize: none; 613 | width: 100%; 614 | color: inherit; 615 | font-size: 1em; 616 | line-height: inherit; 617 | outline: 0 618 | } 619 | 620 | .weui-textarea-counter { 621 | color: #b2b2b2; 622 | text-align: right 623 | } 624 | 625 | .weui-cell_warn .weui-textarea-counter { 626 | color: #e64340 627 | } 628 | 629 | .weui-toptips { 630 | display: none; 631 | position: fixed; 632 | -webkit-transform: translateZ(0); 633 | transform: translateZ(0); 634 | top: 0; 635 | left: 0; 636 | right: 0; 637 | padding: 5px; 638 | font-size: 14px; 639 | text-align: center; 640 | color: #fff; 641 | z-index: 5000; 642 | word-wrap: break-word; 643 | word-break: break-all 644 | } 645 | 646 | .weui-toptips_warn { 647 | background-color: #e64340 648 | } 649 | 650 | .weui-cells_form .weui-cell__ft { 651 | font-size: 0 652 | } 653 | 654 | .weui-cells_form .weui-icon-warn { 655 | display: none 656 | } 657 | 658 | .weui-cells_form input, 659 | .weui-cells_form label[for], 660 | .weui-cells_form textarea { 661 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 662 | } 663 | 664 | .weui-cell_warn { 665 | color: #e64340 666 | } 667 | 668 | .weui-cell_warn .weui-icon-warn { 669 | display: inline-block 670 | } 671 | 672 | .weui-form-preview { 673 | position: relative; 674 | background-color: #fff 675 | } 676 | 677 | .weui-form-preview:before { 678 | top: 0; 679 | border-top: 1px solid #d9d9d9; 680 | -webkit-transform-origin: 0 0; 681 | transform-origin: 0 0; 682 | -webkit-transform: scaleY(.5); 683 | transform: scaleY(.5) 684 | } 685 | 686 | .weui-form-preview:after, 687 | .weui-form-preview:before { 688 | content: " "; 689 | position: absolute; 690 | left: 0; 691 | right: 0; 692 | height: 1px; 693 | color: #d9d9d9 694 | } 695 | 696 | .weui-form-preview:after { 697 | bottom: 0; 698 | border-bottom: 1px solid #d9d9d9; 699 | -webkit-transform-origin: 0 100%; 700 | transform-origin: 0 100%; 701 | -webkit-transform: scaleY(.5); 702 | transform: scaleY(.5) 703 | } 704 | 705 | .weui-form-preview__hd { 706 | position: relative; 707 | padding: 10px 15px; 708 | text-align: right; 709 | line-height: 2.5em 710 | } 711 | 712 | .weui-form-preview__hd:after { 713 | content: " "; 714 | position: absolute; 715 | left: 0; 716 | bottom: 0; 717 | right: 0; 718 | height: 1px; 719 | border-bottom: 1px solid #d9d9d9; 720 | color: #d9d9d9; 721 | -webkit-transform-origin: 0 100%; 722 | transform-origin: 0 100%; 723 | -webkit-transform: scaleY(.5); 724 | transform: scaleY(.5); 725 | left: 15px 726 | } 727 | 728 | .weui-form-preview__hd .weui-form-preview__value { 729 | font-style: normal; 730 | font-size: 1.6em 731 | } 732 | 733 | .weui-form-preview__bd { 734 | padding: 10px 15px; 735 | font-size: .9em; 736 | text-align: right; 737 | color: #999; 738 | line-height: 2 739 | } 740 | 741 | .weui-form-preview__ft { 742 | position: relative; 743 | line-height: 50px; 744 | display: -webkit-box; 745 | display: -webkit-flex; 746 | display: flex 747 | } 748 | 749 | .weui-form-preview__ft:after { 750 | content: " "; 751 | position: absolute; 752 | left: 0; 753 | top: 0; 754 | right: 0; 755 | height: 1px; 756 | border-top: 1px solid #d5d5d6; 757 | color: #d5d5d6; 758 | -webkit-transform-origin: 0 0; 759 | transform-origin: 0 0; 760 | -webkit-transform: scaleY(.5); 761 | transform: scaleY(.5) 762 | } 763 | 764 | .weui-form-preview__item { 765 | overflow: hidden 766 | } 767 | 768 | .weui-form-preview__label { 769 | float: left; 770 | margin-right: 1em; 771 | min-width: 4em; 772 | color: #999; 773 | text-align: justify; 774 | text-align-last: justify 775 | } 776 | 777 | .weui-form-preview__value { 778 | display: block; 779 | overflow: hidden; 780 | word-break: normal; 781 | word-wrap: break-word 782 | } 783 | 784 | .weui-form-preview__btn { 785 | position: relative; 786 | display: block; 787 | -webkit-box-flex: 1; 788 | -webkit-flex: 1; 789 | flex: 1; 790 | color: #3cc51f; 791 | text-align: center; 792 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 793 | } 794 | 795 | button.weui-form-preview__btn { 796 | background-color: transparent; 797 | border: 0; 798 | outline: 0; 799 | line-height: inherit; 800 | font-size: inherit 801 | } 802 | 803 | .weui-form-preview__btn:active { 804 | background-color: #eee 805 | } 806 | 807 | .weui-form-preview__btn:after { 808 | content: " "; 809 | position: absolute; 810 | left: 0; 811 | top: 0; 812 | width: 1px; 813 | bottom: 0; 814 | border-left: 1px solid #d5d5d6; 815 | color: #d5d5d6; 816 | -webkit-transform-origin: 0 0; 817 | transform-origin: 0 0; 818 | -webkit-transform: scaleX(.5); 819 | transform: scaleX(.5) 820 | } 821 | 822 | .weui-form-preview__btn:first-child:after { 823 | display: none 824 | } 825 | 826 | .weui-form-preview__btn_default { 827 | color: #999 828 | } 829 | 830 | .weui-form-preview__btn_primary { 831 | color: #0bb20c 832 | } 833 | 834 | .weui-cell_select { 835 | padding: 0 836 | } 837 | 838 | .weui-cell_select .weui-select { 839 | padding-right: 30px 840 | } 841 | 842 | .weui-cell_select .weui-cell__bd:after { 843 | content: " "; 844 | display: inline-block; 845 | height: 6px; 846 | width: 6px; 847 | border-width: 2px 2px 0 0; 848 | border-color: #c8c8cd; 849 | border-style: solid; 850 | -webkit-transform: matrix(.71, .71, -.71, .71, 0, 0); 851 | transform: matrix(.71, .71, -.71, .71, 0, 0); 852 | position: relative; 853 | top: -2px; 854 | position: absolute; 855 | top: 50%; 856 | right: 15px; 857 | margin-top: -4px 858 | } 859 | 860 | .weui-select { 861 | -webkit-appearance: none; 862 | border: 0; 863 | outline: 0; 864 | background-color: transparent; 865 | width: 100%; 866 | font-size: inherit; 867 | height: 44px; 868 | line-height: 44px; 869 | position: relative; 870 | z-index: 1; 871 | padding-left: 15px 872 | } 873 | 874 | .weui-cell_select-before { 875 | padding-right: 15px 876 | } 877 | 878 | .weui-cell_select-before .weui-select { 879 | width: 105px; 880 | box-sizing: border-box 881 | } 882 | 883 | .weui-cell_select-before .weui-cell__hd { 884 | position: relative 885 | } 886 | 887 | .weui-cell_select-before .weui-cell__hd:after { 888 | content: " "; 889 | position: absolute; 890 | right: 0; 891 | top: 0; 892 | width: 1px; 893 | bottom: 0; 894 | border-right: 1px solid #d9d9d9; 895 | color: #d9d9d9; 896 | -webkit-transform-origin: 100% 0; 897 | transform-origin: 100% 0; 898 | -webkit-transform: scaleX(.5); 899 | transform: scaleX(.5) 900 | } 901 | 902 | .weui-cell_select-before .weui-cell__hd:before { 903 | content: " "; 904 | display: inline-block; 905 | height: 6px; 906 | width: 6px; 907 | border-width: 2px 2px 0 0; 908 | border-color: #c8c8cd; 909 | border-style: solid; 910 | -webkit-transform: matrix(.71, .71, -.71, .71, 0, 0); 911 | transform: matrix(.71, .71, -.71, .71, 0, 0); 912 | position: relative; 913 | top: -2px; 914 | position: absolute; 915 | top: 50%; 916 | right: 15px; 917 | margin-top: -4px 918 | } 919 | 920 | .weui-cell_select-before .weui-cell__bd { 921 | padding-left: 15px 922 | } 923 | 924 | .weui-cell_select-before .weui-cell__bd:after { 925 | display: none 926 | } 927 | 928 | .weui-cell_select-after { 929 | padding-left: 15px 930 | } 931 | 932 | .weui-cell_select-after .weui-select { 933 | padding-left: 0 934 | } 935 | 936 | .weui-cell_vcode { 937 | padding-top: 0; 938 | padding-right: 0; 939 | padding-bottom: 0 940 | } 941 | 942 | .weui-vcode-btn, 943 | .weui-vcode-img { 944 | margin-left: 5px; 945 | height: 44px; 946 | vertical-align: middle 947 | } 948 | 949 | .weui-vcode-btn { 950 | display: inline-block; 951 | padding: 0 .6em 0 .7em; 952 | border-left: 1px solid #e5e5e5; 953 | line-height: 44px; 954 | font-size: 17px; 955 | color: #3cc51f 956 | } 957 | 958 | button.weui-vcode-btn { 959 | background-color: transparent; 960 | border-top: 0; 961 | border-right: 0; 962 | border-bottom: 0; 963 | outline: 0 964 | } 965 | 966 | .weui-vcode-btn:active { 967 | color: #52a341 968 | } 969 | 970 | .weui-gallery { 971 | display: none; 972 | position: fixed; 973 | top: 0; 974 | right: 0; 975 | bottom: 0; 976 | left: 0; 977 | background-color: #000; 978 | z-index: 1000 979 | } 980 | 981 | .weui-gallery__img { 982 | position: absolute; 983 | top: 0; 984 | right: 0; 985 | bottom: 60px; 986 | left: 0; 987 | background: 50% no-repeat; 988 | background-size: contain 989 | } 990 | 991 | .weui-gallery__opr { 992 | position: absolute; 993 | right: 0; 994 | bottom: 0; 995 | left: 0; 996 | background-color: #0d0d0d; 997 | color: #fff; 998 | line-height: 60px; 999 | text-align: center 1000 | } 1001 | 1002 | .weui-gallery__del { 1003 | display: block 1004 | } 1005 | 1006 | .weui-cell_switch { 1007 | padding-top: 6px; 1008 | padding-bottom: 6px 1009 | } 1010 | 1011 | .weui-switch { 1012 | -webkit-appearance: none; 1013 | appearance: none 1014 | } 1015 | 1016 | .weui-switch, 1017 | .weui-switch-cp__box { 1018 | position: relative; 1019 | width: 52px; 1020 | height: 32px; 1021 | border: 1px solid #dfdfdf; 1022 | outline: 0; 1023 | border-radius: 16px; 1024 | box-sizing: border-box; 1025 | background-color: #dfdfdf; 1026 | -webkit-transition: background-color .1s, border .1s; 1027 | transition: background-color .1s, border .1s 1028 | } 1029 | 1030 | .weui-switch-cp__box:before, 1031 | .weui-switch:before { 1032 | content: " "; 1033 | position: absolute; 1034 | top: 0; 1035 | left: 0; 1036 | width: 50px; 1037 | height: 30px; 1038 | border-radius: 15px; 1039 | background-color: #fdfdfd; 1040 | -webkit-transition: -webkit-transform .35s cubic-bezier(.45, 1, .4, 1); 1041 | transition: -webkit-transform .35s cubic-bezier(.45, 1, .4, 1); 1042 | transition: transform .35s cubic-bezier(.45, 1, .4, 1); 1043 | transition: transform .35s cubic-bezier(.45, 1, .4, 1), -webkit-transform .35s cubic-bezier(.45, 1, .4, 1) 1044 | } 1045 | 1046 | .weui-switch-cp__box:after, 1047 | .weui-switch:after { 1048 | content: " "; 1049 | position: absolute; 1050 | top: 0; 1051 | left: 0; 1052 | width: 30px; 1053 | height: 30px; 1054 | border-radius: 15px; 1055 | background-color: #fff; 1056 | box-shadow: 0 1px 3px rgba(0, 0, 0, .4); 1057 | -webkit-transition: -webkit-transform .35s cubic-bezier(.4, .4, .25, 1.35); 1058 | transition: -webkit-transform .35s cubic-bezier(.4, .4, .25, 1.35); 1059 | transition: transform .35s cubic-bezier(.4, .4, .25, 1.35); 1060 | transition: transform .35s cubic-bezier(.4, .4, .25, 1.35), -webkit-transform .35s cubic-bezier(.4, .4, .25, 1.35) 1061 | } 1062 | 1063 | .weui-switch-cp__input:checked~.weui-switch-cp__box, 1064 | .weui-switch:checked { 1065 | border-color: #04be02; 1066 | background-color: #04be02 1067 | } 1068 | 1069 | .weui-switch-cp__input:checked~.weui-switch-cp__box:before, 1070 | .weui-switch:checked:before { 1071 | -webkit-transform: scale(0); 1072 | transform: scale(0) 1073 | } 1074 | 1075 | .weui-switch-cp__input:checked~.weui-switch-cp__box:after, 1076 | .weui-switch:checked:after { 1077 | -webkit-transform: translateX(20px); 1078 | transform: translateX(20px) 1079 | } 1080 | 1081 | .weui-switch-cp__input { 1082 | position: absolute; 1083 | left: -9999px 1084 | } 1085 | 1086 | .weui-switch-cp__box { 1087 | display: block 1088 | } 1089 | 1090 | .weui-uploader__hd { 1091 | display: -webkit-box; 1092 | display: -webkit-flex; 1093 | display: flex; 1094 | padding-bottom: 10px; 1095 | -webkit-box-align: center; 1096 | -webkit-align-items: center; 1097 | align-items: center 1098 | } 1099 | 1100 | .weui-uploader__title { 1101 | -webkit-box-flex: 1; 1102 | -webkit-flex: 1; 1103 | flex: 1 1104 | } 1105 | 1106 | .weui-uploader__info { 1107 | color: #b2b2b2 1108 | } 1109 | 1110 | .weui-uploader__bd { 1111 | margin-bottom: -4px; 1112 | margin-right: -9px; 1113 | overflow: hidden 1114 | } 1115 | 1116 | .weui-uploader__files { 1117 | list-style: none 1118 | } 1119 | 1120 | .weui-uploader__file { 1121 | float: left; 1122 | margin-right: 9px; 1123 | margin-bottom: 9px; 1124 | width: 79px; 1125 | height: 79px; 1126 | background: no-repeat 50%; 1127 | background-size: cover 1128 | } 1129 | 1130 | .weui-uploader__file_status { 1131 | position: relative 1132 | } 1133 | 1134 | .weui-uploader__file_status:before { 1135 | content: " "; 1136 | position: absolute; 1137 | top: 0; 1138 | right: 0; 1139 | bottom: 0; 1140 | left: 0; 1141 | background-color: rgba(0, 0, 0, .5) 1142 | } 1143 | 1144 | .weui-uploader__file_status .weui-uploader__file-content { 1145 | display: block 1146 | } 1147 | 1148 | .weui-uploader__file-content { 1149 | display: none; 1150 | position: absolute; 1151 | top: 50%; 1152 | left: 50%; 1153 | -webkit-transform: translate(-50%, -50%); 1154 | transform: translate(-50%, -50%); 1155 | color: #fff 1156 | } 1157 | 1158 | .weui-uploader__file-content .weui-icon-warn { 1159 | display: inline-block 1160 | } 1161 | 1162 | .weui-uploader__input-box { 1163 | float: left; 1164 | position: relative; 1165 | margin-right: 9px; 1166 | margin-bottom: 9px; 1167 | width: 77px; 1168 | height: 77px; 1169 | border: 1px solid #d9d9d9 1170 | } 1171 | 1172 | .weui-uploader__input-box:after, 1173 | .weui-uploader__input-box:before { 1174 | content: " "; 1175 | position: absolute; 1176 | top: 50%; 1177 | left: 50%; 1178 | -webkit-transform: translate(-50%, -50%); 1179 | transform: translate(-50%, -50%); 1180 | background-color: #d9d9d9 1181 | } 1182 | 1183 | .weui-uploader__input-box:before { 1184 | width: 2px; 1185 | height: 39.5px 1186 | } 1187 | 1188 | .weui-uploader__input-box:after { 1189 | width: 39.5px; 1190 | height: 2px 1191 | } 1192 | 1193 | .weui-uploader__input-box:active { 1194 | border-color: #999 1195 | } 1196 | 1197 | .weui-uploader__input-box:active:after, 1198 | .weui-uploader__input-box:active:before { 1199 | background-color: #999 1200 | } 1201 | 1202 | .weui-uploader__input { 1203 | position: absolute; 1204 | z-index: 1; 1205 | top: 0; 1206 | left: 0; 1207 | width: 100%; 1208 | height: 100%; 1209 | opacity: 0; 1210 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 1211 | } 1212 | 1213 | .weui-msg { 1214 | padding-top: 36px; 1215 | text-align: center 1216 | } 1217 | 1218 | .weui-msg__icon-area { 1219 | margin-bottom: 30px 1220 | } 1221 | 1222 | .weui-msg__text-area { 1223 | margin-bottom: 25px; 1224 | padding: 0 20px 1225 | } 1226 | 1227 | .weui-msg__text-area a { 1228 | color: #586c94 1229 | } 1230 | 1231 | .weui-msg__title { 1232 | margin-bottom: 5px; 1233 | font-weight: 400; 1234 | font-size: 20px 1235 | } 1236 | 1237 | .weui-msg__desc { 1238 | font-size: 14px; 1239 | color: #999 1240 | } 1241 | 1242 | .weui-msg__opr-area { 1243 | margin-bottom: 25px 1244 | } 1245 | 1246 | .weui-msg__extra-area { 1247 | margin-bottom: 15px; 1248 | font-size: 14px; 1249 | color: #999 1250 | } 1251 | 1252 | .weui-msg__extra-area a { 1253 | color: #586c94 1254 | } 1255 | 1256 | @media screen and (min-height:438px) { 1257 | .weui-msg__extra-area { 1258 | position: fixed; 1259 | left: 0; 1260 | bottom: 0; 1261 | width: 100%; 1262 | text-align: center 1263 | } 1264 | } 1265 | 1266 | .weui-article { 1267 | padding: 20px 15px; 1268 | font-size: 15px 1269 | } 1270 | 1271 | .weui-article section { 1272 | margin-bottom: 1.5em 1273 | } 1274 | 1275 | .weui-article h1 { 1276 | font-size: 18px; 1277 | font-weight: 400; 1278 | margin-bottom: .9em 1279 | } 1280 | 1281 | .weui-article h2 { 1282 | font-size: 16px 1283 | } 1284 | 1285 | .weui-article h2, 1286 | .weui-article h3 { 1287 | font-weight: 400; 1288 | margin-bottom: .34em 1289 | } 1290 | 1291 | .weui-article h3 { 1292 | font-size: 15px 1293 | } 1294 | 1295 | .weui-article * { 1296 | max-width: 100%; 1297 | box-sizing: border-box; 1298 | word-wrap: break-word 1299 | } 1300 | 1301 | .weui-article p { 1302 | margin: 0 0 .8em 1303 | } 1304 | 1305 | .weui-tabbar { 1306 | display: -webkit-box; 1307 | display: -webkit-flex; 1308 | display: flex; 1309 | position: absolute; 1310 | z-index: 500; 1311 | bottom: 0; 1312 | width: 100%; 1313 | background-color: #f7f7fa 1314 | } 1315 | 1316 | .weui-tabbar:before { 1317 | content: " "; 1318 | position: absolute; 1319 | left: 0; 1320 | top: 0; 1321 | right: 0; 1322 | height: 1px; 1323 | border-top: 1px solid #c0bfc4; 1324 | color: #c0bfc4; 1325 | -webkit-transform-origin: 0 0; 1326 | transform-origin: 0 0; 1327 | -webkit-transform: scaleY(.5); 1328 | transform: scaleY(.5) 1329 | } 1330 | 1331 | .weui-tabbar__item { 1332 | display: block; 1333 | -webkit-box-flex: 1; 1334 | -webkit-flex: 1; 1335 | flex: 1; 1336 | padding: 5px 0 0; 1337 | font-size: 0; 1338 | color: #999; 1339 | text-align: center; 1340 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 1341 | } 1342 | 1343 | .weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon, 1344 | .weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon>i, 1345 | .weui-tabbar__item.weui-bar__item_on .weui-tabbar__label { 1346 | color: #09bb07 1347 | } 1348 | 1349 | .weui-tabbar__icon { 1350 | display: inline-block; 1351 | width: 27px; 1352 | height: 27px 1353 | } 1354 | 1355 | .weui-tabbar__icon>i, 1356 | i.weui-tabbar__icon { 1357 | font-size: 24px; 1358 | color: #999 1359 | } 1360 | 1361 | .weui-tabbar__icon img { 1362 | width: 100%; 1363 | height: 100% 1364 | } 1365 | 1366 | .weui-tabbar__label { 1367 | text-align: center; 1368 | color: #999; 1369 | font-size: 10px; 1370 | line-height: 1.8 1371 | } 1372 | 1373 | .weui-navbar { 1374 | display: -webkit-box; 1375 | display: -webkit-flex; 1376 | display: flex; 1377 | position: absolute; 1378 | z-index: 500; 1379 | top: 0; 1380 | width: 100%; 1381 | background-color: #fafafa 1382 | } 1383 | 1384 | .weui-navbar:after { 1385 | content: " "; 1386 | position: absolute; 1387 | left: 0; 1388 | bottom: 0; 1389 | right: 0; 1390 | height: 1px; 1391 | border-bottom: 1px solid #ccc; 1392 | color: #ccc; 1393 | -webkit-transform-origin: 0 100%; 1394 | transform-origin: 0 100%; 1395 | -webkit-transform: scaleY(.5); 1396 | transform: scaleY(.5) 1397 | } 1398 | 1399 | .weui-navbar+.weui-tab__panel { 1400 | padding-top: 50px; 1401 | padding-bottom: 0 1402 | } 1403 | 1404 | .weui-navbar__item { 1405 | position: relative; 1406 | display: block; 1407 | -webkit-box-flex: 1; 1408 | -webkit-flex: 1; 1409 | flex: 1; 1410 | padding: 13px 0; 1411 | text-align: center; 1412 | font-size: 15px; 1413 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 1414 | } 1415 | 1416 | .weui-navbar__item:active { 1417 | background-color: #ededed 1418 | } 1419 | 1420 | .weui-navbar__item.weui-bar__item_on { 1421 | background-color: #eaeaea 1422 | } 1423 | 1424 | .weui-navbar__item:after { 1425 | content: " "; 1426 | position: absolute; 1427 | right: 0; 1428 | top: 0; 1429 | width: 1px; 1430 | bottom: 0; 1431 | border-right: 1px solid #ccc; 1432 | color: #ccc; 1433 | -webkit-transform-origin: 100% 0; 1434 | transform-origin: 100% 0; 1435 | -webkit-transform: scaleX(.5); 1436 | transform: scaleX(.5) 1437 | } 1438 | 1439 | .weui-navbar__item:last-child:after { 1440 | display: none 1441 | } 1442 | 1443 | .weui-tab { 1444 | position: relative; 1445 | height: 100% 1446 | } 1447 | 1448 | .weui-tab__panel { 1449 | box-sizing: border-box; 1450 | height: 100%; 1451 | padding-bottom: 50px; 1452 | overflow: auto; 1453 | -webkit-overflow-scrolling: touch 1454 | } 1455 | 1456 | .weui-tab__content { 1457 | display: none 1458 | } 1459 | 1460 | .weui-progress { 1461 | display: -webkit-box; 1462 | display: -webkit-flex; 1463 | display: flex; 1464 | -webkit-box-align: center; 1465 | -webkit-align-items: center; 1466 | align-items: center 1467 | } 1468 | 1469 | .weui-progress__bar { 1470 | background-color: #ebebeb; 1471 | height: 3px; 1472 | -webkit-box-flex: 1; 1473 | -webkit-flex: 1; 1474 | flex: 1 1475 | } 1476 | 1477 | .weui-progress__inner-bar { 1478 | width: 0; 1479 | height: 100%; 1480 | background-color: #09bb07 1481 | } 1482 | 1483 | .weui-progress__opr { 1484 | display: block; 1485 | margin-left: 15px; 1486 | font-size: 0 1487 | } 1488 | 1489 | .weui-panel { 1490 | background-color: #fff; 1491 | margin-top: 10px; 1492 | position: relative; 1493 | overflow: hidden 1494 | } 1495 | 1496 | .weui-panel:first-child { 1497 | margin-top: 0 1498 | } 1499 | 1500 | .weui-panel:before { 1501 | top: 0; 1502 | border-top: 1px solid #e5e5e5; 1503 | -webkit-transform-origin: 0 0; 1504 | transform-origin: 0 0; 1505 | -webkit-transform: scaleY(.5); 1506 | transform: scaleY(.5) 1507 | } 1508 | 1509 | .weui-panel:after, 1510 | .weui-panel:before { 1511 | content: " "; 1512 | position: absolute; 1513 | left: 0; 1514 | right: 0; 1515 | height: 1px; 1516 | color: #e5e5e5 1517 | } 1518 | 1519 | .weui-panel:after { 1520 | bottom: 0; 1521 | border-bottom: 1px solid #e5e5e5; 1522 | -webkit-transform-origin: 0 100%; 1523 | transform-origin: 0 100%; 1524 | -webkit-transform: scaleY(.5); 1525 | transform: scaleY(.5) 1526 | } 1527 | 1528 | .weui-panel__hd { 1529 | padding: 14px 15px 10px; 1530 | color: #999; 1531 | font-size: 13px; 1532 | position: relative 1533 | } 1534 | 1535 | .weui-panel__hd:after { 1536 | content: " "; 1537 | position: absolute; 1538 | left: 0; 1539 | bottom: 0; 1540 | right: 0; 1541 | height: 1px; 1542 | border-bottom: 1px solid #e5e5e5; 1543 | color: #e5e5e5; 1544 | -webkit-transform-origin: 0 100%; 1545 | transform-origin: 0 100%; 1546 | -webkit-transform: scaleY(.5); 1547 | transform: scaleY(.5); 1548 | left: 15px 1549 | } 1550 | 1551 | .weui-media-box { 1552 | padding: 15px; 1553 | position: relative 1554 | } 1555 | 1556 | .weui-media-box:before { 1557 | content: " "; 1558 | position: absolute; 1559 | left: 0; 1560 | top: 0; 1561 | right: 0; 1562 | height: 1px; 1563 | border-top: 1px solid #e5e5e5; 1564 | color: #e5e5e5; 1565 | -webkit-transform-origin: 0 0; 1566 | transform-origin: 0 0; 1567 | -webkit-transform: scaleY(.5); 1568 | transform: scaleY(.5); 1569 | left: 15px 1570 | } 1571 | 1572 | .weui-media-box:first-child:before { 1573 | display: none 1574 | } 1575 | 1576 | a.weui-media-box { 1577 | color: #000; 1578 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 1579 | } 1580 | 1581 | a.weui-media-box:active { 1582 | background-color: #ececec 1583 | } 1584 | 1585 | .weui-media-box__title { 1586 | font-weight: 400; 1587 | font-size: 17px; 1588 | width: auto; 1589 | overflow: hidden; 1590 | text-overflow: ellipsis; 1591 | white-space: nowrap; 1592 | word-wrap: normal; 1593 | word-wrap: break-word; 1594 | word-break: break-all 1595 | } 1596 | 1597 | .weui-media-box__desc { 1598 | color: #999; 1599 | font-size: 13px; 1600 | line-height: 1.2; 1601 | overflow: hidden; 1602 | text-overflow: ellipsis; 1603 | display: -webkit-box; 1604 | -webkit-box-orient: vertical; 1605 | -webkit-line-clamp: 2 1606 | } 1607 | 1608 | .weui-media-box__info { 1609 | margin-top: 15px; 1610 | padding-bottom: 5px; 1611 | font-size: 13px; 1612 | color: #cecece; 1613 | line-height: 1em; 1614 | list-style: none; 1615 | overflow: hidden 1616 | } 1617 | 1618 | .weui-media-box__info__meta { 1619 | float: left; 1620 | padding-right: 1em 1621 | } 1622 | 1623 | .weui-media-box__info__meta_extra { 1624 | padding-left: 1em; 1625 | border-left: 1px solid #cecece 1626 | } 1627 | 1628 | .weui-media-box_text .weui-media-box__title { 1629 | margin-bottom: 8px 1630 | } 1631 | 1632 | .weui-media-box_appmsg { 1633 | display: -webkit-box; 1634 | display: -webkit-flex; 1635 | display: flex; 1636 | -webkit-box-align: center; 1637 | -webkit-align-items: center; 1638 | align-items: center 1639 | } 1640 | 1641 | .weui-media-box_appmsg .weui-media-box__hd { 1642 | margin-right: .8em; 1643 | width: 60px; 1644 | height: 60px; 1645 | line-height: 60px; 1646 | text-align: center 1647 | } 1648 | 1649 | .weui-media-box_appmsg .weui-media-box__thumb { 1650 | width: 100%; 1651 | max-height: 100%; 1652 | vertical-align: top 1653 | } 1654 | 1655 | .weui-media-box_appmsg .weui-media-box__bd { 1656 | -webkit-box-flex: 1; 1657 | -webkit-flex: 1; 1658 | flex: 1; 1659 | min-width: 0 1660 | } 1661 | 1662 | .weui-media-box_small-appmsg { 1663 | padding: 0 1664 | } 1665 | 1666 | .weui-media-box_small-appmsg .weui-cells { 1667 | margin-top: 0 1668 | } 1669 | 1670 | .weui-media-box_small-appmsg .weui-cells:before { 1671 | display: none 1672 | } 1673 | 1674 | .weui-grids { 1675 | position: relative; 1676 | overflow: hidden 1677 | } 1678 | 1679 | .weui-grids:before { 1680 | right: 0; 1681 | height: 1px; 1682 | border-top: 1px solid #d9d9d9; 1683 | -webkit-transform-origin: 0 0; 1684 | transform-origin: 0 0; 1685 | -webkit-transform: scaleY(.5); 1686 | transform: scaleY(.5) 1687 | } 1688 | 1689 | .weui-grids:after, 1690 | .weui-grids:before { 1691 | content: " "; 1692 | position: absolute; 1693 | left: 0; 1694 | top: 0; 1695 | color: #d9d9d9 1696 | } 1697 | 1698 | .weui-grids:after { 1699 | width: 1px; 1700 | bottom: 0; 1701 | border-left: 1px solid #d9d9d9; 1702 | -webkit-transform-origin: 0 0; 1703 | transform-origin: 0 0; 1704 | -webkit-transform: scaleX(.5); 1705 | transform: scaleX(.5) 1706 | } 1707 | 1708 | .weui-grid { 1709 | position: relative; 1710 | float: left; 1711 | padding: 20px 10px; 1712 | width: 33.33333333%; 1713 | box-sizing: border-box 1714 | } 1715 | 1716 | .weui-grid:before { 1717 | top: 0; 1718 | width: 1px; 1719 | border-right: 1px solid #d9d9d9; 1720 | -webkit-transform-origin: 100% 0; 1721 | transform-origin: 100% 0; 1722 | -webkit-transform: scaleX(.5); 1723 | transform: scaleX(.5) 1724 | } 1725 | 1726 | .weui-grid:after, 1727 | .weui-grid:before { 1728 | content: " "; 1729 | position: absolute; 1730 | right: 0; 1731 | bottom: 0; 1732 | color: #d9d9d9 1733 | } 1734 | 1735 | .weui-grid:after { 1736 | left: 0; 1737 | height: 1px; 1738 | border-bottom: 1px solid #d9d9d9; 1739 | -webkit-transform-origin: 0 100%; 1740 | transform-origin: 0 100%; 1741 | -webkit-transform: scaleY(.5); 1742 | transform: scaleY(.5) 1743 | } 1744 | 1745 | .weui-grid:active { 1746 | background-color: #ececec 1747 | } 1748 | 1749 | .weui-grid__icon { 1750 | width: 28px; 1751 | height: 28px; 1752 | margin: 0 auto 1753 | } 1754 | 1755 | .weui-grid__icon img { 1756 | display: block; 1757 | width: 100%; 1758 | height: 100% 1759 | } 1760 | 1761 | .weui-grid__icon+.weui-grid__label { 1762 | margin-top: 5px 1763 | } 1764 | 1765 | .weui-grid__label { 1766 | display: block; 1767 | color: #000; 1768 | white-space: nowrap; 1769 | text-overflow: ellipsis; 1770 | overflow: hidden 1771 | } 1772 | 1773 | .weui-footer, 1774 | .weui-grid__label { 1775 | text-align: center; 1776 | font-size: 14px 1777 | } 1778 | 1779 | .weui-footer { 1780 | color: #999 1781 | } 1782 | 1783 | .weui-footer a { 1784 | color: #586c94 1785 | } 1786 | 1787 | .weui-footer_fixed-bottom { 1788 | position: fixed; 1789 | bottom: .52em; 1790 | left: 0; 1791 | right: 0 1792 | } 1793 | 1794 | .weui-footer__links { 1795 | font-size: 0 1796 | } 1797 | 1798 | .weui-footer__link { 1799 | display: inline-block; 1800 | vertical-align: top; 1801 | margin: 0 .62em; 1802 | position: relative; 1803 | font-size: 14px 1804 | } 1805 | 1806 | .weui-footer__link:before { 1807 | content: " "; 1808 | position: absolute; 1809 | left: 0; 1810 | top: 0; 1811 | width: 1px; 1812 | bottom: 0; 1813 | border-left: 1px solid #c7c7c7; 1814 | color: #c7c7c7; 1815 | -webkit-transform-origin: 0 0; 1816 | transform-origin: 0 0; 1817 | -webkit-transform: scaleX(.5); 1818 | transform: scaleX(.5); 1819 | left: -.65em; 1820 | top: .36em; 1821 | bottom: .36em 1822 | } 1823 | 1824 | .weui-footer__link:first-child:before { 1825 | display: none 1826 | } 1827 | 1828 | .weui-footer__text { 1829 | padding: 0 .34em; 1830 | font-size: 12px 1831 | } 1832 | 1833 | .weui-flex { 1834 | display: -webkit-box; 1835 | display: -webkit-flex; 1836 | display: flex 1837 | } 1838 | 1839 | .weui-flex__item { 1840 | -webkit-box-flex: 1; 1841 | -webkit-flex: 1; 1842 | flex: 1 1843 | } 1844 | 1845 | .weui-dialog { 1846 | position: fixed; 1847 | z-index: 5000; 1848 | width: 80%; 1849 | max-width: 300px; 1850 | top: 50%; 1851 | left: 50%; 1852 | -webkit-transform: translate(-50%, -50%); 1853 | transform: translate(-50%, -50%); 1854 | background-color: #fff; 1855 | text-align: center; 1856 | border-radius: 3px; 1857 | overflow: hidden 1858 | } 1859 | 1860 | .weui-dialog__hd { 1861 | padding: 1.3em 1.6em .5em 1862 | } 1863 | 1864 | .weui-dialog__title { 1865 | font-weight: 400; 1866 | font-size: 18px 1867 | } 1868 | 1869 | .weui-dialog__bd { 1870 | padding: 0 1.6em .8em; 1871 | min-height: 40px; 1872 | font-size: 15px; 1873 | line-height: 1.3; 1874 | word-wrap: break-word; 1875 | word-break: break-all; 1876 | color: #999 1877 | } 1878 | 1879 | .weui-dialog__bd:first-child { 1880 | padding: 2.7em 20px 1.7em; 1881 | color: #353535 1882 | } 1883 | 1884 | .weui-dialog__ft { 1885 | position: relative; 1886 | line-height: 48px; 1887 | font-size: 18px; 1888 | display: -webkit-box; 1889 | display: -webkit-flex; 1890 | display: flex 1891 | } 1892 | 1893 | .weui-dialog__ft:after { 1894 | content: " "; 1895 | position: absolute; 1896 | left: 0; 1897 | top: 0; 1898 | right: 0; 1899 | height: 1px; 1900 | border-top: 1px solid #d5d5d6; 1901 | color: #d5d5d6; 1902 | -webkit-transform-origin: 0 0; 1903 | transform-origin: 0 0; 1904 | -webkit-transform: scaleY(.5); 1905 | transform: scaleY(.5) 1906 | } 1907 | 1908 | .weui-dialog__btn { 1909 | display: block; 1910 | -webkit-box-flex: 1; 1911 | -webkit-flex: 1; 1912 | flex: 1; 1913 | color: #3cc51f; 1914 | text-decoration: none; 1915 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 1916 | position: relative 1917 | } 1918 | 1919 | .weui-dialog__btn:active { 1920 | background-color: #eee 1921 | } 1922 | 1923 | .weui-dialog__btn:after { 1924 | content: " "; 1925 | position: absolute; 1926 | left: 0; 1927 | top: 0; 1928 | width: 1px; 1929 | bottom: 0; 1930 | border-left: 1px solid #d5d5d6; 1931 | color: #d5d5d6; 1932 | -webkit-transform-origin: 0 0; 1933 | transform-origin: 0 0; 1934 | -webkit-transform: scaleX(.5); 1935 | transform: scaleX(.5) 1936 | } 1937 | 1938 | .weui-dialog__btn:first-child:after { 1939 | display: none 1940 | } 1941 | 1942 | .weui-dialog__btn_default { 1943 | color: #353535 1944 | } 1945 | 1946 | .weui-dialog__btn_primary { 1947 | color: #0bb20c 1948 | } 1949 | 1950 | .weui-skin_android .weui-dialog { 1951 | text-align: left; 1952 | box-shadow: 0 6px 30px 0 rgba(0, 0, 0, .1) 1953 | } 1954 | 1955 | .weui-skin_android .weui-dialog__title { 1956 | font-size: 21px 1957 | } 1958 | 1959 | .weui-skin_android .weui-dialog__hd { 1960 | text-align: left 1961 | } 1962 | 1963 | .weui-skin_android .weui-dialog__bd { 1964 | color: #999; 1965 | padding: .25em 1.6em 2em; 1966 | font-size: 17px; 1967 | text-align: left 1968 | } 1969 | 1970 | .weui-skin_android .weui-dialog__bd:first-child { 1971 | padding: 1.6em 1.6em 2em; 1972 | color: #353535 1973 | } 1974 | 1975 | .weui-skin_android .weui-dialog__ft { 1976 | display: block; 1977 | text-align: right; 1978 | line-height: 42px; 1979 | font-size: 16px; 1980 | padding: 0 1.6em .7em 1981 | } 1982 | 1983 | .weui-skin_android .weui-dialog__ft:after { 1984 | display: none 1985 | } 1986 | 1987 | .weui-skin_android .weui-dialog__btn { 1988 | display: inline-block; 1989 | vertical-align: top; 1990 | padding: 0 .8em 1991 | } 1992 | 1993 | .weui-skin_android .weui-dialog__btn:after { 1994 | display: none 1995 | } 1996 | 1997 | .weui-skin_android .weui-dialog__btn:active, 1998 | .weui-skin_android .weui-dialog__btn:visited { 1999 | background-color: rgba(0, 0, 0, .06) 2000 | } 2001 | 2002 | .weui-skin_android .weui-dialog__btn:last-child { 2003 | margin-right: -.8em 2004 | } 2005 | 2006 | .weui-skin_android .weui-dialog__btn_default { 2007 | color: gray 2008 | } 2009 | 2010 | @media screen and (min-width:1024px) { 2011 | .weui-dialog { 2012 | width: 35% 2013 | } 2014 | } 2015 | 2016 | .weui-toast { 2017 | position: fixed; 2018 | z-index: 5000; 2019 | width: 7.6em; 2020 | min-height: 7.6em; 2021 | top: 180px; 2022 | left: 50%; 2023 | margin-left: -3.8em; 2024 | background: hsla(0, 0%, 7%, .7); 2025 | text-align: center; 2026 | border-radius: 5px; 2027 | color: #fff 2028 | } 2029 | 2030 | .weui-icon_toast { 2031 | margin: 22px 0 0; 2032 | display: block 2033 | } 2034 | 2035 | .weui-icon_toast.weui-icon-success-no-circle:before { 2036 | color: #fff; 2037 | font-size: 55px 2038 | } 2039 | 2040 | .weui-icon_toast.weui-loading { 2041 | margin: 30px 0 0; 2042 | width: 38px; 2043 | height: 38px; 2044 | vertical-align: baseline 2045 | } 2046 | 2047 | .weui-toast__content { 2048 | margin: 0 0 15px 2049 | } 2050 | 2051 | .weui-mask { 2052 | background: rgba(0, 0, 0, .6) 2053 | } 2054 | 2055 | .weui-mask, 2056 | .weui-mask_transparent { 2057 | position: fixed; 2058 | z-index: 1000; 2059 | top: 0; 2060 | right: 0; 2061 | left: 0; 2062 | bottom: 0 2063 | } 2064 | 2065 | .weui-actionsheet { 2066 | position: fixed; 2067 | left: 0; 2068 | bottom: 0; 2069 | -webkit-transform: translateY(100%); 2070 | transform: translateY(100%); 2071 | -webkit-backface-visibility: hidden; 2072 | backface-visibility: hidden; 2073 | z-index: 5000; 2074 | width: 100%; 2075 | background-color: #efeff4; 2076 | -webkit-transition: -webkit-transform .3s; 2077 | transition: -webkit-transform .3s; 2078 | transition: transform .3s; 2079 | transition: transform .3s, -webkit-transform .3s 2080 | } 2081 | 2082 | .weui-actionsheet__menu { 2083 | background-color: #fff 2084 | } 2085 | 2086 | .weui-actionsheet__action { 2087 | margin-top: 6px; 2088 | background-color: #fff 2089 | } 2090 | 2091 | .weui-actionsheet__cell { 2092 | position: relative; 2093 | padding: 10px 0; 2094 | text-align: center; 2095 | font-size: 18px 2096 | } 2097 | 2098 | .weui-actionsheet__cell:before { 2099 | content: " "; 2100 | position: absolute; 2101 | left: 0; 2102 | top: 0; 2103 | right: 0; 2104 | height: 1px; 2105 | border-top: 1px solid #d9d9d9; 2106 | color: #d9d9d9; 2107 | -webkit-transform-origin: 0 0; 2108 | transform-origin: 0 0; 2109 | -webkit-transform: scaleY(.5); 2110 | transform: scaleY(.5) 2111 | } 2112 | 2113 | .weui-actionsheet__cell:active { 2114 | background-color: #ececec 2115 | } 2116 | 2117 | .weui-actionsheet__cell:first-child:before { 2118 | display: none 2119 | } 2120 | 2121 | .weui-skin_android .weui-actionsheet { 2122 | position: fixed; 2123 | left: 50%; 2124 | top: 50%; 2125 | bottom: auto; 2126 | -webkit-transform: translate(-50%, -50%); 2127 | transform: translate(-50%, -50%); 2128 | width: 274px; 2129 | box-sizing: border-box; 2130 | -webkit-backface-visibility: hidden; 2131 | backface-visibility: hidden; 2132 | background: transparent; 2133 | -webkit-transition: -webkit-transform .3s; 2134 | transition: -webkit-transform .3s; 2135 | transition: transform .3s; 2136 | transition: transform .3s, -webkit-transform .3s 2137 | } 2138 | 2139 | .weui-skin_android .weui-actionsheet__action { 2140 | display: none 2141 | } 2142 | 2143 | .weui-skin_android .weui-actionsheet__menu { 2144 | border-radius: 2px; 2145 | box-shadow: 0 6px 30px 0 rgba(0, 0, 0, .1) 2146 | } 2147 | 2148 | .weui-skin_android .weui-actionsheet__cell { 2149 | padding: 13px 24px; 2150 | font-size: 16px; 2151 | line-height: 1.4; 2152 | text-align: left 2153 | } 2154 | 2155 | .weui-skin_android .weui-actionsheet__cell:first-child { 2156 | border-top-left-radius: 2px; 2157 | border-top-right-radius: 2px 2158 | } 2159 | 2160 | .weui-skin_android .weui-actionsheet__cell:last-child { 2161 | border-bottom-left-radius: 2px; 2162 | border-bottom-right-radius: 2px 2163 | } 2164 | 2165 | .weui-actionsheet_toggle { 2166 | -webkit-transform: translate(0); 2167 | transform: translate(0) 2168 | } 2169 | 2170 | .weui-loadmore { 2171 | width: 65%; 2172 | margin: 1.5em auto; 2173 | line-height: 1.6em; 2174 | font-size: 14px; 2175 | text-align: center 2176 | } 2177 | 2178 | .weui-loadmore__tips { 2179 | display: inline-block; 2180 | vertical-align: middle 2181 | } 2182 | 2183 | .weui-loadmore_line { 2184 | border-top: 1px solid #e5e5e5; 2185 | margin-top: 2.4em 2186 | } 2187 | 2188 | .weui-loadmore_line .weui-loadmore__tips { 2189 | position: relative; 2190 | top: -.9em; 2191 | padding: 0 .55em; 2192 | background-color: #fff; 2193 | color: #999 2194 | } 2195 | 2196 | .weui-loadmore_dot .weui-loadmore__tips { 2197 | padding: 0 .16em 2198 | } 2199 | 2200 | .weui-loadmore_dot .weui-loadmore__tips:before { 2201 | content: " "; 2202 | width: 4px; 2203 | height: 4px; 2204 | border-radius: 50%; 2205 | background-color: #e5e5e5; 2206 | display: inline-block; 2207 | position: relative; 2208 | vertical-align: 0; 2209 | top: -.16em 2210 | } 2211 | 2212 | .weui-badge { 2213 | display: inline-block; 2214 | padding: .15em .4em; 2215 | min-width: 8px; 2216 | border-radius: 18px; 2217 | background-color: #f43530; 2218 | color: #fff; 2219 | line-height: 1.2; 2220 | text-align: center; 2221 | font-size: 12px; 2222 | vertical-align: middle 2223 | } 2224 | 2225 | .weui-badge_dot { 2226 | padding: .4em; 2227 | min-width: 0 2228 | } 2229 | 2230 | .weui-search-bar { 2231 | position: relative; 2232 | padding: 8px 10px; 2233 | display: -webkit-box; 2234 | display: -webkit-flex; 2235 | display: flex; 2236 | box-sizing: border-box; 2237 | background-color: #efeff4 2238 | } 2239 | 2240 | .weui-search-bar:before { 2241 | top: 0; 2242 | border-top: 1px solid #d7d6dc; 2243 | -webkit-transform-origin: 0 0; 2244 | transform-origin: 0 0; 2245 | -webkit-transform: scaleY(.5); 2246 | transform: scaleY(.5) 2247 | } 2248 | 2249 | .weui-search-bar:after, 2250 | .weui-search-bar:before { 2251 | content: " "; 2252 | position: absolute; 2253 | left: 0; 2254 | right: 0; 2255 | height: 1px; 2256 | color: #d7d6dc 2257 | } 2258 | 2259 | .weui-search-bar:after { 2260 | bottom: 0; 2261 | border-bottom: 1px solid #d7d6dc; 2262 | -webkit-transform-origin: 0 100%; 2263 | transform-origin: 0 100%; 2264 | -webkit-transform: scaleY(.5); 2265 | transform: scaleY(.5) 2266 | } 2267 | 2268 | .weui-search-bar.weui-search-bar_focusing .weui-search-bar__cancel-btn { 2269 | display: block 2270 | } 2271 | 2272 | .weui-search-bar.weui-search-bar_focusing .weui-search-bar__label { 2273 | display: none 2274 | } 2275 | 2276 | .weui-search-bar__form { 2277 | position: relative; 2278 | -webkit-box-flex: 1; 2279 | -webkit-flex: auto; 2280 | flex: auto; 2281 | background-color: #efeff4 2282 | } 2283 | 2284 | .weui-search-bar__form:after { 2285 | content: ""; 2286 | position: absolute; 2287 | left: 0; 2288 | top: 0; 2289 | width: 200%; 2290 | height: 200%; 2291 | -webkit-transform: scale(.5); 2292 | transform: scale(.5); 2293 | -webkit-transform-origin: 0 0; 2294 | transform-origin: 0 0; 2295 | border-radius: 10px; 2296 | border: 1px solid #e6e6ea; 2297 | box-sizing: border-box; 2298 | background: #fff 2299 | } 2300 | 2301 | .weui-search-bar__box { 2302 | position: relative; 2303 | padding-left: 30px; 2304 | padding-right: 30px; 2305 | height: 100%; 2306 | width: 100%; 2307 | box-sizing: border-box; 2308 | z-index: 1 2309 | } 2310 | 2311 | .weui-search-bar__box .weui-search-bar__input { 2312 | padding: 4px 0; 2313 | width: 100%; 2314 | height: 1.42857143em; 2315 | border: 0; 2316 | font-size: 14px; 2317 | line-height: 1.42857143em; 2318 | box-sizing: content-box; 2319 | background: transparent 2320 | } 2321 | 2322 | .weui-search-bar__box .weui-search-bar__input:focus { 2323 | outline: none 2324 | } 2325 | 2326 | .weui-search-bar__box .weui-icon-search { 2327 | position: absolute; 2328 | left: 10px; 2329 | top: 0; 2330 | line-height: 28px 2331 | } 2332 | 2333 | .weui-search-bar__box .weui-icon-clear { 2334 | position: absolute; 2335 | top: 0; 2336 | right: 0; 2337 | padding: 0 10px; 2338 | line-height: 28px 2339 | } 2340 | 2341 | .weui-search-bar__label { 2342 | position: absolute; 2343 | top: 1px; 2344 | right: 1px; 2345 | bottom: 1px; 2346 | left: 1px; 2347 | z-index: 2; 2348 | border-radius: 3px; 2349 | text-align: center; 2350 | color: #9b9b9b; 2351 | background: #fff 2352 | } 2353 | 2354 | .weui-search-bar__label span { 2355 | display: inline-block; 2356 | font-size: 14px; 2357 | vertical-align: middle 2358 | } 2359 | 2360 | .weui-search-bar__label .weui-icon-search { 2361 | margin-right: 5px 2362 | } 2363 | 2364 | .weui-search-bar__cancel-btn { 2365 | display: none; 2366 | margin-left: 10px; 2367 | line-height: 28px; 2368 | color: #09bb07; 2369 | white-space: nowrap 2370 | } 2371 | 2372 | .weui-search-bar__input:not(:valid)~.weui-icon-clear { 2373 | display: none 2374 | } 2375 | 2376 | input[type=search]::-webkit-search-cancel-button, 2377 | input[type=search]::-webkit-search-decoration, 2378 | input[type=search]::-webkit-search-results-button, 2379 | input[type=search]::-webkit-search-results-decoration { 2380 | display: none 2381 | } 2382 | 2383 | .weui-picker { 2384 | position: fixed; 2385 | width: 100%; 2386 | left: 0; 2387 | bottom: 0; 2388 | z-index: 5000; 2389 | -webkit-backface-visibility: hidden; 2390 | backface-visibility: hidden; 2391 | -webkit-transform: translateY(100%); 2392 | transform: translateY(100%); 2393 | -webkit-transition: -webkit-transform .3s; 2394 | transition: -webkit-transform .3s; 2395 | transition: transform .3s; 2396 | transition: transform .3s, -webkit-transform .3s 2397 | } 2398 | 2399 | .weui-picker__hd { 2400 | display: -webkit-box; 2401 | display: -webkit-flex; 2402 | display: flex; 2403 | padding: 10px 15px; 2404 | background-color: #fbf9fe; 2405 | position: relative; 2406 | text-align: center 2407 | } 2408 | 2409 | .weui-picker__hd:after { 2410 | content: " "; 2411 | position: absolute; 2412 | left: 0; 2413 | bottom: 0; 2414 | right: 0; 2415 | height: 1px; 2416 | border-bottom: 1px solid #e5e5e5; 2417 | color: #e5e5e5; 2418 | -webkit-transform-origin: 0 100%; 2419 | transform-origin: 0 100%; 2420 | -webkit-transform: scaleY(.5); 2421 | transform: scaleY(.5) 2422 | } 2423 | 2424 | .weui-picker__action { 2425 | display: block; 2426 | -webkit-box-flex: 1; 2427 | -webkit-flex: 1; 2428 | flex: 1; 2429 | color: #586c94 2430 | } 2431 | 2432 | .weui-picker__action:first-child { 2433 | text-align: left 2434 | } 2435 | 2436 | .weui-picker__action:last-child { 2437 | text-align: right 2438 | } 2439 | 2440 | .weui-picker__bd { 2441 | display: -webkit-box; 2442 | display: -webkit-flex; 2443 | display: flex; 2444 | position: relative; 2445 | background-color: #fff; 2446 | height: 238px; 2447 | overflow: hidden 2448 | } 2449 | 2450 | .weui-picker__group { 2451 | -webkit-box-flex: 1; 2452 | -webkit-flex: 1; 2453 | flex: 1; 2454 | position: relative; 2455 | height: 100% 2456 | } 2457 | 2458 | .weui-picker__mask { 2459 | top: 0; 2460 | height: 100%; 2461 | margin: 0 auto; 2462 | background: -webkit-linear-gradient(top, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)), -webkit-linear-gradient(bottom, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)); 2463 | background: linear-gradient(180deg, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)), linear-gradient(0deg, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)); 2464 | background-position: top, bottom; 2465 | background-size: 100% 102px; 2466 | background-repeat: no-repeat; 2467 | -webkit-transform: translateZ(0); 2468 | transform: translateZ(0) 2469 | } 2470 | 2471 | .weui-picker__indicator, 2472 | .weui-picker__mask { 2473 | position: absolute; 2474 | left: 0; 2475 | width: 100%; 2476 | z-index: 3 2477 | } 2478 | 2479 | .weui-picker__indicator { 2480 | height: 34px; 2481 | top: 102px 2482 | } 2483 | 2484 | .weui-picker__indicator:before { 2485 | top: 0; 2486 | border-top: 1px solid #e5e5e5; 2487 | -webkit-transform-origin: 0 0; 2488 | transform-origin: 0 0; 2489 | -webkit-transform: scaleY(.5); 2490 | transform: scaleY(.5) 2491 | } 2492 | 2493 | .weui-picker__indicator:after, 2494 | .weui-picker__indicator:before { 2495 | content: " "; 2496 | position: absolute; 2497 | left: 0; 2498 | right: 0; 2499 | height: 1px; 2500 | color: #e5e5e5 2501 | } 2502 | 2503 | .weui-picker__indicator:after { 2504 | bottom: 0; 2505 | border-bottom: 1px solid #e5e5e5; 2506 | -webkit-transform-origin: 0 100%; 2507 | transform-origin: 0 100%; 2508 | -webkit-transform: scaleY(.5); 2509 | transform: scaleY(.5) 2510 | } 2511 | 2512 | .weui-picker__content { 2513 | position: absolute; 2514 | top: 0; 2515 | left: 0; 2516 | width: 100% 2517 | } 2518 | 2519 | .weui-picker__item { 2520 | padding: 5px 0 4px; 2521 | text-align: center; 2522 | color: #000; 2523 | text-overflow: ellipsis; 2524 | white-space: nowrap; 2525 | overflow: hidden 2526 | } 2527 | 2528 | .weui-picker__item_disabled { 2529 | color: #999 2530 | } 2531 | 2532 | @-webkit-keyframes a { 2533 | 0% { 2534 | -webkit-transform: translate3d(0, 100%, 0); 2535 | transform: translate3d(0, 100%, 0) 2536 | } 2537 | to { 2538 | -webkit-transform: translateZ(0); 2539 | transform: translateZ(0) 2540 | } 2541 | } 2542 | 2543 | @keyframes a { 2544 | 0% { 2545 | -webkit-transform: translate3d(0, 100%, 0); 2546 | transform: translate3d(0, 100%, 0) 2547 | } 2548 | to { 2549 | -webkit-transform: translateZ(0); 2550 | transform: translateZ(0) 2551 | } 2552 | } 2553 | 2554 | .weui-animate-slide-up { 2555 | -webkit-animation: a ease .3s forwards; 2556 | animation: a ease .3s forwards 2557 | } 2558 | 2559 | @-webkit-keyframes b { 2560 | 0% { 2561 | -webkit-transform: translateZ(0); 2562 | transform: translateZ(0) 2563 | } 2564 | to { 2565 | -webkit-transform: translate3d(0, 100%, 0); 2566 | transform: translate3d(0, 100%, 0) 2567 | } 2568 | } 2569 | 2570 | @keyframes b { 2571 | 0% { 2572 | -webkit-transform: translateZ(0); 2573 | transform: translateZ(0) 2574 | } 2575 | to { 2576 | -webkit-transform: translate3d(0, 100%, 0); 2577 | transform: translate3d(0, 100%, 0) 2578 | } 2579 | } 2580 | 2581 | .weui-animate-slide-down { 2582 | -webkit-animation: b ease .3s forwards; 2583 | animation: b ease .3s forwards 2584 | } 2585 | 2586 | @-webkit-keyframes c { 2587 | 0% { 2588 | opacity: 0 2589 | } 2590 | to { 2591 | opacity: 1 2592 | } 2593 | } 2594 | 2595 | @keyframes c { 2596 | 0% { 2597 | opacity: 0 2598 | } 2599 | to { 2600 | opacity: 1 2601 | } 2602 | } 2603 | 2604 | .weui-animate-fade-in { 2605 | -webkit-animation: c ease .3s forwards; 2606 | animation: c ease .3s forwards 2607 | } 2608 | 2609 | @-webkit-keyframes d { 2610 | 0% { 2611 | opacity: 1 2612 | } 2613 | to { 2614 | opacity: 0 2615 | } 2616 | } 2617 | 2618 | @keyframes d { 2619 | 0% { 2620 | opacity: 1 2621 | } 2622 | to { 2623 | opacity: 0 2624 | } 2625 | } 2626 | 2627 | .weui-animate-fade-out { 2628 | -webkit-animation: d ease .3s forwards; 2629 | animation: d ease .3s forwards 2630 | } 2631 | 2632 | .weui-agree { 2633 | display: block; 2634 | padding: .5em 15px; 2635 | font-size: 13px 2636 | } 2637 | 2638 | .weui-agree a { 2639 | color: #586c94 2640 | } 2641 | 2642 | .weui-agree__text { 2643 | color: #999 2644 | } 2645 | 2646 | .weui-agree__checkbox { 2647 | -webkit-appearance: none; 2648 | appearance: none; 2649 | outline: 0; 2650 | font-size: 0; 2651 | border: 1px solid #d1d1d1; 2652 | background-color: #fff; 2653 | border-radius: 3px; 2654 | width: 13px; 2655 | height: 13px; 2656 | position: relative; 2657 | vertical-align: 0; 2658 | top: 2px 2659 | } 2660 | 2661 | .weui-agree__checkbox:checked:before { 2662 | font-family: weui; 2663 | font-style: normal; 2664 | font-weight: 400; 2665 | font-variant: normal; 2666 | text-transform: none; 2667 | text-align: center; 2668 | speak: none; 2669 | display: inline-block; 2670 | vertical-align: middle; 2671 | text-decoration: inherit; 2672 | content: "\EA08"; 2673 | color: #09bb07; 2674 | font-size: 13px; 2675 | position: absolute; 2676 | top: 50%; 2677 | left: 50%; 2678 | -webkit-transform: translate(-50%, -48%) scale(.73); 2679 | transform: translate(-50%, -48%) scale(.73) 2680 | } 2681 | 2682 | .weui-agree__checkbox:disabled { 2683 | background-color: #e1e1e1 2684 | } 2685 | 2686 | .weui-agree__checkbox:disabled:before { 2687 | color: #adadad 2688 | } 2689 | 2690 | .weui-loading { 2691 | width: 20px; 2692 | height: 20px; 2693 | display: inline-block; 2694 | vertical-align: middle; 2695 | -webkit-animation: e 1s steps(12) infinite; 2696 | animation: e 1s steps(12) infinite; 2697 | background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat; 2698 | background-size: 100% 2699 | } 2700 | 2701 | .weui-loading.weui-loading_transparent { 2702 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") 2703 | } 2704 | 2705 | @-webkit-keyframes e { 2706 | 0% { 2707 | -webkit-transform: rotate(0deg); 2708 | transform: rotate(0deg) 2709 | } 2710 | to { 2711 | -webkit-transform: rotate(1turn); 2712 | transform: rotate(1turn) 2713 | } 2714 | } 2715 | 2716 | @keyframes e { 2717 | 0% { 2718 | -webkit-transform: rotate(0deg); 2719 | transform: rotate(0deg) 2720 | } 2721 | to { 2722 | -webkit-transform: rotate(1turn); 2723 | transform: rotate(1turn) 2724 | } 2725 | } 2726 | 2727 | .weui-slider { 2728 | padding: 15px 18px; 2729 | -webkit-user-select: none; 2730 | user-select: none 2731 | } 2732 | 2733 | .weui-slider__inner { 2734 | position: relative; 2735 | height: 2px; 2736 | background-color: #e9e9e9 2737 | } 2738 | 2739 | .weui-slider__track { 2740 | height: 2px; 2741 | background-color: #1aad19; 2742 | width: 0 2743 | } 2744 | 2745 | .weui-slider__handler { 2746 | position: absolute; 2747 | left: 0; 2748 | top: 50%; 2749 | width: 28px; 2750 | height: 28px; 2751 | margin-left: -14px; 2752 | margin-top: -14px; 2753 | border-radius: 50%; 2754 | background-color: #fff; 2755 | box-shadow: 0 0 4px rgba(0, 0, 0, .2) 2756 | } 2757 | 2758 | .weui-slider-box { 2759 | display: -webkit-box; 2760 | display: -webkit-flex; 2761 | display: flex; 2762 | -webkit-box-align: center; 2763 | -webkit-align-items: center; 2764 | align-items: center 2765 | } 2766 | 2767 | .weui-slider-box .weui-slider { 2768 | -webkit-box-flex: 1; 2769 | -webkit-flex: 1; 2770 | flex: 1 2771 | } 2772 | 2773 | .weui-slider-box__value { 2774 | margin-left: .5em; 2775 | min-width: 24px; 2776 | color: #888; 2777 | text-align: center; 2778 | font-size: 14px 2779 | } -------------------------------------------------------------------------------- /src/assets/image/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/book.png -------------------------------------------------------------------------------- /src/assets/image/chat-info-qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/chat-info-qr.png -------------------------------------------------------------------------------- /src/assets/image/contact_add-friend-addgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_add-friend-addgroup.png -------------------------------------------------------------------------------- /src/assets/image/contact_add-friend-contacts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_add-friend-contacts.png -------------------------------------------------------------------------------- /src/assets/image/contact_add-friend-my-qr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_add-friend-my-qr.png -------------------------------------------------------------------------------- /src/assets/image/contact_add-friend-offical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_add-friend-offical.png -------------------------------------------------------------------------------- /src/assets/image/contact_add-friend-reda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_add-friend-reda.png -------------------------------------------------------------------------------- /src/assets/image/contact_add-friend-scanqr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_add-friend-scanqr.png -------------------------------------------------------------------------------- /src/assets/image/contact_female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_female.png -------------------------------------------------------------------------------- /src/assets/image/contact_male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_male.png -------------------------------------------------------------------------------- /src/assets/image/contact_top-addgroup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_top-addgroup.png -------------------------------------------------------------------------------- /src/assets/image/contact_top-friend-notify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_top-friend-notify.png -------------------------------------------------------------------------------- /src/assets/image/contact_top-offical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_top-offical.png -------------------------------------------------------------------------------- /src/assets/image/contact_top-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/contact_top-tag.png -------------------------------------------------------------------------------- /src/assets/image/find-album-reflash-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find-album-reflash-icon.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-bottle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-bottle.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-circle.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-locationservice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-locationservice.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-moregame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-moregame.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-qrcode.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-shake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-shake.png -------------------------------------------------------------------------------- /src/assets/image/find_icon-shopping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/find_icon-shopping.png -------------------------------------------------------------------------------- /src/assets/image/me_more-expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/me_more-expression.png -------------------------------------------------------------------------------- /src/assets/image/me_more-my-album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/me_more-my-album.png -------------------------------------------------------------------------------- /src/assets/image/me_more-my-bank-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/me_more-my-bank-card.png -------------------------------------------------------------------------------- /src/assets/image/me_more-my-favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/me_more-my-favorites.png -------------------------------------------------------------------------------- /src/assets/image/me_more-setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/me_more-setting.png -------------------------------------------------------------------------------- /src/assets/image/me_my-card-package-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/me_my-card-package-icon.png -------------------------------------------------------------------------------- /src/assets/image/mht.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/mht.jpg -------------------------------------------------------------------------------- /src/assets/image/mybackground.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/mybackground.jpg -------------------------------------------------------------------------------- /src/assets/image/myqr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/myqr.png -------------------------------------------------------------------------------- /src/assets/image/rico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/rico.png -------------------------------------------------------------------------------- /src/assets/image/rzf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/rzf.jpg -------------------------------------------------------------------------------- /src/assets/image/timg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/timg.png -------------------------------------------------------------------------------- /src/assets/image/tyx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/tyx.jpg -------------------------------------------------------------------------------- /src/assets/image/yyx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/yyx.jpg -------------------------------------------------------------------------------- /src/assets/image/zxl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/src/assets/image/zxl.jpg -------------------------------------------------------------------------------- /src/components/common/vfooter.vue: -------------------------------------------------------------------------------- 1 | 23 | 28 | -------------------------------------------------------------------------------- /src/components/common/vheader.vue: -------------------------------------------------------------------------------- 1 | 6 | 9 | 23 | -------------------------------------------------------------------------------- /src/components/common/vsearch.vue: -------------------------------------------------------------------------------- 1 | 8 | 11 | 38 | -------------------------------------------------------------------------------- /src/components/pages/albums.vue: -------------------------------------------------------------------------------- 1 | 35 | 60 | -------------------------------------------------------------------------------- /src/components/pages/chatview.vue: -------------------------------------------------------------------------------- 1 | 28 | 52 | 166 | -------------------------------------------------------------------------------- /src/components/pages/details.vue: -------------------------------------------------------------------------------- 1 | 63 | 89 | -------------------------------------------------------------------------------- /src/components/pages/moments.vue: -------------------------------------------------------------------------------- 1 | 28 | 47 | -------------------------------------------------------------------------------- /src/components/pages/myprofile.vue: -------------------------------------------------------------------------------- 1 | 72 | 81 | -------------------------------------------------------------------------------- /src/components/pages/myqr.vue: -------------------------------------------------------------------------------- 1 | 13 | 22 | -------------------------------------------------------------------------------- /src/components/pages/personalheader.vue: -------------------------------------------------------------------------------- 1 | 11 | 20 | -------------------------------------------------------------------------------- /src/components/pages/photo.vue: -------------------------------------------------------------------------------- 1 | 20 | 48 | 100 | -------------------------------------------------------------------------------- /src/components/pages/settings.vue: -------------------------------------------------------------------------------- 1 | 61 | 70 | -------------------------------------------------------------------------------- /src/components/vcontact.vue: -------------------------------------------------------------------------------- 1 | 53 | 67 | -------------------------------------------------------------------------------- /src/components/vdialogue.vue: -------------------------------------------------------------------------------- 1 | 47 | 68 | -------------------------------------------------------------------------------- /src/components/vexplore.vue: -------------------------------------------------------------------------------- 1 | 87 | 91 | -------------------------------------------------------------------------------- /src/components/vme.vue: -------------------------------------------------------------------------------- 1 | 79 | 83 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import router from './router' 6 | import store from './vuex/store.js' 7 | import axios from 'axios' 8 | 9 | Vue.prototype.$http = axios; 10 | Vue.config.productionTip = false; 11 | // Vue.use(axios); 12 | /* eslint-disable no-new */ 13 | new Vue({ 14 | el: '#app', 15 | router, 16 | store, 17 | components: { App }, 18 | template: '' 19 | }) 20 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Router from 'vue-router'; 3 | import vcontact from '../components/vcontact.vue'; 4 | import vexplore from '../components/vexplore.vue'; 5 | import vdialogue from '../components/vdialogue.vue'; 6 | import vme from '../components/vme.vue'; 7 | import myprofile from'../components/pages/myprofile.vue'; 8 | import personalheader from '../components/pages/personalheader.vue'; 9 | import myqr from '../components/pages/myqr.vue'; 10 | import settings from '../components/pages/settings.vue'; 11 | import details from '../components/pages/details.vue'; 12 | import moments from '../components/pages/moments.vue'; 13 | import albums from '../components/pages/albums.vue'; 14 | import photo from '../components/pages/photo.vue'; 15 | import chatview from '../components/pages/chatview.vue'; 16 | 17 | Vue.use(Router) 18 | 19 | export default new Router({ 20 | routes: [ 21 | { 22 | path: '/vcontact', 23 | component: vcontact, 24 | meta:{ 25 | title:'联系人' 26 | } 27 | }, 28 | { 29 | path: '/vexplore', 30 | component: vexplore, 31 | meta:{ 32 | title:'发现' 33 | } 34 | }, 35 | { 36 | path: '/', 37 | component: vdialogue, 38 | meta:{ 39 | title:'微信' 40 | } 41 | }, 42 | { 43 | path: '/vdialogue', 44 | component: vdialogue, 45 | meta:{ 46 | title:'微信' 47 | } 48 | }, 49 | { 50 | path: '/vme', 51 | component: vme, 52 | meta:{ 53 | title:'我' 54 | } 55 | }, 56 | { 57 | path: '/myprofile', 58 | component: myprofile, 59 | meta:{ 60 | title:'个人信息' 61 | } 62 | }, 63 | { 64 | path: '/personalheader', 65 | component: personalheader, 66 | meta:{ 67 | title:'个人头像' 68 | } 69 | }, 70 | { 71 | path: '/myqr', 72 | component: myqr, 73 | meta:{ 74 | title:'我的二维码' 75 | } 76 | }, 77 | { 78 | path: '/settings', 79 | component: settings, 80 | meta:{ 81 | title:'设置' 82 | } 83 | }, 84 | { 85 | path: '/details', 86 | component: details, 87 | meta:{ 88 | title:'详细资料' 89 | } 90 | }, 91 | { 92 | path: '/moments', 93 | component: moments, 94 | meta:{ 95 | title:'朋友圈' 96 | } 97 | }, 98 | { 99 | path: '/albums', 100 | component: albums, 101 | meta:{ 102 | title:'相册' 103 | } 104 | }, 105 | { 106 | path: '/photo', 107 | component: photo, 108 | meta:{ 109 | title:'照片' 110 | } 111 | }, 112 | { 113 | path: '/chatview', 114 | component: chatview, 115 | meta:{ 116 | title:'' 117 | } 118 | } 119 | ] 120 | }) 121 | -------------------------------------------------------------------------------- /src/vuex/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import vuex from 'vuex' 3 | 4 | Vue.use(vuex); 5 | 6 | export default new vuex.Store({ 7 | 8 | }) -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rico-c/vue-wechat/86dc18c6fbd2b6e6a1136f192d7bc3c5e6fb33e2/static/.gitkeep -------------------------------------------------------------------------------- /static/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "contacts": [ 3 | { 4 | "name": "尤雨溪", 5 | "id": "EvanYou", 6 | "num":0, 7 | "chatnum":0, 8 | "sex": 1, 9 | "region": "美国", 10 | "headerimg": "https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg", 11 | "momentsimg": [ 12 | { 13 | "id": "EvanYou", 14 | "num":0, 15 | "time": 1, 16 | "content":"Vue 的核心库只关注视图层", 17 | "imgs": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523213064737&di=b4f2be5d7a7a3b260b11eab7fd69cf79&imgtype=0&src=http%3A%2F%2Fwww.xz7.com%2Fup%2F2017-7%2F201771392324.png" 18 | },{ 19 | "id": "EvanYou", 20 | "num":1, 21 | "time": 4, 22 | "content":"Vue 也完全能够为复杂的单页应用提供驱动", 23 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523213128186&di=b19afbbf938e1057437a0e5719fb9f4a&imgtype=0&src=http%3A%2F%2Fs1.51cto.com%2Fwyfs02%2FM02%2F8A%2FA1%2FwKiom1g1d4KzJLj_AAENEPluz5E910.jpg-wh_651x-s_1750868483.jpg"} 24 | ], 25 | "note": "VUE是一套用于构建用户界面的渐进式框架", 26 | "backgroundimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523213284243&di=53dddd55fe6ce46c4a37cde1a01a0377&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F0197fa570a2bfb6ac7251f05e8c74a.jpg%401280w_1l_2o_100sh.jpg" 27 | }, 28 | { 29 | "name": "马化腾", 30 | "id": "pony", 31 | "num":1, 32 | "chatnum":2, 33 | "sex": 1, 34 | "region": "广东 深圳", 35 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 36 | "momentsimg": [ 37 | { 38 | "id": "pony", 39 | "num":0, 40 | "time": 2, 41 | "content":"坚持每天发现、修正一两个小问题,不到一年就能把产品打磨出来了。", 42 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523214853042&di=ebfcb386524ddf5e2133d0906a5acb6a&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimage%2Fc0%253Dpixel_huitu%252C0%252C0%252C294%252C40%2Fsign%3Da80e8ff3a451f3ded7bfb124fd969573%2F32fa828ba61ea8d3c807333d9c0a304e251f58e5.jpg" 43 | },{ 44 | "id": "pony", 45 | "num":1, 46 | "time": 5, 47 | "content":"做别人做不了的事", 48 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523214906979&di=809829e33b217104785ae17bbf86932c&imgtype=0&src=http%3A%2F%2Farticle.job5156.com%2Fuploads%2F140926%2F1411692855508040.jpg" 49 | },{ 50 | "id": "pony", 51 | "num":2, 52 | "time": 7, 53 | "content":"回顾腾讯10年业务的发展,其实就是慢慢地试", 54 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523214974246&di=4fe151e5f93d3f780032f94723c2eb55&imgtype=0&src=http%3A%2F%2Fimg1.iyiou.com%2FCover%2F2017-08-16%2Fgongsi-tengxun.jpg" 55 | } 56 | ], 57 | "note": "テンセントボス", 58 | "backgroundimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523278377687&di=d19b0686eb436341924b12c8901b8a04&imgtype=0&src=http%3A%2F%2Fimg0w.pconline.com.cn%2Fpconline%2F1305%2F14%2F3296135_01.jpg" 59 | }, 60 | { 61 | "name": "张小龙", 62 | "id": "AllenZhang", 63 | "num":2, 64 | "chatnum":null, 65 | "sex": 1, 66 | "region": "广东 深圳", 67 | "headerimg": "http://i2.itc.cn/20151208/805_3081ca12_e74c_a8ce_69f1_c28c0264fa0d_4.jpg", 68 | "momentsimg": [ 69 | { 70 | "id": "AllenZhang", 71 | "num":0, 72 | "time": 3, 73 | "content":"我们会觉得应该把更多的时间聚焦在用户身上", 74 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523810174&di=a585ae582260fc91ab955cfa43a03f34&imgtype=jpg&er=1&src=http%3A%2F%2Fwaaaat.welovead.com%2Fupload%2Frss_download%2F20180305%2F600_0%2F201803051201173235.jpg"}, 75 | { 76 | "id": "AllenZhang", 77 | "num":1, 78 | "time": 10, 79 | "content":"关于微信平台的价值观是让创造发挥价值", 80 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215489217&di=fa900b793d92dab7c0d6d26b644f95cd&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2018%2F079%2F58%2FI6G52P1530EO.jpg"} 81 | ], 82 | "note": "一个好的产品是用完即走的", 83 | "backgroundimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523278400208&di=93cc8fa334f47edea39e95d21b61027a&imgtype=0&src=http%3A%2F%2Fphotocdn.sohu.com%2F20160113%2Fmp54270373_1452667786111_1_th.png" 84 | }, 85 | { 86 | "name": "任正非", 87 | "id": "rzf", 88 | "num":3, 89 | "chatnum":1, 90 | "sex": 1, 91 | "region": "广东 深圳", 92 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523189945773&di=d454e42003f2dee23a046e8236405017&imgtype=0&src=http%3A%2F%2Fy1.ifengimg.com%2F7c7ccbd3890051bf%2F2012%2F0429%2Frdn_4f9cf63ee41ba.jpg", 93 | "momentsimg": [ 94 | { 95 | "id": "rzf", 96 | "num":0, 97 | "time": 6, 98 | "content":"年轻人不要光从书本上学习,一定要学会从实践中学习", 99 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215597175&di=40df0e3580150c6377c37968561b424a&imgtype=jpg&src=http%3A%2F%2Fimg4.imgtn.bdimg.com%2Fit%2Fu%3D3607873549%2C24252651%26fm%3D214%26gp%3D0.jpg"} 100 | ], 101 | "note": "世界通信行业三分天下,华为将占一分", 102 | "backgroundimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523278417808&di=094bfeb6393be7a21bd49ffb5d12c474&imgtype=0&src=http%3A%2F%2Fwww.chinairn.com%2FUserFiles%2Fimage%2F20161118%2F20161118144638_7185.jpg" 103 | }, 104 | { 105 | "name": "唐艺昕", 106 | "id": "tyx", 107 | "num":4, 108 | "chatnum":null, 109 | "sex": 0, 110 | "region": "重庆 沙坪坝", 111 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523784683&di=2c93f15ee642d36cb09acd92eae06f2d&imgtype=jpg&er=1&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201609%2F23%2F20160923224812_4FRHa.jpeg", 112 | "momentsimg": [ 113 | { 114 | "id": "tyx", 115 | "num":0, 116 | "time": 8, 117 | "content":"明日回京放放风~", 118 | "imgs":"https://wx1.sinaimg.cn/mw690/63548d94ly1fntujka30lj21yj2i8hdu.jpg"}, 119 | { 120 | "id": "tyx", 121 | "num":1, 122 | "time": 9, 123 | "content":"好时节~", 124 | "imgs":"https://wx4.sinaimg.cn/mw690/63112839ly1fq43g0drtbj21400qojze.jpg" 125 | } 126 | ], 127 | "note": "代表作品甄嬛传", 128 | "backgroundimg": "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=492153157,642373384&fm=11&gp=0.jpg" 129 | } 130 | ], 131 | "dialogue": [ 132 | { 133 | "name":"尤雨溪", 134 | "member":["尤雨溪","曹昱RICO"], 135 | "type":0, 136 | "num":0, 137 | "lasttime":"上午7:08", 138 | "headerimg":"https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg", 139 | "conversation":[ 140 | { 141 | "speaker":"https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg", 142 | "position":"left", 143 | "num":0, 144 | "content":"小伙子你觉得VUE和REACT、Angular哪个好?" 145 | }, 146 | { 147 | "speaker":"https://upload-images.jianshu.io/upload_images/9672967-451a147b4ed26b9d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/700", 148 | "position":"right", 149 | "num":null, 150 | "content":"The core idea is don't put all your eggs in a single basket. Picking a JavaScript framework is not a one-or-the-other scenario; you don't have to stick with one forever. And no matter what others say, it's impossible to make the best decision for yourself without trying them out and get first-hand experience with it. If you just go with one and ignore the others, you are almost certainly doing it wrong." 151 | }, 152 | { 153 | "speaker": "https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg", 154 | "position":"left", 155 | "num":0, 156 | "content": "渐进式Javascript框架" 157 | } 158 | ] 159 | }, 160 | { 161 | "name":"任正非", 162 | "member":["任正非","曹昱RICO"], 163 | "type":0, 164 | "num":1, 165 | "lasttime":"上午7:18", 166 | "headerimg":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523189945773&di=d454e42003f2dee23a046e8236405017&imgtype=0&src=http%3A%2F%2Fy1.ifengimg.com%2F7c7ccbd3890051bf%2F2012%2F0429%2Frdn_4f9cf63ee41ba.jpg", 167 | "conversation":[ 168 | { 169 | "speaker":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523189945773&di=d454e42003f2dee23a046e8236405017&imgtype=0&src=http%3A%2F%2Fy1.ifengimg.com%2F7c7ccbd3890051bf%2F2012%2F0429%2Frdn_4f9cf63ee41ba.jpg", 170 | "position":"left", 171 | "num":3, 172 | "content":"要么成为领先者,要么被淘汰" 173 | }, 174 | { 175 | "speaker":"https://upload-images.jianshu.io/upload_images/9672967-451a147b4ed26b9d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/700", 176 | "position":"right", 177 | "num":null, 178 | "content":"成为领先者" 179 | } 180 | ] 181 | }, 182 | { 183 | "name":"马化腾", 184 | "member":["马化腾","曹昱RICO"], 185 | "type":0, 186 | "num":2, 187 | "lasttime":"上午8:56", 188 | "headerimg":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 189 | "conversation":[ 190 | { 191 | "speaker":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 192 | "position":"left", 193 | "num":1, 194 | "content":"我认为腾讯的成功,首先就是技术、产品和用户感这个要非常强。第二,团队稳健、股东架构稳健很重要。" 195 | }, 196 | { 197 | "speaker":"https://upload-images.jianshu.io/upload_images/9672967-451a147b4ed26b9d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/700", 198 | "position":"right", 199 | "num":null, 200 | "content":"回顾腾讯10年业务的发展,其实就是慢慢地试,有信心,步子才会逐渐大一点。" 201 | }, 202 | { 203 | "speaker":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 204 | "position":"left", 205 | "num":1, 206 | "content":"在中国互联网发展的早期,对大多数网民来说,据我们了解接触,很多是浏览器都不知道,电子邮件也不知道,就知道上QQ就是上网。" 207 | }, 208 | { 209 | "speaker":"https://upload-images.jianshu.io/upload_images/9672967-451a147b4ed26b9d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/700", 210 | "position":"right", 211 | "num":null, 212 | "content":"生命在于创造。" 213 | } 214 | ] 215 | }, 216 | { 217 | "name":"重庆大学校友群", 218 | "member":["任正非","唐艺昕","曹昱RICO"], 219 | "type":1, 220 | "num":3, 221 | "lasttime":"上午9:18", 222 | "headerimg":"https://upload-images.jianshu.io/upload_images/9672967-aa376c146059a6cf.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/283", 223 | "conversation":[ 224 | { 225 | "talker":"任正非", 226 | "speaker":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523189945773&di=d454e42003f2dee23a046e8236405017&imgtype=0&src=http%3A%2F%2Fy1.ifengimg.com%2F7c7ccbd3890051bf%2F2012%2F0429%2Frdn_4f9cf63ee41ba.jpg", 227 | "position":"left", 228 | "num":3, 229 | "content":"1929年刘湘创办重庆大学,20世纪40年代成为有文、理、工、商、法、医6个学院的国立综合性大学,1942年更名为国立重庆大学。" 230 | },{ 231 | "talker":"唐艺昕", 232 | "speaker":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523784683&di=2c93f15ee642d36cb09acd92eae06f2d&imgtype=jpg&er=1&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201609%2F23%2F20160923224812_4FRHa.jpeg", 233 | "position":"left", 234 | "num":4, 235 | "content":"马寅初、李四光等一大批学者来到重庆大学教学。" 236 | },{ 237 | "talker":"曹昱RICO", 238 | "speaker":"https://upload-images.jianshu.io/upload_images/9672967-451a147b4ed26b9d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/700", 239 | "position":"right", 240 | "num":null, 241 | "content":"耐劳苦,尚俭朴,勤学业,爱国家" 242 | } 243 | ] 244 | }, 245 | { 246 | "name":"微信产品群", 247 | "member":["马化腾","张小龙","曹昱RICO"], 248 | "type":1, 249 | "num":4, 250 | "lasttime":"上午10:00", 251 | "headerimg":"https://upload-images.jianshu.io/upload_images/9672967-237246372d3eb09f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/283", 252 | "conversation":[ 253 | { 254 | "talker":"马化腾", 255 | "speaker":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 256 | "position":"left", 257 | "num":1, 258 | "content":"微信是什么" 259 | },{ 260 | "talker":"张小龙", 261 | "speaker":"http://i2.itc.cn/20151208/805_3081ca12_e74c_a8ce_69f1_c28c0264fa0d_4.jpg", 262 | "position":"left", 263 | "num":2, 264 | "content":"你如何使用微信,决定了微信是什么。" 265 | } 266 | ] 267 | } 268 | ], 269 | "moments": [ 270 | { 271 | "name": "尤雨溪", 272 | "headerimg": "https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg", 273 | "time": 1, 274 | "content":"Vue 的核心库只关注视图层", 275 | "imgs": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523213064737&di=b4f2be5d7a7a3b260b11eab7fd69cf79&imgtype=0&src=http%3A%2F%2Fwww.xz7.com%2Fup%2F2017-7%2F201771392324.png" 276 | }, 277 | { 278 | "name": "马化腾", 279 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 280 | "time": 2, 281 | "content":"坚持每天发现、修正一两个小问题,不到一年就能把产品打磨出来了。", 282 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523214853042&di=ebfcb386524ddf5e2133d0906a5acb6a&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimage%2Fc0%253Dpixel_huitu%252C0%252C0%252C294%252C40%2Fsign%3Da80e8ff3a451f3ded7bfb124fd969573%2F32fa828ba61ea8d3c807333d9c0a304e251f58e5.jpg" 283 | }, 284 | { 285 | "name": "张小龙", 286 | "headerimg": "http://i2.itc.cn/20151208/805_3081ca12_e74c_a8ce_69f1_c28c0264fa0d_4.jpg", 287 | "time": 3, 288 | "content":"我们会觉得应该把更多的时间聚焦在用户身上", 289 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523810174&di=a585ae582260fc91ab955cfa43a03f34&imgtype=jpg&er=1&src=http%3A%2F%2Fwaaaat.welovead.com%2Fupload%2Frss_download%2F20180305%2F600_0%2F201803051201173235.jpg" 290 | }, 291 | { 292 | "name": "尤雨溪", 293 | "headerimg": "https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg", 294 | "time": 4, 295 | "content":"Vue 也完全能够为复杂的单页应用提供驱动", 296 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523213128186&di=b19afbbf938e1057437a0e5719fb9f4a&imgtype=0&src=http%3A%2F%2Fs1.51cto.com%2Fwyfs02%2FM02%2F8A%2FA1%2FwKiom1g1d4KzJLj_AAENEPluz5E910.jpg-wh_651x-s_1750868483.jpg" 297 | }, 298 | { 299 | "name": "马化腾", 300 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 301 | "time": 5, 302 | "content":"做别人做不了的事", 303 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523214906979&di=809829e33b217104785ae17bbf86932c&imgtype=0&src=http%3A%2F%2Farticle.job5156.com%2Fuploads%2F140926%2F1411692855508040.jpg" 304 | }, 305 | { 306 | "name": "任正非", 307 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523189945773&di=d454e42003f2dee23a046e8236405017&imgtype=0&src=http%3A%2F%2Fy1.ifengimg.com%2F7c7ccbd3890051bf%2F2012%2F0429%2Frdn_4f9cf63ee41ba.jpg", 308 | "time": 6, 309 | "content":"年轻人不要光从书本上学习,一定要学会从实践中学习", 310 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215597175&di=40df0e3580150c6377c37968561b424a&imgtype=jpg&src=http%3A%2F%2Fimg4.imgtn.bdimg.com%2Fit%2Fu%3D3607873549%2C24252651%26fm%3D214%26gp%3D0.jpg" 311 | }, 312 | { 313 | "name": "马化腾", 314 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215026185&di=97675718d3c220e7fb46453abc7d8633&imgtype=0&src=http%3A%2F%2Fwww.people.com.cn%2Fmediafile%2Fpic%2F20150624%2F51%2F10411837753251226111.jpg", 315 | "time": 7, 316 | "content":"回顾腾讯10年业务的发展,其实就是慢慢地试", 317 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523214974246&di=4fe151e5f93d3f780032f94723c2eb55&imgtype=0&src=http%3A%2F%2Fimg1.iyiou.com%2FCover%2F2017-08-16%2Fgongsi-tengxun.jpg" 318 | }, 319 | { 320 | "name": "唐艺昕", 321 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523784683&di=2c93f15ee642d36cb09acd92eae06f2d&imgtype=jpg&er=1&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201609%2F23%2F20160923224812_4FRHa.jpeg", 322 | "time": 8, 323 | "content":"明日回京放放风~", 324 | "imgs":"https://wx1.sinaimg.cn/mw690/63548d94ly1fntujka30lj21yj2i8hdu.jpg" 325 | }, 326 | { 327 | "name": "唐艺昕", 328 | "headerimg": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523784683&di=2c93f15ee642d36cb09acd92eae06f2d&imgtype=jpg&er=1&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201609%2F23%2F20160923224812_4FRHa.jpeg", 329 | "time": 9, 330 | "content":"好时节~", 331 | "imgs":"https://wx4.sinaimg.cn/mw690/63112839ly1fq43g0drtbj21400qojze.jpg" 332 | }, 333 | { 334 | "name": "张小龙", 335 | "headerimg": "http://i2.itc.cn/20151208/805_3081ca12_e74c_a8ce_69f1_c28c0264fa0d_4.jpg", 336 | "time": 10, 337 | "content":"关于微信平台的价值观是让创造发挥价值", 338 | "imgs":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523215489217&di=fa900b793d92dab7c0d6d26b644f95cd&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2018%2F079%2F58%2FI6G52P1530EO.jpg" 339 | } 340 | 341 | ] 342 | } --------------------------------------------------------------------------------