Commit d8fc4d7e authored by coolfish's avatar coolfish

初版

parents
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["istanbul"]
}
}
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
build/*.js
config/*.js
// http://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parser: 'babel-eslint',
parserOptions: {
sourceType: 'module'
},
env: {
browser: true,
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: 'standard',
// required to lint *.vue files
plugins: [
'html'
],
// add your custom rules here
'rules': {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
}
}
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
// to edit target browsers: use "browserlist" field in package.json
"autoprefixer": {}
}
}
# fengchao-website
> A Vue.js project
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
```
For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
require('./check-versions')()
process.env.NODE_ENV = 'production'
var ora = require('ora')
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('../config')
var webpackConfig = require('./webpack.prod.conf')
var spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
})
})
var chalk = require('chalk')
var semver = require('semver')
var packageConfig = require('../package.json')
var shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
var versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
},
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
var warnings = []
for (var i = 0; i < versionRequirements.length; i++) {
var mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (var i = 0; i < warnings.length; i++) {
var warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
/* eslint-disable */
require('eventsource-polyfill')
var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
hotClient.subscribe(function (event) {
if (event.action === 'reload') {
window.location.reload()
}
})
require('./check-versions')()
var config = require('../config')
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
}
var opn = require('opn')
var path = require('path')
var express = require('express')
var webpack = require('webpack')
var proxyMiddleware = require('http-proxy-middleware')
var webpackConfig = require('./webpack.dev.conf')
// default port where dev server listens for incoming traffic
var port = process.env.PORT || config.dev.port
// automatically open browser, if not set will be false
var autoOpenBrowser = !!config.dev.autoOpenBrowser
// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware
var proxyTable = config.dev.proxyTable
var app = express()
var compiler = webpack(webpackConfig)
var devMiddleware = require('webpack-dev-middleware')(compiler, {
publicPath: webpackConfig.output.publicPath,
quiet: true
})
var hotMiddleware = require('webpack-hot-middleware')(compiler, {
log: () => {}
})
// force page reload when html-webpack-plugin template changes
compiler.plugin('compilation', function (compilation) {
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
hotMiddleware.publish({ action: 'reload' })
cb()
})
})
// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
var options = proxyTable[context]
if (typeof options === 'string') {
options = { target: options }
}
app.use(proxyMiddleware(options.filter || context, options))
})
// handle fallback for HTML5 history API
app.use(require('connect-history-api-fallback')())
// serve webpack bundle output
app.use(devMiddleware)
// enable hot-reload and state-preserving
// compilation error display
app.use(hotMiddleware)
// serve pure static assets
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
app.use(staticPath, express.static('./static'))
var uri = 'http://localhost:' + port
var _resolve
var readyPromise = new Promise(resolve => {
_resolve = resolve
})
console.log('> Starting dev server...')
devMiddleware.waitUntilValid(() => {
console.log('> Listening at ' + uri + '\n')
// when env is testing, don't need open it
if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
opn(uri)
}
_resolve()
})
var server = app.listen(port)
module.exports = {
ready: readyPromise,
close: () => {
server.close()
}
}
var path = require('path')
var config = require('../config')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
exports.assetsPath = function (_path) {
var assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
var cssLoader = {
loader: 'css-loader',
options: {
minimize: process.env.NODE_ENV === 'production',
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
var loaders = [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
var output = []
var loaders = exports.cssLoaders(options)
for (var extension in loaders) {
var loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
var utils = require('./utils')
var config = require('../config')
var isProduction = process.env.NODE_ENV === 'production'
module.exports = {
loaders: utils.cssLoaders({
sourceMap: isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap,
extract: isProduction
})
}
var path = require('path')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'components': resolve('src/components'),
'static': resolve('src/static')
}
},
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
}
}
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
// add hot-reload related code to entry chunks
Object.keys(baseWebpackConfig.entry).forEach(function (name) {
baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
})
module.exports = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
},
// cheap-module-eval-source-map is faster for development
devtool: '#cheap-module-eval-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env': config.dev.env
}),
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
new FriendlyErrorsPlugin()
]
})
var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var CopyWebpackPlugin = require('copy-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
var env = config.build.env
var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true
})
},
devtool: config.build.productionSourceMap ? '#source-map' : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: {
safe: true
}
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
chunks: ['vendor']
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
var CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
},
dev: {
env: require('./dev.env'),
port: 8080,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
}
}
module.exports = {
NODE_ENV: '"production"'
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>小云蜂巢</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
This diff is collapsed.
{
"name": "fengchao-website",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "coolfish <461836324@qq.com>",
"private": true,
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build": "node build/build.js",
"lint": "eslint --ext .js,.vue src"
},
"dependencies": {
"babel-runtime": "^6.23.0",
"fastclick": "^1.0.6",
"vue": "^2.3.3",
"vue-router": "^2.3.1"
},
"devDependencies": {
"autoprefixer": "^6.7.2",
"babel-core": "^6.22.1",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.2.10",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-polyfill": "^6.23.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chalk": "^1.1.3",
"connect-history-api-fallback": "^1.3.0",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"eslint": "^3.19.0",
"eslint-config-standard": "^6.2.1",
"eslint-friendly-formatter": "^2.0.7",
"eslint-loader": "^1.7.1",
"eslint-plugin-html": "^2.0.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^2.0.1",
"eventsource-polyfill": "^0.9.6",
"express": "^4.14.1",
"extract-text-webpack-plugin": "^2.0.0",
"file-loader": "^0.11.1",
"friendly-errors-webpack-plugin": "^1.1.3",
"html-webpack-plugin": "^2.28.0",
"http-proxy-middleware": "^0.17.3",
"opn": "^4.0.2",
"optimize-css-assets-webpack-plugin": "^1.3.0",
"ora": "^1.2.0",
"rimraf": "^2.6.0",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.1",
"url-loader": "^0.5.8",
"vue-loader": "^12.1.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.3.3",
"webpack": "^2.6.1",
"webpack-bundle-analyzer": "^2.2.1",
"webpack-dev-middleware": "^1.10.0",
"webpack-hot-middleware": "^2.18.0",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
<template>
<div id="app">
<m-header></m-header>
<keep-alive>
<router-view></router-view>
</keep-alive>
<m-copyright></m-copyright>
</div>
</template>
<script>
import MHeader from 'components/m-header/m-header'
import MCopyright from 'components/m-copyright/m-copyright'
export default {
name: 'app',
components: {
MHeader,
MCopyright
}
}
</script>
<style>
</style>
<template>
<div class="a-banner">
<div class="cover">
<div class="title">整合内容资源,提升广告主的品牌曝光能力</div>
<div class="btns">
<a class="application">申请试用</a>
</div>
</div>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.a-banner
height: 500px
width: 100%
background-image: url("banner.png")
background-size: cover
background-position: center
color: #fff
text-align: center
.cover
height: 144px
padding: 178px 0
background-color: rgba(0, 0, 0, 0.5)
.title
font-size: 34px
margin-bottom: 60px
.btns
.application
width: 200px
height: 50px
font-size: 20px
color: #fff
display: inline-block
line-height: 50px
text-align: center
background-color: #f40
border-radius: 50px
</style>
<template>
<div class="a-introduce">
<ul class="introduce">
<li class="introduce-warp">
<i-status></i-status>
</li>
<li class="introduce-warp">
<i-resources></i-resources>
</li>
<li class="introduce-warp">
<i-platform></i-platform>
</li>
<li class="introduce-warp">
<i-recommend></i-recommend>
</li>
<li class="introduce-warp">
<i-show></i-show>
</li>
<li class="introduce-warp">
<i-media></i-media>
</li>
</ul>
</div>
</template>
<script>
import IStatus from 'components/a-introduce/i-status'
import IResources from 'components/a-introduce/i-resources'
import IPlatform from 'components/a-introduce/i-platform'
import IRecommend from 'components/a-introduce/i-recommend'
import IShow from 'components/a-introduce/i-show'
import IMedia from 'components/a-introduce/i-media'
export default {
name: 'app',
components: {
IStatus,
IResources,
IPlatform,
IRecommend,
IShow,
IMedia
}
}
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.a-introduce
background-color: #fff
min-width: 1000px
.introduce-warp
min-width: 1000px
overflow: hidden
text-align: center
margin: 0 auto
&:nth-child(even)
background-color: #f3f5f8
</style>
<template>
<div class="i-media">
<div class="title">合作自媒体</div>
<ul class="cards">
<li class="card"><span class="name">妮妮宠物</span><img src="./i-media/nncw.png"></li>
<li class="card"><span class="name wrap">宠物心理<br/>小专家</span><img src="./i-media/cwxzj.png"></li>
<li class="card"><span class="name">格格美食家</span><img src="./i-media/ggmsj.png"></li>
<li class="card"><span class="name">汇聚美食</span><img src="./i-media/hjms.png"></li>
<li class="card"><span class="name">吃喝更健康</span><img src="./i-media/chgjk.png"></li>
<li class="card"><span class="name">美食美乐</span><img src="./i-media/msml.png"></li>
<li class="card"><span class="name wrap">喵宝宝<br/>汪宝宝</span><img src="./i-media/mbb-wbb.png"></li>
<li class="card"><span class="name">巢车社</span><img src="./i-media/ccs.png"></li>
<li class="card"><span class="name">吃喝故事</span><img src="./i-media/chgs.png"></li>
<li class="card"><span class="name">美食小精灵</span><img src="./i-media/msxjl.png"></li>
<li class="card"><span class="name">呦呦宠物群</span><img src="./i-media/yycwq.png"></li>
<li class="card"><span class="name">红袖</span><img src="./i-media/hx.png"></li>
<li class="card"><span class="name">馋嘴表妹</span><img src="./i-media/czbm.png"></li>
<li class="card"><span class="name">美食周刊</span><img src="./i-media/mszk.png"></li>
<li class="card"><span class="name">全能吃货</span><img src="./i-media/qnch.png"></li>
<li class="card"><span class="name">创意美食乐趣</span><img src="./i-media/cymslq.png"></li>
<li class="card"><span class="name">关门兔</span><img src="./i-media/gmt.png"></li>
<li class="card"><span class="name">爱萌宠物</span><img src="./i-media/amcw.png"></li>
<li class="card"><span class="name wrap">爱生活<br/>爱美食</span><img src="./i-media/ash-ams.png"></li>
<li class="card"><span class="name">山海经故事</span><img src="./i-media/shjgs.png"></li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.i-media
padding: 70px 0
text-align: center
.title
color: #000
font-size: 28px
margin-bottom: 30px
.cards
width: 1000px
overflow: hidden
margin: -15px auto
.card
cursor: pointer
width: 150px
height: 70px
float: left
position: relative
left: 0
margin: 15px 62.5px 15px 0
&:nth-child(5n)
margin-right: 0
&:hover:after
background-color: rgba(0, 0, 0, 0.8)
&:after
content: ''
display: block
position: absolute
top: 0
left: 0
width: 100%
height: 100%
background-color: rgba(0, 0, 0, 0.2)
-webkit-transition: background-color .2s linear;
-moz-transition: background-color .2s linear;
-o-transition: background-color .2s linear;
-ms-transition: background-color .2s linear;
transition: background-color .2s linear;
img
width: 100%
height: 100%
.name
position: absolute
color: #fff
font-size: 16px
z-index: 2
margin: auto
top: 0
left: 0
bottom: 0
right: 0
width: 98px
height: 24px
line-height: 24px
border: 1px solid #f40
border-radius: 5px
&.wrap
height: 48px
</style>
<template>
<div class="i-platform">
<div class="title">合作平台</div>
<ul class="logos">
<li><img src="./i-platform/bj.png"><span>百度百家</span></li>
<li><img src="./i-platform/qe.png"><span>企鹅号</span></li>
<li><img src="./i-platform/tt.png"><span>今日头条</span></li>
<li><img src="./i-platform/sh.png"><span>搜狐公众平台</span></li>
<li><img src="./i-platform/wy.png"><span>网易新闻</span></li>
<li><img src="./i-platform/uc.png"><span>UC</span></li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.i-platform
padding: 70px 0
text-align: center
background-image: url("./i-platform/bg.png")
background-size: cover
background-position: center
.title
color: #fff
font-size: 28px
margin-bottom: 30px
.logos
width: 1000px
overflow: hidden
margin: 0 auto
li
float: left
color: #fff
font-size: 18px
width: 166px
img
width: 88px
height: 88px
span
display: block
margin-top: 10px
</style>
<template>
<div class="i-recommend">
<div class="title">渠道优质推荐</div>
<ul class="cards">
<li><img src="./i-recommend/tx.png"><span>腾讯新闻【要闻】头图</span></li>
<li><img src="./i-recommend/wx.png"><span>微信客户端腾讯新闻</span></li>
<li><img src="./i-recommend/tt.png"><span>今日头条【推荐】</span></li>
<li><img src="./i-recommend/bd.png"><span>手机百度底部推荐</span></li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.i-recommend
padding: 70px 0
text-align: center
.title
color: #232323
font-size: 28px
margin-bottom: 30px
.cards
width: 1000px
overflow: hidden
margin: 0 auto
li
cursor: pointer
float: left
color: #fff
font-size: 18px
margin-right: 60px
&:last-child
margin-right: 0
img
width: 193px
height: 344px
border: 1px solid #cfcfcf
border-radius: 5px
padding: 5px
background-color: #fff
margin-bottom: 15px
&:hover
border-color: #707070
span
color: #808080
display: block
font-size: 16px
</style>
<template>
<div class="i-resources">
<div class="title">行业资源</div>
<ul class="cards">
<li class="card"><img src="./i-resources/js.png"><div class="text"><h2>军事</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/kj.png"><div class="text"><h2>科技</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/wx.png"><div class="text"><h2>文学</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/ly.png"><div class="text"><h2>旅游</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/qc.png"><div class="text"><h2>汽车</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/cw.png"><div class="text"><h2>宠物</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/sh.png"><div class="text"><h2>社会</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/my.png"><div class="text"><h2>母婴</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/ss.png"><div class="text"><h2>时尚</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/ms.png"><div class="text"><h2>美食</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/yl.png"><div class="text"><h2>娱乐</h2><h4>literature</h4></div></li>
<li class="card"><img src="./i-resources/jk.png"><div class="text"><h2>健康</h2><h4>literature</h4></div></li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.i-resources
padding: 70px 0
text-align: center
.title
color: #333
font-size: 28px
margin-bottom: 30px
.cards
width: 1000px
overflow: hidden
margin: -15px auto
.card
cursor: pointer
width: 203px
height: 88px
float: left
background-color: #fff
border: 1px solid #fff
border-radius: 5px
margin: 15px 10px
padding: 15px
&:hover
border-color: #c6c7c8
&:nth-child(4n+1)
margin-left: 0
&:nth-child(4n)
margin-right: 0
img
width: 88px
height: 88px
border-radius: 88px
display: inline-block
vertical-align: middle
margin: 0 10px
.text
display: inline-block
vertical-align: middle
text-align: center
h2
color: #333
font-size: 24px
margin: 10px
h4
color: #808080
font-size: 16px
</style>
<template>
<div class="i-show">
<div class="title">广告展现形式</div>
<ul class="cards">
<li><img src="./i-show/pp.png"><span>品牌EPR</span></li>
<li><img src="./i-show/xb.png"><span>小编推荐</span></li>
<li><img src="./i-show/sp.png"><span>相关商品推荐</span></li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.i-show
padding: 70px 0
text-align: center
.title
color: #232323
font-size: 28px
margin-bottom: 30px
.cards
width: 1000px
overflow: hidden
margin: 0 auto
li
cursor: pointer
float: left
color: #fff
font-size: 18px
margin-right: 192.5px
&:last-child
margin-right: 0
img
width: 193px
height: 344px
border: 1px solid #cfcfcf
border-radius: 5px
padding: 5px
background-color: #fff
margin-bottom: 15px
&:hover
border-color: #707070
span
color: #808080
display: block
font-size: 16px
</style>
<template>
<li class="introduce-warp">
<div class="i-status"></div>
</li>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.i-status
height: 520px
background-image: url("./i-status/status.png")
background-size: cover
background-position: center
</style>
<template>
<div class="c-banner">
<div class="cover">
<div class="title">多平台管理工具</div>
<div class="desc">
<p>通过连接内容创作者与内容平台,</p>
<p>帮助自媒体高效的进行跨平台的内容分发及管理</p>
</div>
<div class="btns">
<a class="mac">
Mac版下载
</a><a class="windows">
Windows版下载
</a>
</div>
</div>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.c-banner
height: 500px
width: 100%
background-image: url("banner.png")
background-size: cover
background-position: center
color: #fff
.cover
height: 230px
padding: 135px 0
background-color: rgba(0, 0, 0, 0.5)
padding-left: 140px
.title
font-size: 34px
margin-bottom: 30px
.desc
font-size: 20px
color: #f2f2f2
margin-bottom: 60px
line-height: 28px
.btns
a
width: 140px
font-size: 16px
color: #fff
height: 50px
display: inline-block
line-height: 50px
text-align: center
background-color: #fd6129
&.mac
border-bottom-left-radius: 50px
border-top-left-radius: 50px
&.windows
border-bottom-right-radius: 50px
border-top-right-radius: 50px
background-color: #ff4400
</style>
<template>
<div class="c-dock">
<div class="title">对接平台:</div>
<ul class="platform">
<li><img src="./logo/bj@2x.png"></li><li>
<img src="./logo/qe@2x.png"></li><li>
<img src="./logo/tt@2x.png"></li><li>
<img src="./logo/sh@2x.png"></li><li>
<img src="./logo/wy@2x.png"></li><li>
<img src="./logo/uc@2x.png"></li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.c-dock
text-align: center
height: 70px
background-color: #333
color: #f2f2f2
font-size: 24px
padding: 25px
.title
display: inline-block
line-height: 70px
vertical-align: middle
padding-right: 30px
.platform
display: inline-block
vertical-align: middle
li
width: 70px
height: 70px
display: inline-block
padding-right: 40px
&:last-child
padding-left: 0
</style>
<template>
<div class="c-introduce">
<div class="introduce-title">产品优势</div>
<ul class="introduce">
<li class="introduce-warp">
<img src="./introduce/i-1@2x.png">
<div class="text">
<div class="title">【多平台一键分发】</div>
<div class="desc">多平台快速登录,内容一键分发,高效进行内容运营。</div>
<ul class="nodes">
<li class="node">一键同步,批量发送</li>
<li class="node">对接各大主流媒体平台</li>
</ul>
</div>
</li>
<li class="introduce-warp">
<div class="text">
<div class="title">【图形化效果统计】</div>
<div class="desc">每日数据,个性追踪,深度挖掘,图形化统计结果让运营更直观。</div>
<ul class="nodes">
<li class="node">对接各大平台的数据结果</li>
<li class="node">汇总输出所有平台的数据统计</li>
<li class="node">分析内容在平台上的具体趋势</li>
</ul>
</div>
<img src="./introduce/i-2@2x.png">
</li>
<li class="introduce-warp">
<img src="./introduce/i-3@2x.png">
<div class="text">
<div class="title">【分级式权限管理】</div>
<div class="desc">多账号、多权限设置,优化管理企业的自媒体矩阵。</div>
<ul class="nodes">
<li class="node">一对多账号管理,方便企业自媒体矩阵管理</li>
<li class="node">账号权限管理,优化企业自媒体效果</li>
<li class="node">批量授权,提升企业自媒体矩阵的管理效率</li>
</ul>
</div>
</li>
<li class="introduce-warp">
<div class="text">
<div class="title">【海量正版图片资源】</div>
<div class="desc">海量素材,正版图片,即搜即用,满足对图片的个性需求。</div>
<ul class="nodes">
<li class="node">低价获取各行各业海量优质图片资源</li>
<li class="node">关键词自动匹配图片,快速高效</li>
</ul>
</div>
<img src="./introduce/i-4@2x.png">
</li>
</ul>
</div>
</template>
<script>
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.c-introduce
background-color: #fff
min-width: 1000px
.introduce-title
height: 90px
text-align: center
line-height: 90px
color: #000
font-size: 32px
background-image: url("bg@2x.png")
background-size: cover
background-position: center
.introduce
.introduce-warp
min-width: 1000px
overflow: hidden
padding: 65px 0
text-align: center
margin: 0 auto
img
width: 500px
height: 400px
display: inline-block
vertical-align: middle
.text
display: inline-block
vertical-align: middle
text-align: left
width: 400px
padding: 0 96px 0 0
.title
color: #333
font-size: 28px
margin-bottom: 30px
margin-left: -14px
.desc
color: #666
font-size: 22px
margin-bottom: 20px
line-height: 1.5
.node
color: #999
font-size: 18px
margin-bottom: 10px
padding-left: 20px
background-image: url("arrow.png")
background-size: 7px 12px
background-repeat: no-repeat
background-position: 2px center
&:nth-child(odd)
background-color: #f3f5f8
.text
padding: 0 0 0 96px
</style>
<template>
<div class="m-copyright">
<div class="about">
<a class="line">关于我们</a><a>光音网络</a><a>小云世界</a>
</div>
<div class="copyright">
<span>Copyright © 2017 Goyoo. All rights Reserved. 北京光音网络发展股份有限公司 版权所有</span>
</div>
</div>
</template>
<script>
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="stylus" rel="stylesheet/stylus">
.m-copyright
padding: 72px 0
background-color: #000
text-align: center
font-size: 18px
background-image: url("copyright@2x.png")
background-size: cover
background-position: center
.about
padding-bottom: 20px
a
color: #fff
margin-right: 15px
position: relative
&.line
padding-right: 15px
border-right: 2px solid #fff
.copyright
color: #e6e6e6
</style>
<template>
<div class="m-header">
<div class="nav">
<div class="logo">小云蜂巢</div>
<ul class="menus">
<li><a class="active" href="/content">内容管理工具</a></li>
<li><a href="/ads">广告交易平台</a></li>
</ul>
</div>
</div>
</template>
<script>
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="stylus" rel="stylesheet/stylus">
.m-header
background-color: #000
height: 88px
line-height: 88px
.nav
max-width: 1000px
margin: 0 auto
overflow: hidden
.logo
float: left
width: 200px
height: 60px
line-height: 60px
text-align: center
font-size: 30px
color: #ff4400
margin-top: 14px
.menus
float: right
li
display: inline-block
font-size: 18px
text-align: center
&:last-child
margin-left: 254px
a
display: block
width: 160px
height: 84px
border-bottom: 4px
border-style: solid
border-color: transparent
color: #fff
-webkit-transition: border-color .2s linear, color .2s linear;
-moz-transition: border-color .2s linear, color .2s linear;
-o-transition: border-color .2s linear, color .2s linear;
-ms-transition: border-color .2s linear, color .2s linear;
transition: border-color .2s linear, color .2s linear;
&.active
color: #ff4400
border-color: #ff4400
&:hover
color: #ff4400
border-color: #ff4400
</style>
<template>
<div class="m-ads">
<a-banner></a-banner>
<a-introduce></a-introduce>
</div>
</template>
<script>
import ABanner from 'components/a-banner/a-banner'
import AIntroduce from 'components/a-introduce/a-introduce'
export default {
components: {
ABanner,
AIntroduce
}
}
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
</style>
<template>
<div class="m-content">
<c-banner></c-banner>
<c-dock></c-dock>
<c-introduce></c-introduce>
</div>
</template>
<script>
import CBanner from 'components/c-banner/c-banner'
import CDock from 'components/c-dock/c-dock'
import CIntroduce from 'components/c-introduce/c-introduce'
export default {
components: {
CBanner,
CDock,
CIntroduce
}
}
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment