├── static ├── .gitkeep ├── logo.png └── logopng.png ├── favicon.ico ├── src ├── components │ ├── icon │ │ ├── index.js │ │ └── src │ │ │ └── icon.vue │ ├── backtop │ │ ├── index.js │ │ └── src │ │ │ └── backtop.vue │ ├── github │ │ ├── index.js │ │ └── src │ │ │ └── github.vue │ ├── slider │ │ ├── index.js │ │ └── src │ │ │ └── slider.vue │ ├── wapper │ │ ├── index.js │ │ └── src │ │ │ └── wapper.vue │ ├── theme-style │ │ ├── mixins │ │ │ ├── index.scss │ │ │ ├── config.scss │ │ │ ├── prefix.scss │ │ │ └── mixins.scss │ │ ├── icon │ │ │ ├── fonts │ │ │ │ ├── ionicons.eot │ │ │ │ ├── ionicons.ttf │ │ │ │ └── ionicons.woff │ │ │ ├── ionicons.scss │ │ │ └── _ionicons-font.scss │ │ ├── circle.scss │ │ ├── index.scss │ │ ├── progress.scss │ │ ├── common │ │ │ ├── index.scss │ │ │ └── var.scss │ │ ├── message.scss │ │ ├── carousel.scss │ │ ├── notification.scss │ │ ├── menu.scss │ │ ├── slider.scss │ │ ├── button.scss │ │ └── date-picker.scss │ ├── description │ │ ├── index.js │ │ └── src │ │ │ └── description.vue │ ├── menu │ │ ├── index.js │ │ └── src │ │ │ ├── menu-item.vue │ │ │ ├── submenu.vue │ │ │ └── menu.vue │ ├── mixins │ │ ├── index.js │ │ ├── menu-mixin.js │ │ ├── emitter.js │ │ └── collapse-transtion.js │ ├── index.js │ └── utils.js ├── assets │ ├── hot.gif │ ├── logo.png │ ├── new.gif │ ├── iconfont │ │ ├── iconfont.eot │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ ├── demo.css │ │ ├── demo_fontclass.html │ │ ├── demo_unicode.html │ │ └── iconfont.css │ └── css │ │ └── base.scss ├── mock │ ├── data │ │ ├── index │ │ │ ├── index.js │ │ │ └── index.json │ │ └── util.js │ ├── index.js │ ├── newslist.js │ ├── sliderlist.js │ ├── mock.js │ └── githublist.js ├── main.js ├── pages │ ├── index │ │ ├── index.vue │ │ └── index.scss │ ├── piii │ │ └── index.vue │ ├── pii │ │ ├── index.vue │ │ ├── imgDialog.vue │ │ └── index.scss │ ├── pvi │ │ └── index.vue │ ├── pv │ │ ├── heart.vue │ │ ├── index.vue │ │ └── index.scss │ ├── pvii │ │ ├── index.scss │ │ └── index.vue │ ├── piv │ │ ├── index.scss │ │ └── index.vue │ └── pi │ │ ├── index.vue │ │ └── index.scss ├── App.vue └── router │ └── index.js ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── docs ├── static │ ├── logo.png │ ├── logopng.png │ ├── img │ │ └── logo.56c1361.png │ ├── fonts │ │ ├── iconfont.a992996.ttf │ │ ├── iconfont.bd5be2d.eot │ │ ├── ionicons.05acfdb.woff │ │ ├── ionicons.24712f6.ttf │ │ └── ionicons.2c2ae06.eot │ └── js │ │ ├── manifest.3ad1d5771e9b13dbdad2.js │ │ └── manifest.3ad1d5771e9b13dbdad2.js.map └── index.html ├── .gitattributes ├── .editorconfig ├── .gitignore ├── .babelrc ├── .postcssrc.js ├── index.html ├── .project ├── README.md └── package.json /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/favicon.ico -------------------------------------------------------------------------------- /src/components/icon/index.js: -------------------------------------------------------------------------------- 1 | import VpIcon from './src/icon' 2 | export default VpIcon -------------------------------------------------------------------------------- /src/components/backtop/index.js: -------------------------------------------------------------------------------- 1 | import Backtop from './src/backtop' 2 | export default Backtop -------------------------------------------------------------------------------- /src/components/github/index.js: -------------------------------------------------------------------------------- 1 | import Github from './src/github' 2 | export default Github -------------------------------------------------------------------------------- /src/components/slider/index.js: -------------------------------------------------------------------------------- 1 | import Slider from './src/slider' 2 | export default Slider -------------------------------------------------------------------------------- /src/components/wapper/index.js: -------------------------------------------------------------------------------- 1 | import Wapper from './src/wapper' 2 | export default Wapper -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/static/logo.png -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /src/assets/hot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/assets/hot.gif -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/assets/new.gif -------------------------------------------------------------------------------- /static/logopng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/static/logopng.png -------------------------------------------------------------------------------- /docs/static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/logo.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Vue 2 | *.css linguist-language=Vue 3 | *.html linguist-language=Vue -------------------------------------------------------------------------------- /docs/static/logopng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/logopng.png -------------------------------------------------------------------------------- /src/components/theme-style/mixins/index.scss: -------------------------------------------------------------------------------- 1 | @import "config"; 2 | @import "prefix"; 3 | @import "mixins" -------------------------------------------------------------------------------- /src/components/description/index.js: -------------------------------------------------------------------------------- 1 | import Description from './src/description' 2 | export default Description -------------------------------------------------------------------------------- /docs/static/img/logo.56c1361.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/img/logo.56c1361.png -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/assets/iconfont/iconfont.eot -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/assets/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/assets/iconfont/iconfont.woff -------------------------------------------------------------------------------- /docs/static/fonts/iconfont.a992996.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/fonts/iconfont.a992996.ttf -------------------------------------------------------------------------------- /docs/static/fonts/iconfont.bd5be2d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/fonts/iconfont.bd5be2d.eot -------------------------------------------------------------------------------- /docs/static/fonts/ionicons.05acfdb.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/fonts/ionicons.05acfdb.woff -------------------------------------------------------------------------------- /docs/static/fonts/ionicons.24712f6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/fonts/ionicons.24712f6.ttf -------------------------------------------------------------------------------- /docs/static/fonts/ionicons.2c2ae06.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/docs/static/fonts/ionicons.2c2ae06.eot -------------------------------------------------------------------------------- /src/components/theme-style/mixins/config.scss: -------------------------------------------------------------------------------- 1 | $namespace: 'vp'; 2 | $state-prefix: 'is-'; 3 | $element-separator: '__'; 4 | $modifier-separator: '--'; -------------------------------------------------------------------------------- /src/components/theme-style/icon/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/components/theme-style/icon/fonts/ionicons.eot -------------------------------------------------------------------------------- /src/components/theme-style/icon/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/components/theme-style/icon/fonts/ionicons.ttf -------------------------------------------------------------------------------- /src/components/theme-style/icon/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HongqingCao/v-portal-ui/HEAD/src/components/theme-style/icon/fonts/ionicons.woff -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /src/mock/data/index/index.js: -------------------------------------------------------------------------------- 1 | 2 | const util = require('../util');//自定义工具模块 3 | var data = util.getJsonFile('./index/index.json'); 4 | console.log(data) 5 | //export default data 6 | module.exports = { 7 | data 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log* 4 | yarn-debug.log* 5 | yarn-error.log* 6 | /dist/ 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj *.sln 14 | -------------------------------------------------------------------------------- /src/components/menu/index.js: -------------------------------------------------------------------------------- 1 | import VpMenu from './src/menu' 2 | import VpSubmenu from './src/submenu' 3 | import VpMenuItem from './src/menu-item' 4 | 5 | VpMenu.MenuItem = VpMenuItem 6 | VpMenu.Submenu = VpSubmenu 7 | 8 | export default VpMenu -------------------------------------------------------------------------------- /src/components/theme-style/circle.scss: -------------------------------------------------------------------------------- 1 | @include b(circle) { 2 | position: relative; 3 | @include e (content) { 4 | position: absolute; 5 | top: 50%; 6 | left: 0; 7 | transform: translateY(-50%); 8 | width: 100%; 9 | text-align: center; 10 | } 11 | } -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /src/components/mixins/index.js: -------------------------------------------------------------------------------- 1 | import _menuMixin from './menu-mixin' 2 | import _emitter from './emitter' 3 | import _collapseTransition from './collapse-transtion' 4 | 5 | export const menuMixin = _menuMixin 6 | export const emitter = _emitter 7 | export const collapseTransition = _collapseTransition -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | vue-portal-webUI 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/theme-style/index.scss: -------------------------------------------------------------------------------- 1 | @import "icon/ionicons"; 2 | @import "mixins/index"; 3 | @import "common/index"; 4 | @import "./menu"; 5 | @import "./button"; 6 | @import "./slider"; 7 | @import "./notification"; 8 | @import "./message"; 9 | @import "./progress"; 10 | @import "./circle"; 11 | @import "./carousel"; 12 | @import "./date-picker"; -------------------------------------------------------------------------------- /src/mock/index.js: -------------------------------------------------------------------------------- 1 | var Mock = require('mockjs') 2 | //import Mock from 'mockjs' 3 | var data = Mock.mock({ 4 | // 属性 list 的值是一个数组,其中含有 1 到 10 个元素 5 | "error":0, 6 | 'list|1-10': [{ 7 | // 属性 id 是一个自增数,起始值为 1,每次增 1 8 | 'componentName': "@ctitle(2,10)", 9 | 'new|1-2': 2 10 | }] 11 | }) 12 | 13 | module.exports = { 14 | data 15 | } 16 | -------------------------------------------------------------------------------- /src/mock/newslist.js: -------------------------------------------------------------------------------- 1 | var Mock = require('mockjs') 2 | //import Mock from 'mockjs' 3 | var data = Mock.mock({ 4 | "status": 0, 5 | 'newlist|3': [{ 6 | 'newstitle': "@ctitle(2, 10)", 7 | 'datalist|2-7': [{ 8 | 'title': "@cword(15, 40)", 9 | 'content': "@cparagraph", 10 | 'date': "@date()" 11 | }] 12 | }] 13 | }) 14 | 15 | module.exports = { 16 | data 17 | } 18 | -------------------------------------------------------------------------------- /src/mock/sliderlist.js: -------------------------------------------------------------------------------- 1 | var Mock = require('mockjs') 2 | //import Mock from 'mockjs' 3 | var data = Mock.mock({ 4 | "status": 0, 5 | "list": { 6 | 'datalist|3-5': [{ 7 | 'title': "@cword(5, 20)", 8 | 'src': "http://pic2.ooopic.com/dreamstime/video/39/43/77/39437741.jpg", 9 | 'url': "@url()" 10 | }] 11 | } 12 | }) 13 | 14 | module.exports = { 15 | data 16 | } 17 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | vue-portal-webUI
-------------------------------------------------------------------------------- /src/components/mixins/menu-mixin.js: -------------------------------------------------------------------------------- 1 | import {findParentComponent, findParentComponents, findChildrenComponents} from '../utils' 2 | 3 | export default { 4 | data() { 5 | return { 6 | menu: findParentComponent(this, 'VpMenu') 7 | } 8 | }, 9 | computed: { 10 | mode() { 11 | return this.menu.mode 12 | }, 13 | hasSubmenuParent() { 14 | return !!findParentComponent(this, 'VpSubmenu') 15 | }, 16 | submenuParentNum() { 17 | return findParentComponents(this, 'VpSubmenu').length 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/components/icon/src/icon.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 34 | 35 | -------------------------------------------------------------------------------- /src/components/theme-style/icon/ionicons.scss: -------------------------------------------------------------------------------- 1 | @import "ionicons-variables"; 2 | @import "ionicons-font"; 3 | @import "ionicons-icons"; 4 | 5 | [class*=" ru-icon-"], 6 | [class^="ru-icon-"] { 7 | display: inline-block; 8 | vertical-align: baseline; 9 | } 10 | 11 | 12 | .ru-icon-loop, 13 | .ru-icon-load-a, 14 | .ru-icon-load-b, 15 | .ru-icon-load-c, 16 | .ru-icon-load-d, 17 | .ru-icon-ios-loop-strong, 18 | .ru-icon-ios-loop, { 19 | transform-origin: center center; 20 | animation: rotating 2s linear infinite; 21 | } 22 | 23 | @keyframes rotating { 24 | 0% { 25 | transform: rotateZ(0deg); 26 | } 27 | 100% { 28 | transform: rotateZ(360deg); 29 | } 30 | } -------------------------------------------------------------------------------- /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 mock from './mock/mock' 7 | import vportal from './components/index' 8 | import './assets/iconfont/iconfont.css' 9 | import './assets/css/base.scss' 10 | import './components/theme-style/index.scss' 11 | 12 | Vue.config.productionTip = false 13 | Vue.use(mock); 14 | Vue.use(vportal); 15 | /* eslint-disable no-new */ 16 | new Vue({ 17 | el: '#app', 18 | router, 19 | components: { App }, 20 | template: '' 21 | }) 22 | -------------------------------------------------------------------------------- /src/mock/data/util.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 自定义一个读取文件的工具箱 3 | * @Author: HongqingCao 4 | * @Date: 2018-06-25 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-06-27 12:29:31 7 | */ 8 | 9 | //引入文件系统模块 10 | //import Fs from 'fs'; 11 | //引入path模块 12 | //import path from 'path'; 13 | const fs = require('fs'); 14 | const path = require('path');//引入path模块 15 | 16 | module.exports = { 17 | //读取json文件 18 | getJsonFile:function (filePath) { 19 | //读取指定json文件 20 | var paths = path.resolve(__dirname,filePath); 21 | var jsons = fs.readFileSync(paths, 'utf-8'); 22 | //解析并返回 23 | return JSON.parse(jsons); 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /src/mock/data/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "error":0, 3 | "list":[ 4 | { 5 | "componentName":"导航导航", 6 | "url":"www.baidu.com", 7 | "new":"1" 8 | }, 9 | { 10 | "componentName":"测试", 11 | "url":"www.baidu.com", 12 | "new":"2" 13 | }, 14 | { 15 | "componentName":"头部头部头部头", 16 | "url":"www.baidu.com", 17 | "new":"1" 18 | }, 19 | { 20 | "componentName":"10002", 21 | "url":"www.baidu.com", 22 | "new":"1" 23 | }, 24 | { 25 | "componentName":"10002", 26 | "url":"www.baidu.com", 27 | "new":"1" 28 | }, 29 | { 30 | "componentName":"10002", 31 | "url":"www.baidu.com", 32 | "new":"1" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /src/components/mixins/emitter.js: -------------------------------------------------------------------------------- 1 | const broadcast = function (componentName, eventName, params) { 2 | this.$children.forEach(child => { 3 | let name = child.$options.name 4 | if (name === componentName) { 5 | this.$emit.call(child, eventName, params) 6 | } else { 7 | broadcast.call(child, componentName, eventName, params) 8 | } 9 | }) 10 | } 11 | 12 | const dispatch = function (componentName, eventName, params) { 13 | let parent = this.$parent || this.$root 14 | while(parent && parent.$options.name !== componentName) { 15 | parent = parent.$parent 16 | } 17 | parent ? parent.$emit.call(parent, eventName, params) : '' 18 | } 19 | 20 | export default { 21 | methods: { 22 | broadcast, 23 | dispatch 24 | } 25 | } -------------------------------------------------------------------------------- /src/components/theme-style/mixins/prefix.scss: -------------------------------------------------------------------------------- 1 | $prefix-for-webkit: true !default; 2 | $prefix-for-mozilla: true !default; 3 | $prefix-for-microsoft: true !default; 4 | $prefix-for-opera: true !default; 5 | 6 | 7 | @mixin prefixer ($property, $value, $prefixes) { 8 | @each $prefix in $prefixes { 9 | @if $prefix == webkit and $prefix-for-webkit == true { 10 | -webkit-#{$property}: $value; 11 | } 12 | @else if $prefix == moz and $prefix-for-mozilla == true { 13 | -moz-#{$property}: $value; 14 | } 15 | @else if $prefix == ms and $prefix-for-microsoft == true { 16 | -ms-#{$property}: $value; 17 | } 18 | @else if $prefix == o and $prefix-for-opera == true { 19 | -o-#{$property}: $value; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/mock/mock.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: mock数据统一导出 3 | * @Author: HongqingCao 4 | * @Date: 2018-06-1 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-06-1 17:37:22 7 | */ 8 | const Mock = require('mockjs'); 9 | //import indexdataApi from './data/index' //这里是通过data里面自己书写json读取 10 | const indexdataApi = require('./index'); 11 | const newslist = require('./newslist'); 12 | const sliderlist = require('./sliderlist'); 13 | const githublist = require('./githublist'); 14 | //const indexdataApi = require('./data/index'); 15 | Mock.mock(/\/indexdata\/data/,'get',indexdataApi.data) 16 | Mock.mock(/\/newslist\/data/,'get',newslist.data) 17 | Mock.mock(/\/sliderlist\/data/,'get',sliderlist.data) 18 | Mock.mock(/\/githublist\/data/,'get',githublist.data) 19 | module.exports = { 20 | Mock 21 | } -------------------------------------------------------------------------------- /docs/static/js/manifest.3ad1d5771e9b13dbdad2.js: -------------------------------------------------------------------------------- 1 | !function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a 8 | 27 | -------------------------------------------------------------------------------- /src/components/theme-style/progress.scss: -------------------------------------------------------------------------------- 1 | @include b (progress) { 2 | box-sizing: border-box; 3 | margin: 10px; 4 | padding-right: 40px; 5 | @include e (wrapper) { 6 | position: relative; 7 | background-color: #e4e4e4; 8 | border-radius: 100px; 9 | } 10 | @include e (track) { 11 | position: absolute; 12 | top: 0; 13 | left: 0; 14 | height: 100%; 15 | border-radius: 100px; 16 | text-align: right; 17 | transition: width .3s; 18 | } 19 | @include e (text) { 20 | position: absolute; 21 | top: -5px; 22 | left: 100%; 23 | margin-left: 5px; 24 | i { 25 | @include when (success) { 26 | color: #27c24c; 27 | } 28 | @include when (error) { 29 | color: #ef5050; 30 | } 31 | } 32 | @include when (inside) { 33 | position: static; 34 | top: 0; 35 | left: 0; 36 | color: #fff; 37 | margin: 0 5px; 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /src/components/theme-style/mixins/mixins.scss: -------------------------------------------------------------------------------- 1 | @import '../common/var'; 2 | @import 'config'; 3 | 4 | @mixin b ($block) { 5 | $blockName: #{$namespace}-#{$block}; 6 | .#{$blockName} { 7 | @content; 8 | } 9 | } 10 | 11 | @mixin e ($element) { 12 | $selector: &; 13 | @at-root { 14 | #{$selector + $element-separator + $element} { 15 | @content; 16 | } 17 | } 18 | } 19 | 20 | @mixin m ($modifier) { 21 | $selector: &; 22 | @at-root { 23 | #{$selector + $modifier-separator + $modifier} { 24 | @content; 25 | } 26 | } 27 | } 28 | 29 | @mixin c ($firstCondition, $secondCondition) { 30 | $selector: &; 31 | @at-root { 32 | #{$selector + $modifier-separator + $firstCondition+ $selector + $modifier-separator + $secondCondition} { 33 | @content; 34 | } 35 | } 36 | } 37 | 38 | @mixin when ($state) { 39 | @at-root { 40 | &.#{$state-prefix + $state} { 41 | @content; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/components/theme-style/icon/_ionicons-font.scss: -------------------------------------------------------------------------------- 1 | // Ionicons Font Path 2 | // -------------------------- 3 | 4 | @font-face { 5 | font-family: $ionicons-font-family; 6 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}"); 7 | src:url("#{$ionicons-font-path}/ionicons.eot?v=#{$ionicons-version}#iefix") format("embedded-opentype"), 8 | url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype"), 9 | url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"), 10 | url("#{$ionicons-font-path}/ionicons.svg?v=#{$ionicons-version}#Ionicons") format("svg"); 11 | font-weight: normal; 12 | font-style: normal; 13 | } 14 | 15 | .ion { 16 | display: inline-block; 17 | font-family: $ionicons-font-family; 18 | speak: none; 19 | font-style: normal; 20 | font-weight: normal; 21 | font-variant: normal; 22 | text-transform: none; 23 | text-rendering: auto; 24 | line-height: 1; 25 | -webkit-font-smoothing: antialiased; 26 | -moz-osx-font-smoothing: grayscale; 27 | } -------------------------------------------------------------------------------- /src/components/index.js: -------------------------------------------------------------------------------- 1 | import Icon from './icon' 2 | import Menu from './menu' 3 | import Wapper from './wapper' 4 | import Backtop from './backtop' 5 | import Description from './description' 6 | import Slider from './slider' 7 | import Github from './github' 8 | const components = { 9 | Icon, 10 | Wapper, 11 | Backtop, 12 | Description, 13 | Menu, 14 | Submenu: Menu.Submenu, 15 | MenuItem: Menu.MenuItem, 16 | Slider, 17 | Github 18 | } 19 | 20 | const install = (Vue, options = {}) => { 21 | if (install.installed) return 22 | Object.keys(components).forEach(component => { 23 | Vue.component(components[component].name, components[component]) 24 | }) 25 | Vue.prototype.$notice = Notification 26 | // Vue.prototype.$message = Message 27 | install.installed = true 28 | } 29 | install.installed = false 30 | if (typeof window !== 'undefined' && window.Vue) { 31 | install(window.Vue) 32 | install.installed = true 33 | } 34 | 35 | const vportal = { 36 | ...components, 37 | install 38 | } 39 | 40 | export default vportal -------------------------------------------------------------------------------- /src/components/theme-style/common/index.scss: -------------------------------------------------------------------------------- 1 | @import "var"; 2 | 3 | .collapse-transition { 4 | transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out, 5 | } 6 | body { 7 | font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif; 8 | font-weight: 400; 9 | font-size: $--font-size-base; 10 | color: $--color-text-primary; 11 | -webkit-font-smoothing: antialiased; 12 | } 13 | 14 | body, 15 | div, 16 | ul, 17 | ol, 18 | li, 19 | h1, 20 | h2, 21 | h3, 22 | h4, 23 | h5, 24 | h6, 25 | form, 26 | p, 27 | header, 28 | section, 29 | footer { 30 | margin: 0; 31 | padding: 0; 32 | } 33 | 34 | h1, 35 | h2, 36 | h3, 37 | h4, 38 | h5, 39 | h6 { 40 | color: $--color-title; 41 | font-weight: inherit; 42 | } 43 | 44 | h1 { 45 | font-size: #{$--font-size-base + 8px}; 46 | } 47 | h2 { 48 | font-size: #{$--font-size-base + 6px}; 49 | } 50 | h3 { 51 | font-size: #{$--font-size-base + 4px}; 52 | } 53 | 54 | h4, 55 | h5, 56 | h6, 57 | span, 58 | p { 59 | font-size: inherit; 60 | } -------------------------------------------------------------------------------- /src/components/theme-style/common/var.scss: -------------------------------------------------------------------------------- 1 | /******** fonts ********/ 2 | $--font-size-base: 14px !default; 3 | $--font-size-small: 12px !default; 4 | $--font-size-large: 16px !default; 5 | $--font-weight-base: 500 !default; 6 | $--font-weight-bold: 700 !default; 7 | $--font-weight-lighter: 300 !default; 8 | 9 | 10 | /******** color ********/ 11 | $--color-white: #fff !default; 12 | $--color-black: #000 !default; 13 | 14 | $--color-primary: #41b663 !default; 15 | $--color-success: #27c24c !default; 16 | $--color-danger: #ef5050 !default; 17 | $--color-warning: #ff9900 !default; 18 | $--color-info: #a1a1a1 !default; 19 | $--color-disabled: #bbbec4 !default; 20 | 21 | $--color-title: #1c2438 !default; 22 | $--color-text-primary: #5e5e5e !default; 23 | $--color-text-second: #a1a1a1 !default; 24 | $--color-text-placeholder: #bcbcbc !default; 25 | $--color-text-disabled: #bbbec4 !default; 26 | 27 | /******** menu ********/ 28 | $--menu-item-fill: $--color-white !default; 29 | $--menu-item-color: $--color-text-primary !default; 30 | $--menu-item-dark-fill: #353e4e !default; 31 | 32 | /******** background ********/ 33 | $--background-color-base: #f3f3f3 !default; -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 32 | -------------------------------------------------------------------------------- /src/mock/githublist.js: -------------------------------------------------------------------------------- 1 | var Mock = require('mockjs') 2 | //import Mock from 'mockjs' 3 | var data = Mock.mock({ 4 | "status": 0, 5 | "userList|3-4": [{ 6 | 'login': "HongqingCao", 7 | 'heart|0-3': 1, 8 | 'id|+1': 1, 9 | 'avatar_url': "https://avatars0.githubusercontent.com/u/17700419?s=460&v=4", 10 | 'gravatar_id': "", 11 | 'url': "https://api.github.com/users/HongqingCao", 12 | 'html_url': "https://github.com/HongqingCao", 13 | 'followers_url': "https://api.github.com/users/HongqingCao/followers", 14 | 'following_url': "https://api.github.com/users/HongqingCao/following{/other_user}", 15 | 'gists_url': "https://api.github.com/users/HongqingCao/gists{/gist_id}", 16 | 'starred_url': "https://api.github.com/users/HongqingCao/starred{/owner}{/repo}", 17 | 'subscriptions_url': "https://api.github.com/users/HongqingCao/subscriptions", 18 | 'organizations_url': "https://api.github.com/users/HongqingCao/orgs", 19 | 'repos_url': "https://api.github.com/users/HongqingCao/repos", 20 | 'events_url': "https://api.github.com/users/HongqingCao/events{/privacy}", 21 | 'received_events_url': "https://api.github.com/users/HongqingCao/received_events", 22 | 'type': "User", 23 | 'site_admin': false 24 | }] 25 | }) 26 | 27 | module.exports = { 28 | data 29 | } -------------------------------------------------------------------------------- /src/components/wapper/src/wapper.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 24 | 25 | -------------------------------------------------------------------------------- /src/pages/piii/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 轮播图 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-10 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-10 17:37:22 7 | */ 8 | 21 | 22 | 51 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import index from '@/pages/index/index' 4 | import pi from '@/pages/pi/index' 5 | import pii from '@/pages/pii/index' 6 | import piii from '@/pages/piii/index' 7 | import piv from '@/pages/piv/index' 8 | import pv from '@/pages/pv/index' 9 | import pvi from '@/pages/pvi/index' 10 | import pvii from '@/pages/pvii/index' 11 | Vue.use(Router) 12 | 13 | export default new Router({ 14 | routes: [ 15 | { 16 | path: '/', 17 | name: '', 18 | component: index 19 | }, 20 | { 21 | path: '/index', 22 | name: 'index', 23 | component: index 24 | }, 25 | { 26 | path: '/pi', 27 | name: 'pi', 28 | component: pi 29 | }, 30 | { 31 | path: '/pii', 32 | name: 'pii', 33 | component: pii 34 | }, 35 | { 36 | path: '/piii', 37 | name: 'piii', 38 | component: piii 39 | }, 40 | { 41 | path: '/piv', 42 | name: 'piv', 43 | component: piv 44 | }, 45 | { 46 | path: '/pv', 47 | name: 'pv', 48 | component: pv 49 | }, 50 | { 51 | path: '/pvi', 52 | name: 'pvi', 53 | component: pvi 54 | }, 55 | { 56 | path: '/pvii', 57 | name: 'pvii', 58 | component: pvii 59 | } 60 | ] 61 | }) 62 | -------------------------------------------------------------------------------- /src/pages/pii/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 平滑放大 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-1 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-1 17:37:22 7 | */ 8 | 27 | 28 | 41 | 42 | -------------------------------------------------------------------------------- /src/pages/pvi/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 爱心点赞 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-11 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-11 17:37:22 7 | */ 8 | 9 | 38 | 39 | 55 | 56 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | vue-portal-web 4 | 5 | 6 | 7 | 8 | 9 | com.aptana.ide.core.unifiedBuilder 10 | 11 | 12 | 13 | 14 | 15 | com.aptana.projects.webnature 16 | 17 | 18 | 19 | 1529996833180 20 | 21 | 26 22 | 23 | org.eclipse.ui.ide.multiFilter 24 | 1.0-name-matches-false-false-node_modules 25 | 26 | 27 | 28 | 1530018458519 29 | 30 | 26 31 | 32 | org.eclipse.ui.ide.multiFilter 33 | 1.0-name-matches-false-false-node_modules 34 | 35 | 36 | 37 | 1530386849899 38 | 39 | 26 40 | 41 | org.eclipse.ui.ide.multiFilter 42 | 1.0-name-matches-false-false-node_modules 43 | 44 | 45 | 46 | 1534126171060 47 | 48 | 26 49 | 50 | org.eclipse.ui.ide.multiFilter 51 | 1.0-name-matches-false-false-node_modules 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/components/description/src/description.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 36 | 37 | 75 | -------------------------------------------------------------------------------- /src/components/menu/src/menu-item.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 70 | -------------------------------------------------------------------------------- /src/pages/pv/heart.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 67 | 68 | -------------------------------------------------------------------------------- /src/pages/pv/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 爱心点赞 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-11 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-11 17:37:22 7 | */ 8 | 9 | 34 | 35 | 66 | 67 | -------------------------------------------------------------------------------- /src/pages/pvii/index.scss: -------------------------------------------------------------------------------- 1 | .messege-container{ 2 | width: 100%; 3 | height: 100%; 4 | display: flex; 5 | justify-content: center; 6 | .messege-box{ 7 | width: 500px; 8 | height: 300px; 9 | padding: 15px 15px 25px 15px; 10 | overflow: hidden; 11 | .messege-content{ 12 | width: 100%; 13 | height: 100%; 14 | overflow: hidden; 15 | padding-top: 4px; 16 | ul{ 17 | width: 100%; 18 | height: auto; 19 | position: relative; 20 | transition: margin-top 0.5s; 21 | li{ 22 | width: 100%; 23 | height: 1/6 * 100%; 24 | padding-bottom: 5px; 25 | overflow: hidden; 26 | a{ 27 | width: 100%; 28 | height: 100%; 29 | display: block; 30 | overflow: hidden; 31 | text-overflow: ellipsis; 32 | white-space: nowrap; 33 | text-decoration: none; 34 | background: rgba(216,191,216,.1); 35 | border-radius: 5px; 36 | padding-left: 30px; 37 | position: relative; 38 | line-height: 2.5rem; 39 | &:before{ 40 | position: absolute; 41 | box-sizing: border-box; 42 | margin-left: -22px; 43 | display:block; 44 | height: 100%; 45 | content:'◆'; 46 | color: #eb8a00; 47 | }; 48 | i{ 49 | padding-right: 8px; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /src/components/theme-style/message.scss: -------------------------------------------------------------------------------- 1 | @include b (message) { 2 | display: flex; 3 | align-items: center; 4 | box-sizing: border-box; 5 | position: fixed; 6 | min-width: 380px; 7 | top: 20px; 8 | left: 50%; 9 | padding: 16px; 10 | background-color: mix(#fff, #fe6f3d, 80%); 11 | border: 1px solid #fe6f3d; 12 | border-radius: 4px; 13 | color: #fe6f3d; 14 | transform: translateX(-50%); 15 | z-index: 1000; 16 | opacity: 1; 17 | transition: transform .3s, opacity .3s; 18 | @include when (success) { 19 | border-color: #27c24c; 20 | background-color: mix(#fff, #27c24c, 80%); 21 | color: #27c24c; 22 | } 23 | @include when (error) { 24 | border-color: #ef5050; 25 | background-color: mix(#fff, #ef5050, 80%); 26 | color: #ef5050; 27 | } 28 | @include when (warning) { 29 | border-color: #ff9900; 30 | background-color: mix(#fff, #ff9900, 80%); 31 | color: #ff9900; 32 | } 33 | @include when (center) { 34 | justify-content: center; 35 | } 36 | @include e (icon) { 37 | display: block; 38 | margin-right: 10px; 39 | font-size: 18px; 40 | z-index: 1001; 41 | color: #fe6f3d; 42 | @include when (success) { 43 | color: #27c24c; 44 | } 45 | @include when (error) { 46 | color: #ef5050; 47 | } 48 | @include when (warning) { 49 | color: #ff9900; 50 | } 51 | } 52 | @include e (text) { 53 | padding-right: 10px; 54 | margin: 0; 55 | line-height: 1; 56 | } 57 | @include e (close-btn) { 58 | position: absolute; 59 | right: 10px; 60 | font-size: 24px; 61 | margin-top: 1px; 62 | cursor: pointer; 63 | i { 64 | color: #5e5e5e; 65 | } 66 | &:hover { 67 | i { 68 | color: #1c2438; 69 | } 70 | } 71 | } 72 | } 73 | .ru-message-list-enter, 74 | .ru-message-list-leave-active { 75 | opacity: 0; 76 | transform: translateY(-150%) translateX(-50%); 77 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-portal-webUI 2 | 基于Vue的门户网站UI组件 3 | 4 | ## 目前更新的有: 5 | P1.新闻选项卡滑动 6 | P2.平滑放大效果 7 | P3.轮播图 8 | P4.检索即时过滤功能 9 | P5.爱心点赞 10 | P6.粒子动效 11 | P7.滚动新闻 12 | 13 | (持续更新中...) 14 | 15 | > 在线查看效果 16 | 17 | [点击进入](https://hongqingcao.github.io/vue-portal-webUI/#/) 18 | 19 | ## 构建和设置 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 | # run all tests 32 | npm test 33 | ``` 34 | 35 | ## 项目目录结构 36 | 37 | ``` bash 38 | ├── README.md 项目介绍 39 | ├── index.html 入口页面 40 | ├── build 构建脚本目录 41 | │ ├── build-server.js 运行本地构建服务器,可以访问构建后的页面 42 | │ ├── build.js 生产环境构建脚本 43 | │ ├── dev-client.js 开发服务器热重载脚本,主要用来实现开发阶段的页面自动刷新 44 | │ ├── dev-server.js 运行本地开发服务器 45 | │ ├── utils.js 构建相关工具方法 46 | │ ├── webpack.base.conf.js wabpack基础配置 47 | │ ├── webpack.dev.conf.js wabpack开发环境配置 48 | │ └── webpack.prod.conf.js wabpack生产环境配置 49 | ├── config 项目配置 50 | │ ├── dev.env.js 开发环境变量 51 | │ ├── index.js 项目配置文件 52 | │ ├── prod.env.js 生产环境变量 53 | │ └── test.env.js 测试环境变量 54 | ├── package.json npm包配置文件,里面定义了项目的npm脚本,依赖包等信息 55 | ├── src 源码目录 56 | │ ├── main.js 入口js文件 57 | │ ├── app.vue 根组件 58 | │ ├── components 公共组件目录 59 | │ │ 60 | │ ├── assets 资源目录,这里的资源会被wabpack构建 61 | │ │ └── images 62 | │ │ └── logo.png 63 | │ ├── routes 前端路由 64 | │ │ └── index.js 65 | │ ├── mock mock数据目录 66 | │ │ └── mock.js 67 | │ └── pages 页面目录 68 | │ ├── index 首页 69 | │ └── pi.. 具体模块页 70 | ├── static 纯静态资源,不会被wabpack构建。 71 | ``` -------------------------------------------------------------------------------- /src/pages/pvii/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 滚动新闻 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-11 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-11 17:37:22 7 | */ 8 | 9 | 33 | 34 | 83 | 84 | -------------------------------------------------------------------------------- /src/components/theme-style/carousel.scss: -------------------------------------------------------------------------------- 1 | @include b (carousel) { 2 | position: relative; 3 | box-sizing: border-box; 4 | margin-bottom: 20px; 5 | @include e (arrow) { 6 | position: absolute; 7 | top: 50%; 8 | width: 32px; 9 | height: 32px; 10 | border-radius: 50%; 11 | outline: none; 12 | border: 0; 13 | padding: 0; 14 | margin: 0; 15 | text-align: center; 16 | background: rgba(31, 45, 61, .11); 17 | color: #fff; 18 | transform: translateY(-50%); 19 | transition: all .2s; 20 | z-index: 2; 21 | cursor: pointer; 22 | &:hover { 23 | background: rgba(31, 45, 61, .5); 24 | } 25 | @include when(left) { 26 | left: 16px; 27 | } 28 | @include when(right) { 29 | right: 16px; 30 | } 31 | } 32 | @include e (dots-wrapper) { 33 | position: absolute; 34 | bottom: 0; 35 | width: 100%; 36 | display: flex; 37 | height: 40px; 38 | justify-content: center; 39 | align-items: center; 40 | z-index: 2; 41 | @include when (outside) { 42 | position: static; 43 | } 44 | } 45 | @include e (dot) { 46 | width: 16px; 47 | height: 3px; 48 | margin: 0 3px; 49 | background: #8391a5; 50 | opacity: .3; 51 | cursor: pointer; 52 | transition: all .3s; 53 | &:hover { 54 | opacity: .7; 55 | } 56 | @include when (active) { 57 | width: 26px; 58 | opacity: 1; 59 | } 60 | } 61 | @include e (items) { 62 | position: relative; 63 | height: 300px; 64 | overflow: hidden; 65 | @include b (carousel-item) { 66 | display: block; 67 | box-sizing: border-box; 68 | position: absolute; 69 | height: 100%; 70 | width: 100%; 71 | @include when (active) { 72 | z-index: 2; 73 | } 74 | @include when (animate) { 75 | transition: all .3s; 76 | } 77 | } 78 | } 79 | } 80 | 81 | .arrow-left-enter, 82 | .arrow-left-leave-active { 83 | transform: translateY(-50%) translateX(-10px); 84 | opacity: 0; 85 | } 86 | 87 | .arrow-right-enter, 88 | .arrow-right-leave-active { 89 | transform: translateY(-50%) translateX(10px); 90 | opacity: 0; 91 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-portal-webUI", 3 | "version": "1.0.0", 4 | "description": "A common component of a portal site", 5 | "author": "HongqingCao", 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 | "axios": "^0.18.0", 14 | "vue": "^2.5.2", 15 | "vue-i18n": "^8.0.0", 16 | "vue-router": "^3.0.1" 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 | "mockjs": "^1.0.1-beta3", 36 | "node-notifier": "^5.1.2", 37 | "node-sass": "^4.9.0", 38 | "optimize-css-assets-webpack-plugin": "^3.2.0", 39 | "ora": "^1.2.0", 40 | "portfinder": "^1.0.13", 41 | "postcss-import": "^11.0.0", 42 | "postcss-loader": "^2.0.8", 43 | "postcss-url": "^7.2.1", 44 | "rimraf": "^2.6.0", 45 | "sass-loader": "^7.0.3", 46 | "semver": "^5.3.0", 47 | "shelljs": "^0.7.6", 48 | "uglifyjs-webpack-plugin": "^1.1.1", 49 | "url-loader": "^0.5.8", 50 | "vue-loader": "^13.3.0", 51 | "vue-particles": "^1.0.9", 52 | "vue-style-loader": "^3.0.1", 53 | "vue-template-compiler": "^2.5.2", 54 | "webpack": "^3.6.0", 55 | "webpack-bundle-analyzer": "^2.9.0", 56 | "webpack-dev-server": "^2.9.1", 57 | "webpack-merge": "^4.1.0" 58 | }, 59 | "engines": { 60 | "node": ">= 6.0.0", 61 | "npm": ">= 3.0.0" 62 | }, 63 | "browserslist": [ 64 | "> 1%", 65 | "last 2 versions", 66 | "not ie <= 8" 67 | ] 68 | } 69 | -------------------------------------------------------------------------------- /src/pages/piv/index.scss: -------------------------------------------------------------------------------- 1 | 2 | .search-box { 3 | align-items: center; 4 | justify-content: center; 5 | flex-direction: column; 6 | .search-wrapper { 7 | position: relative; 8 | height: 40px; 9 | label { 10 | position: absolute; 11 | font-size: 12px; 12 | color: rgba(0, 0, 0, 0.5); 13 | top: 8px; 14 | left: 12px; 15 | z-index: -1; 16 | transition: .15s all ease-in-out; 17 | } 18 | input { 19 | padding: 4px 12px; 20 | color: rgba(0, 0, 0, 0.7); 21 | border: 1px solid rgba(0, 0, 0, 0.12); 22 | transition: .15s all ease-in-out; 23 | background: white; 24 | &:focus { 25 | outline: none; 26 | transform: scale(1.05); 27 | & + label { 28 | font-size: 10px; 29 | transform: translateY(-24px) translateX(-12px); 30 | } 31 | } 32 | &::-webkit-input-placeholder { 33 | font-size: 12px; 34 | color: rgba(0, 0, 0, 0.5); 35 | font-weight: 100; 36 | } 37 | } 38 | } 39 | .wrapper { 40 | width: 100%; 41 | flex-wrap: wrap; 42 | padding: 20px; 43 | .card { 44 | float: left; 45 | box-shadow: rgba(0, 0, 0, 0.11765) 0px 1px 6px, rgba(0, 0, 0, 0.11765) 0px 1px 4px; 46 | width: calc((100% - 72px)/3); 47 | margin: 12px; 48 | transition: .15s all ease-in-out; 49 | a { 50 | text-decoration: none; 51 | padding: 12px; 52 | color: #03A9F4; 53 | font-size: 24px; 54 | display: flex; 55 | flex-direction: column; 56 | align-items: center; 57 | img { 58 | height: 100px; 59 | } 60 | small { 61 | font-size: 10px; 62 | padding: 4px; 63 | } 64 | } 65 | &:hover { 66 | transform: scale(1.1); 67 | } 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /src/components/github/src/github.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 | 18 | 59 | 60 | -------------------------------------------------------------------------------- /src/components/mixins/collapse-transtion.js: -------------------------------------------------------------------------------- 1 | // From https://github.com/ElemeFE/element/blob/dev/src/transitions/collapse-transition.js, Thanks! 2 | 3 | import {addClass, removeClass} from '../utils' 4 | const Transition = { 5 | beforeEnter(el) { 6 | addClass(el, 'collapse-transition'); 7 | if (!el.dataset) el.dataset = {} 8 | el.dataset.oldPaddingTop = el.style.paddingTop 9 | el.dataset.oldPaddingBottom = el.style.paddingBottom 10 | el.style.height = '0' 11 | el.style.paddingTop = '0' 12 | el.style.paddingBottom = '0' 13 | }, 14 | enter(el, done) { 15 | el.dataset.oldOverflow = el.style.oldOverflow 16 | if (el.scrollHeight !== 0) { 17 | el.style.height = `${el.scrollHeight}px` 18 | el.style.paddingTop = el.dataset.oldPaddingTop 19 | el.style.paddingBottom = el.dataset.oldPaddingBottom 20 | } else { 21 | el.style.height = '' 22 | el.style.paddingTop = el.dataset.oldPaddingTop 23 | el.style.paddin = el.dataset.oldPaddingBottom 24 | } 25 | el.style.overflow = 'hidden' 26 | }, 27 | afterEnter(el) { 28 | removeClass(el, 'collapse-transition') 29 | el.style.height = '' 30 | el.style.overflow = el.dataset.oldOverflow 31 | }, 32 | 33 | beforeLeave(el) { 34 | if (!el.dataset) el.dataset = {} 35 | el.dataset.oldPaddingTop = el.style.paddingTop 36 | el.dataset.oldPaddingBottom = el.style.paddingBottom 37 | el.dataset.oldOverflow = el.style.overflow 38 | el.style.height = `${el.scrollHeight}px` 39 | el.style.overflow = 'hidden' 40 | }, 41 | leave(el, done) { 42 | if (el.scrollHeight !== 0) { 43 | addClass(el, 'collapse-transition') 44 | el.style.height = 0 45 | el.style.paddingTop = 0 46 | el.style.paddingBottom = 0 47 | } 48 | }, 49 | afterLeave(el) { 50 | removeClass(el, 'collapse-transition') 51 | el.style.height = '' 52 | el.style.overflow = el.dataset.oldOverflow 53 | el.style.paddingTop = el.dataset.oldPaddingTop 54 | el.style.paddingBottom = el.dataset.oldPaddingBottom 55 | } 56 | } 57 | export default { 58 | name: 'CollapseTransition', 59 | functional: true, 60 | render(h, { children }) { 61 | const data = { 62 | on: Transition 63 | } 64 | return h('transition', data, children) 65 | } 66 | } -------------------------------------------------------------------------------- /src/components/menu/src/submenu.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 92 | 93 | -------------------------------------------------------------------------------- /src/components/utils.js: -------------------------------------------------------------------------------- 1 | export const findParentComponent = function (ctx, componentName) { 2 | let componentNames = Array.isArray(componentName) ? componentName : [componentName] 3 | let parent = ctx.$parent 4 | let name = parent.$options.name 5 | while (parent && componentNames.indexOf(name) < 0) { 6 | parent = parent.$parent 7 | name = parent ? parent.$options.name : '' 8 | } 9 | return parent 10 | } 11 | 12 | export const findParentComponents = function (ctx, componentName) { 13 | let components = [] 14 | let parent = ctx.$parent 15 | while (parent) { 16 | componentName === parent.$options.name ? components.push(parent) : '' 17 | parent = parent.$parent 18 | } 19 | return components 20 | } 21 | 22 | export const findChildrenComponents = function (ctx, componentName) { 23 | let components = [] 24 | if (ctx) { 25 | let stack = [ctx] 26 | while(stack.length != 0) { 27 | let item = stack.pop() 28 | if (item.$options.name === componentName) components.push(item) 29 | let children = item.$children 30 | for (let i = children.length - 1; i >= 0; i--) { 31 | stack.push(children[i]) 32 | } 33 | } 34 | } 35 | return components 36 | } 37 | 38 | export const addClass = function (el, className) { 39 | if (!el || !className) return 40 | className = className.trim() 41 | const classList = className.split(' ') 42 | for (let i = 0; i < classList.length; i++) { 43 | if (classList[i].includes(' ')) throw new Error('className can not contain space!') 44 | el.className += ` ${classList[i]}` 45 | } 46 | } 47 | 48 | export const removeClass = function (el, className) { 49 | if (!el || !className) return 50 | className = className.trim() 51 | const classList = className.split(' ') 52 | let nowClassName = ` ${el.className} ` 53 | for (let i = 0; i < classList.length; i++) { 54 | if (classList[i].includes(' ')) throw new Error('className can not contain space!') 55 | if (nowClassName.includes(classList[i])) nowClassName = nowClassName.replace(` ${classList[i]} `, ' ') 56 | } 57 | el.className = nowClassName.trim() 58 | } 59 | 60 | export const findSiblingComponents = function (ctx, componentName) { 61 | let components = ctx.$parent.$children.filter(item => item.$options.name === componentName) 62 | components.splice(components.indexOf(ctx), 1) 63 | return components 64 | } -------------------------------------------------------------------------------- /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 | autoOpenBrowser: true, 20 | errorOverlay: true, 21 | //notifyOnErrors: false, 22 | notifyOnErrors: true, 23 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- 24 | 25 | 26 | /** 27 | * Source Maps 28 | */ 29 | 30 | // https://webpack.js.org/configuration/devtool/#development 31 | devtool: 'cheap-module-eval-source-map', 32 | 33 | // If you have problems debugging vue-files in devtools, 34 | // set this to false - it *may* help 35 | // https://vue-loader.vuejs.org/en/options.html#cachebusting 36 | cacheBusting: true, 37 | // cssSourceMap: false, 38 | cssSourceMap: true 39 | }, 40 | 41 | build: { 42 | // Template for index.html 43 | index: path.resolve(__dirname, '../dist/index.html'), 44 | 45 | // Paths 46 | assetsRoot: path.resolve(__dirname, '../dist'), 47 | assetsSubDirectory: 'static', 48 | assetsPublicPath: './', 49 | //assetsPublicPath: './', //打包要改 50 | 51 | /** 52 | * Source Maps 53 | */ 54 | 55 | productionSourceMap: true, 56 | // https://webpack.js.org/configuration/devtool/#production 57 | devtool: '#source-map', 58 | 59 | // Gzip off by default as many popular static hosts such as 60 | // Surge or Netlify already gzip all static assets for you. 61 | // Before setting to `true`, make sure to: 62 | // npm install --save-dev compression-webpack-plugin 63 | productionGzip: false, 64 | productionGzipExtensions: ['js', 'css'], 65 | 66 | // Run the build command with an extra argument to 67 | // View the bundle analyzer report after build finishes: 68 | // `npm run build --report` 69 | // Set to `true` or `false` to always turn it on or off 70 | bundleAnalyzerReport: process.env.npm_config_report 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/components/theme-style/notification.scss: -------------------------------------------------------------------------------- 1 | @include b (notification) { 2 | box-sizing: border-box; 3 | position: fixed; 4 | right: 16px; 5 | width: 330px; 6 | z-index: 1000; 7 | opacity: 1; 8 | transition: opacity .2s, transform .3s, right .3s, top .3s; 9 | @include e (icon) { 10 | position: absolute; 11 | top: 12px; 12 | left: 16px; 13 | font-size: 36px; 14 | z-index: 1001; 15 | color: #fe6f3d; 16 | @include when (success) { 17 | color: #27c24c; 18 | } 19 | @include when (error) { 20 | color: #ef5050; 21 | } 22 | @include when (warning) { 23 | color: #ff9900; 24 | } 25 | } 26 | @include e (wrapper) { 27 | position: relative; 28 | padding: 16px; 29 | border-radius: 4px; 30 | margin-bottom: 10px; 31 | box-shadow: 0 1px 6px rgba(0, 0, 0, .2); 32 | line-height: 1; 33 | overflow: hidden; 34 | background: #fff; 35 | &:after { 36 | content: ''; 37 | display: block; 38 | width: 4px; 39 | position: absolute; 40 | top: 0; 41 | bottom: 0; 42 | left: 0; 43 | background-color: #fe6f3d; 44 | } 45 | @include when (success) { 46 | &:after { 47 | background-color: #27c24c; 48 | } 49 | } 50 | @include when (warning) { 51 | &:after { 52 | background-color: #ff9900; 53 | } 54 | } 55 | @include when (error) { 56 | &:after { 57 | background-color: #ef5050; 58 | } 59 | } 60 | @include when (has-icon) { 61 | padding-left: 60px; 62 | } 63 | } 64 | @include e (title) { 65 | margin-bottom: 8px; 66 | font-weight: 700; 67 | font-size: 14px; 68 | line-height: 17px; 69 | padding-right: 10px; 70 | color: #1c2438; 71 | overflow: hidden; 72 | text-overflow: ellipsis; 73 | white-space: nowrap; 74 | } 75 | @include e (text) { 76 | font-size: 12px; 77 | line-height: 17px; 78 | } 79 | @include e (close-btn) { 80 | position: absolute; 81 | top: 6px; 82 | right: 10px; 83 | cursor: pointer; 84 | i { 85 | font-size: 24px; 86 | color: #5e5e5e; 87 | } 88 | &:hover { 89 | i { 90 | color: #1c2438; 91 | } 92 | } 93 | } 94 | } 95 | .ru-notification-list-enter { 96 | right: 0; 97 | transform: translateX(100%); 98 | } 99 | .ru-notification-list-leave-active { 100 | opacity: 0; 101 | } -------------------------------------------------------------------------------- /src/components/menu/src/menu.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 101 | -------------------------------------------------------------------------------- /src/components/theme-style/menu.scss: -------------------------------------------------------------------------------- 1 | @import "mixins/index"; 2 | @import "common/var"; 3 | 4 | 5 | @mixin menu-item { 6 | box-sizing: border-box; 7 | position: relative; 8 | height: 56px; 9 | padding: 0 20px; 10 | font-size: 14px; 11 | line-height: 50px; 12 | color: $--menu-item-color; 13 | list-style: none; 14 | cursor: pointer; 15 | white-space: nowrap; 16 | [class^="iconfont"] { 17 | width: 24px; 18 | margin-right: 10px; 19 | font-size: 20px; 20 | text-align: center; 21 | vertical-align: middle 22 | } 23 | } 24 | @include b(menu) { 25 | position: relative; 26 | margin: 0; 27 | padding-left: 0; 28 | list-style: none; 29 | border-right: 1px solid #e6e6e6; 30 | background-color: $--menu-item-fill; 31 | @include m(vertical) { 32 | & .vp-menu { 33 | border-right: none; 34 | } 35 | } 36 | @include m(dark) { 37 | i, 38 | .vp-submenu__title, 39 | .vp-menu-item { 40 | color: mix($--color-black, $--color-white, 20%); 41 | } 42 | background-color: mix($--color-white, $--menu-item-dark-fill, 7%); 43 | .vp-menu { 44 | background-color: $--menu-item-dark-fill; 45 | } 46 | } 47 | @include c(vertical, light) { 48 | .vp-submenu__title, 49 | .vp-menu-item { 50 | &:hover { 51 | background-color: $--background-color-base; 52 | } 53 | } 54 | .vp-menu-item, 55 | .vp-submenu__title { 56 | i { 57 | color: #5a6b76; 58 | } 59 | @include when(active) { 60 | color: $--color-primary; 61 | border-right: 2px solid $--color-primary; 62 | [class^="iconfont"] { 63 | color: $--color-primary; 64 | } 65 | } 66 | } 67 | } 68 | @include c(vertical, dark) { 69 | .vp-submenu__title, 70 | .vp-menu-item { 71 | &:hover { 72 | color: #fff; 73 | background-color: $--menu-item-dark-fill; 74 | & >i { 75 | color: #fff; 76 | } 77 | } 78 | } 79 | .vp-menu-item { 80 | @include when(active) { 81 | color: $--color-primary; 82 | [class^="icon-"] { 83 | color: $--color-primary; 84 | } 85 | } 86 | } 87 | } 88 | } 89 | @include b(menu-item) { 90 | @include menu-item; 91 | } 92 | @include b(submenu) { 93 | margin: 0; 94 | padding-left: 0; 95 | list-style: none; 96 | [class^="vp-icon-"] { 97 | width: 24px; 98 | margin-right: 5px; 99 | font-size: 20px; 100 | text-align: center; 101 | vertical-align: middle 102 | } 103 | @include e(title) { 104 | @include menu-item; 105 | > .vp-submenu__title-icon { 106 | position: absolute; 107 | top: 0; 108 | right: 20px; 109 | transition: transform .4s; 110 | font-size: 14px; 111 | } 112 | } 113 | @include when(open) { 114 | > .vp-submenu__title .vp-submenu__title-icon { 115 | transform: rotateZ(180deg); 116 | } 117 | } 118 | } 119 | 120 | -------------------------------------------------------------------------------- /src/components/theme-style/slider.scss: -------------------------------------------------------------------------------- 1 | @include b(slider-wrapper) { 2 | position: relative; 3 | @include m(horizon) { 4 | width: 90%; 5 | height: 6px; 6 | margin: 16px 0; 7 | @include when(has-input) { 8 | box-sizing: border-box; 9 | padding-right: 100px; 10 | } 11 | @include b(dot) { 12 | transform: translateX(-50%); 13 | &:hover { 14 | transform: translateX(-50%) scale(1.2); 15 | } 16 | } 17 | @include when(disabled) { 18 | @include b(dot) { 19 | border-color: $--color-disabled; 20 | cursor: not-allowed; 21 | &:hover { 22 | transform: translateX(-50%); 23 | } 24 | } 25 | } 26 | .ru-slider-wrapper__input { 27 | top: -13px; 28 | right: 0; 29 | } 30 | } 31 | @include m(vertical) { 32 | width: 6px; 33 | margin: 0 16px; 34 | @include b(slider-track) { 35 | bottom: 0; 36 | } 37 | @include when(has-input) { 38 | padding-right: 100px; 39 | } 40 | @include b(dot) { 41 | left: -7px; 42 | transform: translateY(50%); 43 | &:hover { 44 | transform: translateY(50%) scale(1.2); 45 | } 46 | } 47 | @include when(disabled) { 48 | @include b(dot) { 49 | border-color: $--color-disabled; 50 | cursor: not-allowed; 51 | &:hover { 52 | transform: translateY(50%); 53 | } 54 | } 55 | } 56 | .ru-slider-wrapper__input { 57 | bottom: 0; 58 | right: 0; 59 | } 60 | } 61 | @include e(input) { 62 | position: absolute; 63 | box-sizing: border-box; 64 | width: 80px; 65 | height: 30px; 66 | padding: 10px; 67 | outline: none; 68 | border: 1px solid #e4e4e4; 69 | border-radius: 2px; 70 | } 71 | @include when(disabled) { 72 | @include b(slider-track-wrapper) { 73 | cursor: not-allowed; 74 | @include b(slider-track) { 75 | cursor: not-allowed; 76 | background-color: $--color-disabled; 77 | } 78 | } 79 | } 80 | } 81 | 82 | @include b(slider-track-wrapper) { 83 | position: relative; 84 | width: 100%; 85 | height: 100%; 86 | border-radius: 3px; 87 | background-color: #e4e4e4; 88 | cursor: pointer; 89 | @include b(slider-track) { 90 | position: absolute; 91 | height: 100%; 92 | width: 100%; 93 | border-radius: 3px; 94 | background-color: $--color-primary; 95 | z-index: 99; 96 | } 97 | @include b(dot) { 98 | position: absolute; 99 | bottom: -7px; 100 | width: 16px; 101 | height: 16px; 102 | border-radius: 50%; 103 | border: 2px solid $--color-primary; 104 | background-color: #fff; 105 | cursor: pointer; 106 | transition: transform .2s; 107 | z-index: 100; 108 | } 109 | @include b(break-point) { 110 | position: absolute; 111 | width: 6px; 112 | height: 6px; 113 | border-radius: 50%; 114 | background-color: #fff; 115 | } 116 | } -------------------------------------------------------------------------------- /src/assets/css/base.scss: -------------------------------------------------------------------------------- 1 | 2 | * { 3 | -webkit-font-smoothing: antialiased; 4 | -webkit-overflow-scrolling: touch; 5 | -webkit-tap-highlight-color: rgba(0,0,0,0); 6 | -webkit-text-size-adjust: none; 7 | -webkit-touch-callout: none; 8 | color: #34495e; 9 | font-family: "Microsoft Yahei",sans-serif; 10 | font-size: 15px; 11 | letter-spacing: 0; 12 | margin: 0; 13 | box-sizing: border-box; 14 | overflow-x: hidden; 15 | } 16 | a{ 17 | text-decoration: none; 18 | cursor:pointer; 19 | } 20 | //#app { 21 | // font-size: 30px; 22 | // font-weight: lighter; 23 | // margin: 0 auto; 24 | // text-align: center 25 | //} 26 | #app { 27 | -webkit-font-smoothing: antialiased; 28 | -moz-osx-font-smoothing: grayscale; 29 | height: 100%; 30 | overflow: hidden; 31 | header { 32 | position: fixed; 33 | left: 50%; 34 | transform: translateX(-50%); 35 | width: 1140px; 36 | height: 90px; 37 | margin: 0 auto; 38 | z-index: 9; 39 | background:rgba(255,255,255,0.7); 40 | span, 41 | a { 42 | display: inline-block; 43 | box-sizing: border-box; 44 | position: absolute; 45 | height: 90px; 46 | width: 90px; 47 | line-height: 88px; 48 | text-align: center; 49 | font-size: 16px; 50 | cursor: pointer; 51 | color: #5e5e5e; 52 | text-decoration: none; 53 | &:first-child { 54 | right: 100px; 55 | border-bottom: 2px solid #fe6f3d; 56 | } 57 | &:nth-of-type(2) { 58 | right: 0; 59 | } 60 | } 61 | } 62 | .content-wrapper { 63 | box-sizing: border-box; 64 | width: 1140px; 65 | height: 100%; 66 | margin: 0px auto 0 auto; 67 | padding-top: 90px; 68 | overflow: auto; 69 | h2 { 70 | font-size: 28px; 71 | &+p { 72 | margin: 14px 0; 73 | } 74 | } 75 | h3 { 76 | font-size: 22px; 77 | &+p { 78 | margin: 14px 0; 79 | } 80 | } 81 | section > h3 { 82 | margin: 50px 0 20px; 83 | } 84 | > .vp-menu { 85 | position: fixed; 86 | top: 0; 87 | bottom: 0; 88 | width: 240px; 89 | margin-top: 90px; 90 | border-right: none; 91 | overflow-y: auto; 92 | z-index: 99; 93 | .vp-menu-item { 94 | border-right: none; 95 | } 96 | } 97 | .router-view { 98 | box-sizing: border-box; 99 | padding: 10px 0 80px 270px; 100 | } 101 | } 102 | } 103 | .router-view > table { 104 | width: 100%; 105 | border: 1px solid #e4e4e4; 106 | border-collapse: collapse; 107 | thead { 108 | background-color: #f7f7f7; 109 | font-weight: 600; 110 | } 111 | th, 112 | td { 113 | padding: 8px 16px; 114 | border: 1px solid #e4e4e4; 115 | text-align: left; 116 | } 117 | td { 118 | font-size: 14px; 119 | font-family: Consolas; 120 | color: #495056; 121 | } 122 | th { 123 | min-width: 100px; 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/pages/pi/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 新闻选项卡 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-10 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-10 17:37:22 7 | */ 8 | 45 | 46 | 84 | -------------------------------------------------------------------------------- /src/pages/pii/imgDialog.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 图片功能 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-1 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-1 17:37:22 7 | */ 8 | 22 | 23 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /src/components/backtop/src/backtop.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 115 | 116 | 139 | 140 | -------------------------------------------------------------------------------- /src/pages/index/index.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 首页页面布局样式 3 | * @Author: HongqingCao 4 | * @Date: 2018-06-25 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-06-27 12:29:31 7 | */ 8 | .cover{ 9 | display: flex; 10 | align-items: center; 11 | background-position: 50%; 12 | background-repeat: no-repeat; 13 | background-size: cover; 14 | .cover-main{ 15 | -ms-flex: 1; 16 | flex: 1; 17 | margin: -20px 16px 0; 18 | text-align: center; 19 | z-index: 1; 20 | p{ 21 | margin: 1em 0; 22 | } 23 | h1{ 24 | color: inherit; 25 | font-size: 37px; 26 | margin: .625rem 0 1rem; 27 | position: relative; 28 | text-align: center; 29 | } 30 | a{ 31 | display: block; 32 | text-decoration: none; 33 | :hover{ 34 | cursor: pointer; 35 | } 36 | } 37 | .anchor{ 38 | display: inline-block; 39 | text-decoration: none; 40 | transition: all .3s; 41 | color:#35495e; 42 | font-size: 37px; 43 | } 44 | blockquote{ 45 | text-align: center; 46 | p{ 47 | strong{ 48 | font-size: 22px; 49 | color:#35495e; 50 | font-weight: normal; 51 | } 52 | } 53 | } 54 | ul{ 55 | line-height: 1.8; 56 | list-style-type: none; 57 | margin: 1em auto; 58 | max-width: 500px; 59 | padding: 0; 60 | overflow: hidden; 61 | li{ 62 | float: left; 63 | padding: 5px; 64 | a{ 65 | cursor: pointer; 66 | display: block; 67 | transition: color 1s; 68 | &:hover{ 69 | color:#41b663; 70 | } 71 | &:after{ 72 | content: "、"; 73 | height: 100%; 74 | width: 5px; 75 | line-height: 100%; 76 | } 77 | } 78 | sup { 79 | position:absolute; 80 | margin-top:-37px; 81 | width:30px; 82 | height:15px; 83 | background-image: url(../../assets/new.gif); 84 | background-repeat: no-repeat; 85 | } 86 | } 87 | } 88 | .github{ 89 | border: 1px solid var(--theme-color,#41b663); 90 | border-radius: 2rem; 91 | box-sizing: border-box; 92 | color: var(--theme-color,#41b663); 93 | display: inline-block; 94 | font-size: 1.05rem; 95 | letter-spacing: .1rem; 96 | margin: .5rem 1rem; 97 | padding: .75em 2rem; 98 | text-decoration: none; 99 | transition: all .15s ease; 100 | } 101 | .getstart{ 102 | border: 1px solid var(--theme-color,#41b663); 103 | border-radius: 2rem; 104 | box-sizing: border-box; 105 | background-color: var(--theme-color,#41b663); 106 | color: #fff; 107 | display: inline-block; 108 | font-size: 1.05rem; 109 | letter-spacing: .1rem; 110 | margin: .5rem 1rem; 111 | padding: .75em 2rem; 112 | text-decoration: none; 113 | transition: all .15s ease; 114 | } 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/pages/piv/index.vue: -------------------------------------------------------------------------------- 1 | /* 2 | * @Introduce: 检索即时 3 | * @Author: HongqingCao 4 | * @Date: 2018-08-10 17:37:22 5 | * @Last Modified by: HongqingCao 6 | * @Last Modified time: 2018-08-10 17:37:22 7 | */ 8 | 32 | 33 | 119 | -------------------------------------------------------------------------------- /src/components/theme-style/button.scss: -------------------------------------------------------------------------------- 1 | @mixin disabled($color) { 2 | cursor: not-allowed; 3 | background-color: mix($color, $--color-white); 4 | border-color: mix($color, $--color-white); 5 | color: #fff; 6 | i { 7 | color: #fff; 8 | } 9 | &:hover { 10 | background-color: mix($color, $--color-white); 11 | border-color: mix($color, $--color-white); 12 | color: #fff; 13 | } 14 | } 15 | @mixin disabledPlain($color) { 16 | background-color: mix($--color-white, $color, 80%); 17 | color: mix($color, $--color-white); 18 | i { 19 | color: mix($color, $--color-white); 20 | } 21 | &:hover { 22 | background-color: mix($--color-white, $color, 80%); 23 | color: mix($color, $--color-white); 24 | } 25 | } 26 | @mixin disabledDefault { 27 | cursor: not-allowed; 28 | color: $--color-text-disabled; 29 | border-color: $--color-disabled; 30 | i { 31 | color: $--color-text-disabled; 32 | } 33 | &:hover { 34 | background-color: inherit; 35 | } 36 | } 37 | @mixin button ($color: "") { 38 | padding: 6px 15px; 39 | font-size: 12px; 40 | border-radius: 2px; 41 | outline: none; 42 | cursor: pointer; 43 | i+span { 44 | margin-left: 4px; 45 | } 46 | @if ($color != "") { 47 | background-color: $color; 48 | border: 1px solid $color; 49 | color: #fff; 50 | i { 51 | color: #fff; 52 | } 53 | &:hover { 54 | background-color: mix($--color-white, $color, 10%); 55 | color: #fff; 56 | border-color: $color; 57 | i { 58 | color: #fff; 59 | } 60 | } 61 | @include when(disabled) { 62 | @include disabled($color); 63 | } 64 | @include when(loading) { 65 | @include disabled($color); 66 | } 67 | @include when(plain) { 68 | background-color: mix($--color-white, $color, 80%); 69 | color: $color; 70 | &:hover { 71 | background-color: $color; 72 | color: #fff; 73 | } 74 | @include when(disabled) { 75 | @include disabledPlain($color); 76 | } 77 | @include when(loading) { 78 | @include disabledPlain($color); 79 | } 80 | } 81 | } 82 | @else { 83 | background-color: #fff; 84 | border: 1px solid #e4e4e4; 85 | color: #5e5e5e; 86 | i { 87 | color: #5e5e5e; 88 | } 89 | &:hover { 90 | background-color: mix($--color-white, $--color-primary, 80%); 91 | color: $--color-primary; 92 | border-color: $--color-primary; 93 | i { 94 | color: $--color-primary; 95 | } 96 | } 97 | @include when(disabled) { 98 | @include disabledDefault; 99 | } 100 | @include when(loading) { 101 | @include disabledDefault; 102 | } 103 | } 104 | } 105 | 106 | @include b(button) { 107 | @include button; 108 | @include m(primary) { 109 | @include button($--color-primary); 110 | } 111 | @include m(success) { 112 | @include button($--color-success); 113 | } 114 | @include m(warning) { 115 | @include button($--color-warning); 116 | } 117 | @include m(danger) { 118 | @include button($--color-danger); 119 | } 120 | @include m(info) { 121 | @include button($--color-info); 122 | } 123 | @include m(dashed) { 124 | border-style: dashed; 125 | } 126 | @include m(text) { 127 | border-style: none; 128 | color: $--color-text-primary; 129 | background-color: inherit; 130 | &:hover { 131 | color: $--color-primary; 132 | background-color: inherit; 133 | } 134 | } 135 | @include m(large) { 136 | padding: 8px 15px; 137 | } 138 | @include m(small) { 139 | padding: 4px 10px; 140 | } 141 | @include m(long) { 142 | width: 100%; 143 | } 144 | @include when(round) { 145 | border-radius: 20px; 146 | } 147 | @include when(circle) { 148 | width: 32px; 149 | height: 32px; 150 | border-radius: 50%; 151 | padding: 0; 152 | i { 153 | font-size: 18px; 154 | } 155 | } 156 | } -------------------------------------------------------------------------------- /src/components/theme-style/date-picker.scss: -------------------------------------------------------------------------------- 1 | @include b (date-picker) { 2 | display: inline-block; 3 | position: relative; 4 | box-sizing: border-box; 5 | width: 223px; 6 | height: 42px; 7 | padding-left: 30px; 8 | border: 1px solid #e4e4e4; 9 | border-radius: 4px; 10 | .ru-icon-ios-calendar-outline { 11 | position: absolute; 12 | top: 50%; 13 | left: 6px; 14 | transform: translateY(-50%); 15 | color: #e4e4e4; 16 | font-size: 25px; 17 | } 18 | @include e (input) { 19 | box-sizing: border-box; 20 | width: 190px; 21 | height: 40px; 22 | outline: none; 23 | border: 0; 24 | &::-webkit-input-placeholder { 25 | color: #a1a1a1; 26 | } 27 | } 28 | @include b (date-wrapper) { 29 | position: absolute; 30 | left: 0; 31 | top: 100%; 32 | transform: translateY(10px); 33 | border: 1px solid #e4e4e4; 34 | border-radius: 2px; 35 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); 36 | background-color: #fff; 37 | z-index: 100; 38 | @include b (date-options) { 39 | box-sizing: border-box; 40 | position: absolute; 41 | width: 110px; 42 | height: 100%; 43 | padding-top: 10px; 44 | border-right: 1px solid #e4e4e4; 45 | @include e (btn) { 46 | display: inline-block; 47 | width: 100%; 48 | height: 30px; 49 | border: 0; 50 | outline: none; 51 | background-color: #fff; 52 | color: #5e5e5e; 53 | text-align: left; 54 | cursor: pointer; 55 | &:hover { 56 | color: #fe6f3d; 57 | } 58 | } 59 | } 60 | @include b (date-panel) { 61 | box-sizing: border-box; 62 | width: 320px; 63 | padding: 10px; 64 | z-index: 100; 65 | @include when (show-options) { 66 | width: 431px; 67 | padding-left: 121px; 68 | } 69 | @include e (header) { 70 | border-bottom: 1px solid #e4e4e4; 71 | } 72 | @include e (options) { 73 | text-align: center; 74 | margin-bottom: 15px; 75 | span { 76 | display: inline-block; 77 | text-align: center; 78 | cursor: pointer; 79 | &:hover { 80 | color: #fe6f3d; 81 | } 82 | } 83 | .arrow { 84 | width: 20px; 85 | } 86 | } 87 | @include e (year) { 88 | width: 55px; 89 | font-size: 16px; 90 | margin-left: 50px; 91 | } 92 | @include e (month) { 93 | width: 40px; 94 | font-size: 16px; 95 | margin-right: 50px; 96 | } 97 | @include e (double-arrow-left) { 98 | letter-spacing: -2px; 99 | .ios-arrow-left { 100 | letter-spacing: 0; 101 | } 102 | } 103 | @include e (double-arrow-right) { 104 | letter-spacing: -2px; 105 | .ios-arrow-right { 106 | letter-spacing: 0; 107 | } 108 | } 109 | @include e (weekday) { 110 | letter-spacing: -4px; 111 | font-size: 12px; 112 | span { 113 | display: inline-block; 114 | box-sizing: border-box; 115 | width: 42px; 116 | height: 42px; 117 | padding: 5px; 118 | line-height: 30px; 119 | text-align: center; 120 | letter-spacing: 0; 121 | } 122 | } 123 | @include e (body) { 124 | margin-top: 10px; 125 | letter-spacing: -4px; 126 | span { 127 | display: inline-block; 128 | box-sizing: border-box; 129 | width: 42px; 130 | height: 42px; 131 | padding: 5px; 132 | line-height: 30px; 133 | text-align: center; 134 | letter-spacing: 0; 135 | @include when (disabled) { 136 | color: #e4e4e4; 137 | } 138 | .ru-date-panel__item { 139 | width: 24px; 140 | height: 24px; 141 | padding: 0; 142 | cursor: pointer; 143 | line-height: 24px; 144 | border-radius: 50%; 145 | &:hover { 146 | background-color: mix($--color-white, $--color-primary, 50%); 147 | color: #fff; 148 | } 149 | @include when(active) { 150 | background-color: $--color-primary; 151 | color: #fff; 152 | } 153 | } 154 | } 155 | } 156 | } 157 | } 158 | } -------------------------------------------------------------------------------- /src/pages/pv/index.scss: -------------------------------------------------------------------------------- 1 | .container{ 2 | padding-right: 15px; 3 | padding-left: 15px; 4 | margin-right: auto; 5 | margin-left: auto; 6 | width: 400px; 7 | padding: 15px; 8 | .user { 9 | -webkit-box-align: center; 10 | -webkit-align-items: center; 11 | -ms-flex-align: center; 12 | align-items: center; 13 | border: 1px solid #ddd; 14 | border-bottom: 0; 15 | padding: 1rem 1.5rem; 16 | .img { 17 | height: 90px; 18 | width: 80px; 19 | float: left; 20 | img{ 21 | height: 80px; 22 | width: 80px; 23 | border-radius: 50%; 24 | }; 25 | } 26 | .info { 27 | float: left; 28 | width: calc(100%-80px); 29 | padding-left: 10px; 30 | -webkit-box-pack: justify; 31 | -webkit-justify-content: space-between; 32 | -ms-flex-pack: justify; 33 | justify-content: space-between; 34 | line-height: 80px; 35 | .title{ 36 | float: left; 37 | } 38 | .box{ 39 | float: right; 40 | a{ 41 | display: block; 42 | width: 50px; 43 | text-align: center; 44 | &:before { 45 | overflow: hidden; 46 | position: absolute; 47 | opacity: 0; 48 | width: 40px; 49 | height: 18px; 50 | line-height: 18px; 51 | margin-top: -10px; 52 | margin-left: -10px; 53 | text-align: center; 54 | z-index: 0; 55 | background: rgba(51, 51, 51, 0.75); 56 | color: #fff; 57 | padding: 5px; 58 | border-radius: 2px; 59 | -webkit-transition: 300ms ease; 60 | transition: 300ms ease; 61 | -webkit-transform: translateY(0); 62 | transform: translateY(0); 63 | } 64 | i { 65 | font-size: 30px; 66 | line-height: 30px; 67 | font-family: arial; 68 | z-index: 5; 69 | color: #c5c5c5; 70 | } 71 | &.like{ 72 | color: #FFA07A; 73 | &:before { 74 | content: 'Like'; 75 | } 76 | i{ 77 | color: #FFA07A; 78 | } 79 | &:hover{ 80 | &:before{ 81 | opacity: 1; 82 | } 83 | } 84 | } 85 | &.love { 86 | color: #FF7F50; 87 | &:before { 88 | content: 'Love'; 89 | } 90 | i{ 91 | color: #FF7F50; 92 | } 93 | &:hover{ 94 | &:before{ 95 | opacity: 1; 96 | } 97 | } 98 | } 99 | &.stalker { 100 | color: #FF4500; 101 | &:before { 102 | content: 'Love+1'; 103 | } 104 | i{ 105 | color: #FF4500; 106 | } 107 | &:hover{ 108 | &:before{ 109 | opacity: 1; 110 | } 111 | } 112 | } 113 | } 114 | } 115 | } 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /docs/static/js/manifest.3ad1d5771e9b13dbdad2.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///webpack/bootstrap 387ef744035c3a444f39"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 387ef744035c3a444f39"],"sourceRoot":""} -------------------------------------------------------------------------------- /src/components/slider/src/slider.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 87 | 88 | 204 | -------------------------------------------------------------------------------- /src/pages/pii/index.scss: -------------------------------------------------------------------------------- 1 | .card-box { 2 | margin: 50px auto; 3 | padding: 20px; 4 | width: 355px; 5 | text-align: center; 6 | background-color: #fff; 7 | box-shadow: 5px 5px 30px rgba(84, 29, 29, 0.4); 8 | .card-title { 9 | color: #541d1d; 10 | font-size: 22px; 11 | } 12 | .card-text { 13 | margin-top: 8px; 14 | line-height: 1.3; 15 | } 16 | .card-image { 17 | margin-top: 10px; 18 | 19 | .image-dialog-trigger { 20 | margin: 0; 21 | padding: 0; 22 | background: none; 23 | border: none; 24 | cursor: pointer; 25 | } 26 | 27 | .image-dialog-background { 28 | overflow: auto; 29 | position: fixed; 30 | z-index: 99; 31 | top: 0; 32 | right: 0; 33 | left: 0; 34 | bottom: 0; 35 | padding: 80px 40px; 36 | background-color: rgba(255, 255, 255, 0.9); 37 | text-align: center; 38 | 39 | .image-dialog-close { 40 | position: absolute; 41 | right: 20px; 42 | top: 20px; 43 | width: 60px; 44 | height: 60px; 45 | padding: 0; 46 | background: none; 47 | border: none; 48 | cursor: pointer; 49 | -webkit-transition: 300ms ease-out; 50 | transition: 300ms ease-out; 51 | outline: none; 52 | &:hover { 53 | -webkit-transform: rotate(270deg); 54 | transform: rotate(270deg); 55 | } 56 | &::before{ 57 | content: ''; 58 | position: absolute; 59 | left: 50%; 60 | top: 50%; 61 | margin-top: -0.5px; 62 | margin-left: -20px; 63 | width: 40px; 64 | height: 1px; 65 | background-color: #000; 66 | -webkit-transform: rotate(45deg); 67 | transform: rotate(45deg); 68 | } 69 | &::after{ 70 | content: ''; 71 | position: absolute; 72 | left: 50%; 73 | top: 50%; 74 | margin-top: -0.5px; 75 | margin-left: -20px; 76 | width: 40px; 77 | height: 1px; 78 | background-color: #000; 79 | -webkit-transform: rotate(135deg); 80 | transform: rotate(135deg); 81 | } 82 | } 83 | .image-dialog-animate{ 84 | display: none; 85 | position: absolute; 86 | -webkit-transform-origin: left top; 87 | transform-origin: left top; 88 | &.loading { 89 | display: block; 90 | } 91 | } 92 | &.dialog-leave-active { 93 | -webkit-transition: background-color 300ms ease-out; 94 | transition: background-color 300ms ease-out; 95 | .image-dialog-animate { 96 | display: block; 97 | -webkit-transition: -webkit-transform 300ms cubic-bezier(1, 0, 0.7, 1); 98 | transition: -webkit-transform 300ms cubic-bezier(1, 0, 0.7, 1); 99 | transition: transform 300ms cubic-bezier(1, 0, 0.7, 1); 100 | transition: transform 300ms cubic-bezier(1, 0, 0.7, 1), -webkit-transform 300ms cubic-bezier(1, 0, 0.7, 1); 101 | } 102 | .image-dialog-full { 103 | visibility: hidden; 104 | } 105 | } 106 | &.dialog-enter-active{ 107 | -webkit-transition: background-color 300ms ease-out; 108 | transition: background-color 300ms ease-out; 109 | .image-dialog-animate { 110 | display: block; 111 | -webkit-transition: -webkit-transform 300ms cubic-bezier(1, 0, 0.7, 1); 112 | transition: -webkit-transform 300ms cubic-bezier(1, 0, 0.7, 1); 113 | transition: transform 300ms cubic-bezier(1, 0, 0.7, 1); 114 | transition: transform 300ms cubic-bezier(1, 0, 0.7, 1), -webkit-transform 300ms cubic-bezier(1, 0, 0.7, 1); 115 | } 116 | .image-dialog-full { 117 | visibility: hidden; 118 | } 119 | } 120 | .dialog-leave-to { 121 | background-color: rgba(255, 255, 255, 0); 122 | } 123 | .dialog-enter { 124 | background-color: rgba(255, 255, 255, 0); 125 | } 126 | } 127 | } 128 | 129 | } -------------------------------------------------------------------------------- /src/pages/pi/index.scss: -------------------------------------------------------------------------------- 1 | .news-wrapper { 2 | width: 472px; 3 | padding: 5px; 4 | border: 1px solid #e4e4e4; 5 | border-radius: 3px; 6 | margin: 0 auto; 7 | overflow: hidden; 8 | 9 | .news-list { 10 | margin: 10px 0; 11 | li { 12 | float: left; 13 | margin-right: 5px; 14 | background-color: #929292; 15 | 16 | &.active { 17 | background-color: #4b79bf; 18 | } 19 | 20 | a { 21 | display: block; 22 | width: 140px; 23 | height: 33px; 24 | line-height: 33px; 25 | font-size: 12px; 26 | color: #fff; 27 | text-align: center; 28 | } 29 | } 30 | } 31 | 32 | .news-box { 33 | .news-listbox { 34 | width: 460px * 3; 35 | transition: all 0.5s; 36 | ul { 37 | float: left; 38 | width: 460px; 39 | li { 40 | margin-bottom: 5px; 41 | a{ 42 | display: block; 43 | .news-date { 44 | float: left; 45 | width: 80px; 46 | color: #666; 47 | border-right: 2px solid #4b79bf; 48 | display: none; 49 | 50 | .date-day { 51 | font-size: 48px; 52 | } 53 | 54 | .date-year { 55 | font-size: 12px; 56 | letter-spacing: 2px; 57 | } 58 | } 59 | 60 | .main-news { 61 | width: calc(100% - 80px); 62 | float: left; 63 | 64 | .newstxt-title { 65 | font-size: 14px; 66 | color: #666; 67 | overflow: hidden; 68 | white-space: nowrap; 69 | text-overflow: ellipsis; 70 | } 71 | 72 | .news-text { 73 | font-size: 14px; 74 | color: #999; 75 | text-indent: 2em; 76 | line-height: 1.6em; 77 | margin-top: 10px; 78 | display: none; 79 | height: 44px; 80 | overflow: hidden; 81 | white-space: nowrap; 82 | text-overflow: ellipsis; 83 | } 84 | } 85 | 86 | .time { 87 | width: 80px; 88 | font-size: 14px; 89 | color: #666; 90 | } 91 | } 92 | 93 | 94 | &:first-child { 95 | margin-bottom: 13px; 96 | 97 | .news-date { 98 | display: block; 99 | } 100 | 101 | .main-news { 102 | padding: 0 15px; 103 | 104 | .newstxt-title { 105 | font-size: 16px; 106 | 107 | } 108 | 109 | .news-text { 110 | display: block; 111 | } 112 | } 113 | 114 | .time { 115 | display: none; 116 | } 117 | } 118 | 119 | &:hover { 120 | .news-date .date-day, .news-date .date-year, .main-news .newstxt-title, .time { 121 | color: #4b79bf; 122 | } 123 | } 124 | 125 | &.more { 126 | width: 100%; 127 | justify-content: center; 128 | background: none; 129 | height: 30px; 130 | border: 0; 131 | 132 | 133 | a { 134 | display: block; 135 | float: right; 136 | box-sizing: content-box; 137 | width: 60px; 138 | padding: 1px; 139 | color: #4b79bf; 140 | 141 | &:hover{ 142 | text-decoration:underline; 143 | } 144 | } 145 | } 146 | } 147 | } 148 | } 149 | } 150 | } -------------------------------------------------------------------------------- /src/assets/iconfont/demo.css: -------------------------------------------------------------------------------- 1 | *{margin: 0;padding: 0;list-style: none;} 2 | /* 3 | KISSY CSS Reset 4 | 理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作。清除和重置是紧密不可分的。 5 | 2. reset 的目的不是让默认样式在所有浏览器下一致,而是减少默认样式有可能带来的问题。 6 | 3. reset 期望提供一套普适通用的基础样式。但没有银弹,推荐根据具体需求,裁剪和修改后再使用。 7 | 特色:1. 适应中文;2. 基于最新主流浏览器。 8 | 维护:玉伯, 正淳 9 | */ 10 | 11 | /** 清除内外边距 **/ 12 | body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */ 13 | dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ 14 | pre, /* text formatting elements 文本格式元素 */ 15 | form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */ 16 | th, td /* table elements 表格元素 */ { 17 | margin: 0; 18 | padding: 0; 19 | } 20 | 21 | /** 设置默认字体 **/ 22 | body, 23 | button, input, select, textarea /* for ie */ { 24 | font: 12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; 25 | } 26 | h1, h2, h3, h4, h5, h6 { font-size: 100%; } 27 | address, cite, dfn, em, var { font-style: normal; } /* 将斜体扶正 */ 28 | code, kbd, pre, samp { font-family: courier new, courier, monospace; } /* 统一等宽字体 */ 29 | small { font-size: 12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */ 30 | 31 | /** 重置列表元素 **/ 32 | ul, ol { list-style: none; } 33 | 34 | /** 重置文本格式元素 **/ 35 | a { text-decoration: none; } 36 | a:hover { text-decoration: underline; } 37 | 38 | 39 | /** 重置表单元素 **/ 40 | legend { color: #000; } /* for ie6 */ 41 | fieldset, img { border: 0; } /* img 搭车:让链接里的 img 无边框 */ 42 | button, input, select, textarea { font-size: 100%; } /* 使得表单元素在 ie 下能继承字体大小 */ 43 | /* 注:optgroup 无法扶正 */ 44 | 45 | /** 重置表格元素 **/ 46 | table { border-collapse: collapse; border-spacing: 0; } 47 | 48 | /* 清除浮动 */ 49 | .ks-clear:after, .clear:after { 50 | content: '\20'; 51 | display: block; 52 | height: 0; 53 | clear: both; 54 | } 55 | .ks-clear, .clear { 56 | *zoom: 1; 57 | } 58 | 59 | .main { 60 | padding: 30px 100px; 61 | width: 960px; 62 | margin: 0 auto; 63 | } 64 | .main h1{font-size:36px; color:#333; text-align:left;margin-bottom:30px; border-bottom: 1px solid #eee;} 65 | 66 | .helps{margin-top:40px;} 67 | .helps pre{ 68 | padding:20px; 69 | margin:10px 0; 70 | border:solid 1px #e7e1cd; 71 | background-color: #fffdef; 72 | overflow: auto; 73 | } 74 | 75 | .icon_lists{ 76 | width: 100% !important; 77 | 78 | } 79 | 80 | .icon_lists li{ 81 | float:left; 82 | width: 100px; 83 | height:180px; 84 | text-align: center; 85 | list-style: none !important; 86 | } 87 | .icon_lists .icon{ 88 | font-size: 42px; 89 | line-height: 100px; 90 | margin: 10px 0; 91 | color:#333; 92 | -webkit-transition: font-size 0.25s ease-out 0s; 93 | -moz-transition: font-size 0.25s ease-out 0s; 94 | transition: font-size 0.25s ease-out 0s; 95 | 96 | } 97 | .icon_lists .icon:hover{ 98 | font-size: 100px; 99 | } 100 | 101 | 102 | 103 | .markdown { 104 | color: #666; 105 | font-size: 14px; 106 | line-height: 1.8; 107 | } 108 | 109 | .highlight { 110 | line-height: 1.5; 111 | } 112 | 113 | .markdown img { 114 | vertical-align: middle; 115 | max-width: 100%; 116 | } 117 | 118 | .markdown h1 { 119 | color: #404040; 120 | font-weight: 500; 121 | line-height: 40px; 122 | margin-bottom: 24px; 123 | } 124 | 125 | .markdown h2, 126 | .markdown h3, 127 | .markdown h4, 128 | .markdown h5, 129 | .markdown h6 { 130 | color: #404040; 131 | margin: 1.6em 0 0.6em 0; 132 | font-weight: 500; 133 | clear: both; 134 | } 135 | 136 | .markdown h1 { 137 | font-size: 28px; 138 | } 139 | 140 | .markdown h2 { 141 | font-size: 22px; 142 | } 143 | 144 | .markdown h3 { 145 | font-size: 16px; 146 | } 147 | 148 | .markdown h4 { 149 | font-size: 14px; 150 | } 151 | 152 | .markdown h5 { 153 | font-size: 12px; 154 | } 155 | 156 | .markdown h6 { 157 | font-size: 12px; 158 | } 159 | 160 | .markdown hr { 161 | height: 1px; 162 | border: 0; 163 | background: #e9e9e9; 164 | margin: 16px 0; 165 | clear: both; 166 | } 167 | 168 | .markdown p, 169 | .markdown pre { 170 | margin: 1em 0; 171 | } 172 | 173 | .markdown > p, 174 | .markdown > blockquote, 175 | .markdown > .highlight, 176 | .markdown > ol, 177 | .markdown > ul { 178 | width: 80%; 179 | } 180 | 181 | .markdown ul > li { 182 | list-style: circle; 183 | } 184 | 185 | .markdown > ul li, 186 | .markdown blockquote ul > li { 187 | margin-left: 20px; 188 | padding-left: 4px; 189 | } 190 | 191 | .markdown > ul li p, 192 | .markdown > ol li p { 193 | margin: 0.6em 0; 194 | } 195 | 196 | .markdown ol > li { 197 | list-style: decimal; 198 | } 199 | 200 | .markdown > ol li, 201 | .markdown blockquote ol > li { 202 | margin-left: 20px; 203 | padding-left: 4px; 204 | } 205 | 206 | .markdown code { 207 | margin: 0 3px; 208 | padding: 0 5px; 209 | background: #eee; 210 | border-radius: 3px; 211 | } 212 | 213 | .markdown pre { 214 | border-radius: 6px; 215 | background: #f7f7f7; 216 | padding: 20px; 217 | } 218 | 219 | .markdown pre code { 220 | border: none; 221 | background: #f7f7f7; 222 | margin: 0; 223 | } 224 | 225 | .markdown strong, 226 | .markdown b { 227 | font-weight: 600; 228 | } 229 | 230 | .markdown > table { 231 | border-collapse: collapse; 232 | border-spacing: 0px; 233 | empty-cells: show; 234 | border: 1px solid #e9e9e9; 235 | width: 95%; 236 | margin-bottom: 24px; 237 | } 238 | 239 | .markdown > table th { 240 | white-space: nowrap; 241 | color: #333; 242 | font-weight: 600; 243 | 244 | } 245 | 246 | .markdown > table th, 247 | .markdown > table td { 248 | border: 1px solid #e9e9e9; 249 | padding: 8px 16px; 250 | text-align: left; 251 | } 252 | 253 | .markdown > table th { 254 | background: #F7F7F7; 255 | } 256 | 257 | .markdown blockquote { 258 | font-size: 90%; 259 | color: #999; 260 | border-left: 4px solid #e9e9e9; 261 | padding-left: 0.8em; 262 | margin: 1em 0; 263 | font-style: italic; 264 | } 265 | 266 | .markdown blockquote p { 267 | margin: 0; 268 | } 269 | 270 | .markdown .anchor { 271 | opacity: 0; 272 | transition: opacity 0.3s ease; 273 | margin-left: 8px; 274 | } 275 | 276 | .markdown .waiting { 277 | color: #ccc; 278 | } 279 | 280 | .markdown h1:hover .anchor, 281 | .markdown h2:hover .anchor, 282 | .markdown h3:hover .anchor, 283 | .markdown h4:hover .anchor, 284 | .markdown h5:hover .anchor, 285 | .markdown h6:hover .anchor { 286 | opacity: 1; 287 | display: inline-block; 288 | } 289 | 290 | .markdown > br, 291 | .markdown > p > br { 292 | clear: both; 293 | } 294 | 295 | 296 | .hljs { 297 | display: block; 298 | background: white; 299 | padding: 0.5em; 300 | color: #333333; 301 | overflow-x: auto; 302 | } 303 | 304 | .hljs-comment, 305 | .hljs-meta { 306 | color: #969896; 307 | } 308 | 309 | .hljs-string, 310 | .hljs-variable, 311 | .hljs-template-variable, 312 | .hljs-strong, 313 | .hljs-emphasis, 314 | .hljs-quote { 315 | color: #df5000; 316 | } 317 | 318 | .hljs-keyword, 319 | .hljs-selector-tag, 320 | .hljs-type { 321 | color: #a71d5d; 322 | } 323 | 324 | .hljs-literal, 325 | .hljs-symbol, 326 | .hljs-bullet, 327 | .hljs-attribute { 328 | color: #0086b3; 329 | } 330 | 331 | .hljs-section, 332 | .hljs-name { 333 | color: #63a35c; 334 | } 335 | 336 | .hljs-tag { 337 | color: #333333; 338 | } 339 | 340 | .hljs-title, 341 | .hljs-attr, 342 | .hljs-selector-id, 343 | .hljs-selector-class, 344 | .hljs-selector-attr, 345 | .hljs-selector-pseudo { 346 | color: #795da3; 347 | } 348 | 349 | .hljs-addition { 350 | color: #55a532; 351 | background-color: #eaffea; 352 | } 353 | 354 | .hljs-deletion { 355 | color: #bd2c00; 356 | background-color: #ffecec; 357 | } 358 | 359 | .hljs-link { 360 | text-decoration: underline; 361 | } 362 | 363 | pre{ 364 | background: #fff; 365 | } 366 | 367 | 368 | 369 | 370 | 371 | -------------------------------------------------------------------------------- /src/assets/iconfont/demo_fontclass.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | IconFont 7 | 8 | 9 | 10 | 11 |
12 |

IconFont 图标

13 |
    14 | 15 |
  • 16 | 17 |
    日历
    18 |
    .icon-rili
    19 |
  • 20 | 21 |
  • 22 | 23 |
    密码
    24 |
    .icon-mima
    25 |
  • 26 | 27 |
  • 28 | 29 |
    快速
    30 |
    .icon-kuaisu
    31 |
  • 32 | 33 |
  • 34 | 35 |
    微信
    36 |
    .icon-weixin
    37 |
  • 38 | 39 |
  • 40 | 41 |
    all
    42 |
    .icon-all
    43 |
  • 44 | 45 |
  • 46 | 47 |
    back
    48 |
    .icon-back
    49 |
  • 50 | 51 |
  • 52 | 53 |
    cart
    54 |
    .icon-cart
    55 |
  • 56 | 57 |
  • 58 | 59 |
    Category
    60 |
    .icon-category
    61 |
  • 62 | 63 |
  • 64 | 65 |
    close
    66 |
    .icon-close
    67 |
  • 68 | 69 |
  • 70 | 71 |
    comments
    72 |
    .icon-comments
    73 |
  • 74 | 75 |
  • 76 | 77 |
    cry
    78 |
    .icon-cry
    79 |
  • 80 | 81 |
  • 82 | 83 |
    delete
    84 |
    .icon-delete
    85 |
  • 86 | 87 |
  • 88 | 89 |
    edit
    90 |
    .icon-edit
    91 |
  • 92 | 93 |
  • 94 | 95 |
    email
    96 |
    .icon-email
    97 |
  • 98 | 99 |
  • 100 | 101 |
    favorite
    102 |
    .icon-favorite
    103 |
  • 104 | 105 |
  • 106 | 107 |
    form
    108 |
    .icon-form
    109 |
  • 110 | 111 |
  • 112 | 113 |
    help
    114 |
    .icon-help
    115 |
  • 116 | 117 |
  • 118 | 119 |
    information
    120 |
    .icon-information
    121 |
  • 122 | 123 |
  • 124 | 125 |
    less
    126 |
    .icon-less
    127 |
  • 128 | 129 |
  • 130 | 131 |
    more_unfold
    132 |
    .icon-moreunfold
    133 |
  • 134 | 135 |
  • 136 | 137 |
    more
    138 |
    .icon-more
    139 |
  • 140 | 141 |
  • 142 | 143 |
    pic
    144 |
    .icon-pic
    145 |
  • 146 | 147 |
  • 148 | 149 |
    QRCode
    150 |
    .icon-qrcode
    151 |
  • 152 | 153 |
  • 154 | 155 |
    refresh
    156 |
    .icon-refresh
    157 |
  • 158 | 159 |
  • 160 | 161 |
    RFQ
    162 |
    .icon-rfq
    163 |
  • 164 | 165 |
  • 166 | 167 |
    search
    168 |
    .icon-search
    169 |
  • 170 | 171 |
  • 172 | 173 |
    selected
    174 |
    .icon-selected
    175 |
  • 176 | 177 |
  • 178 | 179 |
    set
    180 |
    .icon-set
    181 |
  • 182 | 183 |
  • 184 | 185 |
    Smile
    186 |
    .icon-smile
    187 |
  • 188 | 189 |
  • 190 | 191 |
    success
    192 |
    .icon-success
    193 |
  • 194 | 195 |
  • 196 | 197 |
    survey
    198 |
    .icon-survey
    199 |
  • 200 | 201 |
  • 202 | 203 |
    training
    204 |
    .icon-training
    205 |
  • 206 | 207 |
  • 208 | 209 |
    ViewGallery
    210 |
    .icon-viewgallery
    211 |
  • 212 | 213 |
  • 214 | 215 |
    Viewlist
    216 |
    .icon-viewlist
    217 |
  • 218 | 219 |
  • 220 | 221 |
    warning
    222 |
    .icon-warning
    223 |
  • 224 | 225 |
  • 226 | 227 |
    wrong
    228 |
    .icon-wrong
    229 |
  • 230 | 231 |
  • 232 | 233 |
    account
    234 |
    .icon-account
    235 |
  • 236 | 237 |
  • 238 | 239 |
    add
    240 |
    .icon-add
    241 |
  • 242 | 243 |
  • 244 | 245 |
    clock
    246 |
    .icon-clock
    247 |
  • 248 | 249 |
  • 250 | 251 |
    remind
    252 |
    .icon-remind
    253 |
  • 254 | 255 |
  • 256 | 257 |
    discount
    258 |
    .icon-discount
    259 |
  • 260 | 261 |
  • 262 | 263 |
    qq
    264 |
    .icon-qq
    265 |
  • 266 | 267 |
  • 268 | 269 |
    social-github-outline
    270 |
    .icon-socialgithuboutline
    271 |
  • 272 | 273 |
  • 274 | 275 |
    agriculture
    276 |
    .icon-agriculture
    277 |
  • 278 | 279 |
  • 280 | 281 |
    download
    282 |
    .icon-icondownload
    283 |
  • 284 | 285 |
  • 286 | 287 |
    map
    288 |
    .icon-map
    289 |
  • 290 | 291 |
  • 292 | 293 |
    bad
    294 |
    .icon-bad
    295 |
  • 296 | 297 |
  • 298 | 299 |
    good
    300 |
    .icon-good
    301 |
  • 302 | 303 |
  • 304 | 305 |
    Mobile-phone
    306 |
    .icon-mobilephone
    307 |
  • 308 | 309 |
  • 310 | 311 |
    email-filling
    312 |
    .icon-emailfilling
    313 |
  • 314 | 315 |
  • 316 | 317 |
    favorites-filling
    318 |
    .icon-favoritesfilling
    319 |
  • 320 | 321 |
  • 322 | 323 |
    credit-level-filling
    324 |
    .icon-creditlevelfilling
    325 |
  • 326 | 327 |
  • 328 | 329 |
    统计
    330 |
    .icon-statistics2
    331 |
  • 332 | 333 |
  • 334 | 335 |
    exl
    336 |
    .icon-exl
    337 |
  • 338 | 339 |
  • 340 | 341 |
    pdf
    342 |
    .icon-pdf
    343 |
  • 344 | 345 |
  • 346 | 347 |
    zip
    348 |
    .icon-zip
    349 |
  • 350 | 351 |
  • 352 | 353 |
    消息
    354 |
    .icon-xiaoxi
    355 |
  • 356 | 357 |
  • 358 | 359 |
    save
    360 |
    .icon-save
    361 |
  • 362 | 363 |
  • 364 | 365 |
    weibo
    366 |
    .icon-weibo
    367 |
  • 368 | 369 |
  • 370 | 371 |
    通知
    372 |
    .icon-tongzhi
    373 |
  • 374 | 375 |
  • 376 | 377 |
    信箱
    378 |
    .icon-xinxiangtianchong
    379 |
  • 380 | 381 |
  • 382 | 383 |
    color
    384 |
    .icon-color
    385 |
  • 386 | 387 |
  • 388 | 389 |
    轮播
    390 |
    .icon-lunbo-
    391 |
  • 392 | 393 |
  • 394 | 395 |
    396 |
    .icon-ren
    397 |
  • 398 | 399 |
  • 400 | 401 |
    菜单
    402 |
    .icon-caidan
    403 |
  • 404 | 405 |
  • 406 | 407 |
    图标
    408 |
    .icon-tubiao
    409 |
  • 410 | 411 |
  • 412 | 413 |
    414 |
    .icon-round-user-new
    415 |
  • 416 | 417 |
  • 418 | 419 |
    步骤一
    420 |
    .icon-buzhouyi
    421 |
  • 422 | 423 |
  • 424 | 425 |
    按钮
    426 |
    .icon-anniu
    427 |
  • 428 | 429 |
  • 430 | 431 |
    顶部
    432 |
    .icon-dingbu
    433 |
  • 434 | 435 |
  • 436 | 437 |
    面包屑
    438 |
    .icon-mianbaoxie
    439 |
  • 440 | 441 |
  • 442 | 443 |
    字体
    444 |
    .icon-ziti
    445 |
  • 446 | 447 |
  • 448 | 449 |
    分页左
    450 |
    .icon-fenyezuo
    451 |
  • 452 | 453 |
  • 454 | 455 |
    customs-clearance
    456 |
    .icon-customs-clearance
    457 |
  • 458 | 459 |
  • 460 | 461 |
    加载
    462 |
    .icon-jiazai
    463 |
  • 464 | 465 |
  • 466 | 467 |
    管理
    468 |
    .icon-management
    469 |
  • 470 | 471 |
  • 472 | 473 |
    进度
    474 |
    .icon-jindu
    475 |
  • 476 | 477 |
  • 478 | 479 |
    通知
    480 |
    .icon-tongzhi1
    481 |
  • 482 | 483 |
  • 484 | 485 |
    进度
    486 |
    .icon-jindu1
    487 |
  • 488 | 489 |
  • 490 | 491 |
    删 除
    492 |
    .icon-delete-copy
    493 |
  • 494 | 495 |
  • 496 | 497 |
    滑块
    498 |
    .icon-huakuai
    499 |
  • 500 | 501 |
  • 502 | 503 |
    输入框
    504 |
    .icon-shurukuang
    505 |
  • 506 | 507 |
  • 508 | 509 |
    安装
    510 |
    .icon-anzhuang
    511 |
  • 512 | 513 |
514 | 515 |

font-class引用

516 |
517 | 518 |

font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。

519 |

与unicode使用方式相比,具有如下特点:

520 |
    521 |
  • 兼容性良好,支持ie8+,及所有现代浏览器。
  • 522 |
  • 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。
  • 523 |
  • 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。
  • 524 |
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • 525 |
526 |

使用步骤如下:

527 |

第一步:引入项目下面生成的fontclass代码:

528 | 529 | 530 |
<link rel="stylesheet" type="text/css" href="./iconfont.css">
531 |

第二步:挑选相应图标并获取类名,应用于页面:

532 |
<i class="iconfont icon-xxx"></i>
533 |
534 |

"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。

535 |
536 |
537 | 538 | 539 | -------------------------------------------------------------------------------- /src/assets/iconfont/demo_unicode.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | IconFont 7 | 8 | 9 | 29 | 30 | 31 |
32 |

IconFont 图标

33 |
    34 | 35 |
  • 36 | 37 |
    日历
    38 |
    &#xe600;
    39 |
  • 40 | 41 |
  • 42 | 43 |
    密码
    44 |
    &#xe608;
    45 |
  • 46 | 47 |
  • 48 | 49 |
    快速
    50 |
    &#xe61b;
    51 |
  • 52 | 53 |
  • 54 | 55 |
    微信
    56 |
    &#xe63b;
    57 |
  • 58 | 59 |
  • 60 | 61 |
    all
    62 |
    &#xe696;
    63 |
  • 64 | 65 |
  • 66 | 67 |
    back
    68 |
    &#xe697;
    69 |
  • 70 | 71 |
  • 72 | 73 |
    cart
    74 |
    &#xe698;
    75 |
  • 76 | 77 |
  • 78 | 79 |
    Category
    80 |
    &#xe699;
    81 |
  • 82 | 83 |
  • 84 | 85 |
    close
    86 |
    &#xe69a;
    87 |
  • 88 | 89 |
  • 90 | 91 |
    comments
    92 |
    &#xe69b;
    93 |
  • 94 | 95 |
  • 96 | 97 |
    cry
    98 |
    &#xe69c;
    99 |
  • 100 | 101 |
  • 102 | 103 |
    delete
    104 |
    &#xe69d;
    105 |
  • 106 | 107 |
  • 108 | 109 |
    edit
    110 |
    &#xe69e;
    111 |
  • 112 | 113 |
  • 114 | 115 |
    email
    116 |
    &#xe69f;
    117 |
  • 118 | 119 |
  • 120 | 121 |
    favorite
    122 |
    &#xe6a0;
    123 |
  • 124 | 125 |
  • 126 | 127 |
    form
    128 |
    &#xe6a2;
    129 |
  • 130 | 131 |
  • 132 | 133 |
    help
    134 |
    &#xe6a3;
    135 |
  • 136 | 137 |
  • 138 | 139 |
    information
    140 |
    &#xe6a4;
    141 |
  • 142 | 143 |
  • 144 | 145 |
    less
    146 |
    &#xe6a5;
    147 |
  • 148 | 149 |
  • 150 | 151 |
    more_unfold
    152 |
    &#xe6a6;
    153 |
  • 154 | 155 |
  • 156 | 157 |
    more
    158 |
    &#xe6a7;
    159 |
  • 160 | 161 |
  • 162 | 163 |
    pic
    164 |
    &#xe6a8;
    165 |
  • 166 | 167 |
  • 168 | 169 |
    QRCode
    170 |
    &#xe6a9;
    171 |
  • 172 | 173 |
  • 174 | 175 |
    refresh
    176 |
    &#xe6aa;
    177 |
  • 178 | 179 |
  • 180 | 181 |
    RFQ
    182 |
    &#xe6ab;
    183 |
  • 184 | 185 |
  • 186 | 187 |
    search
    188 |
    &#xe6ac;
    189 |
  • 190 | 191 |
  • 192 | 193 |
    selected
    194 |
    &#xe6ad;
    195 |
  • 196 | 197 |
  • 198 | 199 |
    set
    200 |
    &#xe6ae;
    201 |
  • 202 | 203 |
  • 204 | 205 |
    Smile
    206 |
    &#xe6af;
    207 |
  • 208 | 209 |
  • 210 | 211 |
    success
    212 |
    &#xe6b1;
    213 |
  • 214 | 215 |
  • 216 | 217 |
    survey
    218 |
    &#xe6b2;
    219 |
  • 220 | 221 |
  • 222 | 223 |
    training
    224 |
    &#xe6b3;
    225 |
  • 226 | 227 |
  • 228 | 229 |
    ViewGallery
    230 |
    &#xe6b4;
    231 |
  • 232 | 233 |
  • 234 | 235 |
    Viewlist
    236 |
    &#xe6b5;
    237 |
  • 238 | 239 |
  • 240 | 241 |
    warning
    242 |
    &#xe6b6;
    243 |
  • 244 | 245 |
  • 246 | 247 |
    wrong
    248 |
    &#xe6b7;
    249 |
  • 250 | 251 |
  • 252 | 253 |
    account
    254 |
    &#xe6b8;
    255 |
  • 256 | 257 |
  • 258 | 259 |
    add
    260 |
    &#xe6b9;
    261 |
  • 262 | 263 |
  • 264 | 265 |
    clock
    266 |
    &#xe6bb;
    267 |
  • 268 | 269 |
  • 270 | 271 |
    remind
    272 |
    &#xe6bc;
    273 |
  • 274 | 275 |
  • 276 | 277 |
    discount
    278 |
    &#xe6c5;
    279 |
  • 280 | 281 |
  • 282 | 283 |
    qq
    284 |
    &#xe61a;
    285 |
  • 286 | 287 |
  • 288 | 289 |
    social-github-outline
    290 |
    &#xe874;
    291 |
  • 292 | 293 |
  • 294 | 295 |
    agriculture
    296 |
    &#xe707;
    297 |
  • 298 | 299 |
  • 300 | 301 |
    download
    302 |
    &#xe714;
    303 |
  • 304 | 305 |
  • 306 | 307 |
    map
    308 |
    &#xe715;
    309 |
  • 310 | 311 |
  • 312 | 313 |
    bad
    314 |
    &#xe716;
    315 |
  • 316 | 317 |
  • 318 | 319 |
    good
    320 |
    &#xe717;
    321 |
  • 322 | 323 |
  • 324 | 325 |
    Mobile-phone
    326 |
    &#xe72a;
    327 |
  • 328 | 329 |
  • 330 | 331 |
    email-filling
    332 |
    &#xe72d;
    333 |
  • 334 | 335 |
  • 336 | 337 |
    favorites-filling
    338 |
    &#xe730;
    339 |
  • 340 | 341 |
  • 342 | 343 |
    credit-level-filling
    344 |
    &#xe736;
    345 |
  • 346 | 347 |
  • 348 | 349 |
    统计
    350 |
    &#xe625;
    351 |
  • 352 | 353 |
  • 354 | 355 |
    exl
    356 |
    &#xe73f;
    357 |
  • 358 | 359 |
  • 360 | 361 |
    pdf
    362 |
    &#xe740;
    363 |
  • 364 | 365 |
  • 366 | 367 |
    zip
    368 |
    &#xe741;
    369 |
  • 370 | 371 |
  • 372 | 373 |
    消息
    374 |
    &#xe7a8;
    375 |
  • 376 | 377 |
  • 378 | 379 |
    save
    380 |
    &#xe747;
    381 |
  • 382 | 383 |
  • 384 | 385 |
    weibo
    386 |
    &#xe663;
    387 |
  • 388 | 389 |
  • 390 | 391 |
    通知
    392 |
    &#xe63c;
    393 |
  • 394 | 395 |
  • 396 | 397 |
    信箱
    398 |
    &#xe60a;
    399 |
  • 400 | 401 |
  • 402 | 403 |
    color
    404 |
    &#xe760;
    405 |
  • 406 | 407 |
  • 408 | 409 |
    轮播
    410 |
    &#xe6c2;
    411 |
  • 412 | 413 |
  • 414 | 415 |
    416 |
    &#xe601;
    417 |
  • 418 | 419 |
  • 420 | 421 |
    菜单
    422 |
    &#xe62b;
    423 |
  • 424 | 425 |
  • 426 | 427 |
    图标
    428 |
    &#xe602;
    429 |
  • 430 | 431 |
  • 432 | 433 |
    434 |
    &#xe635;
    435 |
  • 436 | 437 |
  • 438 | 439 |
    步骤一
    440 |
    &#xe636;
    441 |
  • 442 | 443 |
  • 444 | 445 |
    按钮
    446 |
    &#xe63f;
    447 |
  • 448 | 449 |
  • 450 | 451 |
    顶部
    452 |
    &#xe63d;
    453 |
  • 454 | 455 |
  • 456 | 457 |
    面包屑
    458 |
    &#xe63e;
    459 |
  • 460 | 461 |
  • 462 | 463 |
    字体
    464 |
    &#xe603;
    465 |
  • 466 | 467 |
  • 468 | 469 |
    分页左
    470 |
    &#xe6b0;
    471 |
  • 472 | 473 |
  • 474 | 475 |
    customs-clearance
    476 |
    &#xe863;
    477 |
  • 478 | 479 |
  • 480 | 481 |
    加载
    482 |
    &#xe724;
    483 |
  • 484 | 485 |
  • 486 | 487 |
    管理
    488 |
    &#xe6ec;
    489 |
  • 490 | 491 |
  • 492 | 493 |
    进度
    494 |
    &#xe624;
    495 |
  • 496 | 497 |
  • 498 | 499 |
    通知
    500 |
    &#xe61c;
    501 |
  • 502 | 503 |
  • 504 | 505 |
    进度
    506 |
    &#xe604;
    507 |
  • 508 | 509 |
  • 510 | 511 |
    删 除
    512 |
    &#xe605;
    513 |
  • 514 | 515 |
  • 516 | 517 |
    滑块
    518 |
    &#xe8fb;
    519 |
  • 520 | 521 |
  • 522 | 523 |
    输入框
    524 |
    &#xeafe;
    525 |
  • 526 | 527 |
  • 528 | 529 |
    安装
    530 |
    &#xe67f;
    531 |
  • 532 | 533 |
534 |

unicode引用

535 |
536 | 537 |

unicode是字体在网页端最原始的应用方式,特点是:

538 |
    539 |
  • 兼容性最好,支持ie6+,及所有现代浏览器。
  • 540 |
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 541 |
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • 542 |
543 |
544 |

注意:新版iconfont支持多色图标,这些多色图标在unicode模式下将不能使用,如果有需求建议使用symbol的引用方式

545 |
546 |

unicode使用步骤如下:

547 |

第一步:拷贝项目下面生成的font-face

548 |
@font-face {
549 |   font-family: 'iconfont';
550 |   src: url('iconfont.eot');
551 |   src: url('iconfont.eot?#iefix') format('embedded-opentype'),
552 |   url('iconfont.woff') format('woff'),
553 |   url('iconfont.ttf') format('truetype'),
554 |   url('iconfont.svg#iconfont') format('svg');
555 | }
556 | 
557 |

第二步:定义使用iconfont的样式

558 |
.iconfont{
559 |   font-family:"iconfont" !important;
560 |   font-size:16px;font-style:normal;
561 |   -webkit-font-smoothing: antialiased;
562 |   -webkit-text-stroke-width: 0.2px;
563 |   -moz-osx-font-smoothing: grayscale;
564 | }
565 | 
566 |

第三步:挑选相应图标并获取字体编码,应用于页面

567 |
<i class="iconfont">&#x33;</i>
568 | 569 |
570 |

"iconfont"是你项目下的font-family。可以通过编辑项目查看,默认是"iconfont"。

571 |
572 |
573 | 574 | 575 | 576 | 577 | -------------------------------------------------------------------------------- /src/assets/iconfont/iconfont.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face {font-family: "iconfont"; 3 | src: url('iconfont.eot?t=1531398050675'); /* IE9*/ 4 | src: url('iconfont.eot?t=1531398050675#iefix') format('embedded-opentype'), /* IE6-IE8 */ 5 | url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), 6 | url('iconfont.ttf?t=1531398050675') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ 7 | url('iconfont.svg?t=1531398050675#iconfont') format('svg'); /* iOS 4.1- */ 8 | } 9 | 10 | .iconfont { 11 | font-family:"iconfont" !important; 12 | font-size:16px; 13 | font-style:normal; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | 18 | .icon-rili:before { content: "\e600"; } 19 | 20 | .icon-mima:before { content: "\e608"; } 21 | 22 | .icon-kuaisu:before { content: "\e61b"; } 23 | 24 | .icon-weixin:before { content: "\e63b"; } 25 | 26 | .icon-all:before { content: "\e696"; } 27 | 28 | .icon-back:before { content: "\e697"; } 29 | 30 | .icon-cart:before { content: "\e698"; } 31 | 32 | .icon-category:before { content: "\e699"; } 33 | 34 | .icon-close:before { content: "\e69a"; } 35 | 36 | .icon-comments:before { content: "\e69b"; } 37 | 38 | .icon-cry:before { content: "\e69c"; } 39 | 40 | .icon-delete:before { content: "\e69d"; } 41 | 42 | .icon-edit:before { content: "\e69e"; } 43 | 44 | .icon-email:before { content: "\e69f"; } 45 | 46 | .icon-favorite:before { content: "\e6a0"; } 47 | 48 | .icon-form:before { content: "\e6a2"; } 49 | 50 | .icon-help:before { content: "\e6a3"; } 51 | 52 | .icon-information:before { content: "\e6a4"; } 53 | 54 | .icon-less:before { content: "\e6a5"; } 55 | 56 | .icon-moreunfold:before { content: "\e6a6"; } 57 | 58 | .icon-more:before { content: "\e6a7"; } 59 | 60 | .icon-pic:before { content: "\e6a8"; } 61 | 62 | .icon-qrcode:before { content: "\e6a9"; } 63 | 64 | .icon-refresh:before { content: "\e6aa"; } 65 | 66 | .icon-rfq:before { content: "\e6ab"; } 67 | 68 | .icon-search:before { content: "\e6ac"; } 69 | 70 | .icon-selected:before { content: "\e6ad"; } 71 | 72 | .icon-set:before { content: "\e6ae"; } 73 | 74 | .icon-smile:before { content: "\e6af"; } 75 | 76 | .icon-success:before { content: "\e6b1"; } 77 | 78 | .icon-survey:before { content: "\e6b2"; } 79 | 80 | .icon-training:before { content: "\e6b3"; } 81 | 82 | .icon-viewgallery:before { content: "\e6b4"; } 83 | 84 | .icon-viewlist:before { content: "\e6b5"; } 85 | 86 | .icon-warning:before { content: "\e6b6"; } 87 | 88 | .icon-wrong:before { content: "\e6b7"; } 89 | 90 | .icon-account:before { content: "\e6b8"; } 91 | 92 | .icon-add:before { content: "\e6b9"; } 93 | 94 | .icon-clock:before { content: "\e6bb"; } 95 | 96 | .icon-remind:before { content: "\e6bc"; } 97 | 98 | .icon-discount:before { content: "\e6c5"; } 99 | 100 | .icon-qq:before { content: "\e61a"; } 101 | 102 | .icon-socialgithuboutline:before { content: "\e874"; } 103 | 104 | .icon-agriculture:before { content: "\e707"; } 105 | 106 | .icon-icondownload:before { content: "\e714"; } 107 | 108 | .icon-map:before { content: "\e715"; } 109 | 110 | .icon-bad:before { content: "\e716"; } 111 | 112 | .icon-good:before { content: "\e717"; } 113 | 114 | .icon-mobilephone:before { content: "\e72a"; } 115 | 116 | .icon-emailfilling:before { content: "\e72d"; } 117 | 118 | .icon-favoritesfilling:before { content: "\e730"; } 119 | 120 | .icon-creditlevelfilling:before { content: "\e736"; } 121 | 122 | .icon-statistics2:before { content: "\e625"; } 123 | 124 | .icon-exl:before { content: "\e73f"; } 125 | 126 | .icon-pdf:before { content: "\e740"; } 127 | 128 | .icon-zip:before { content: "\e741"; } 129 | 130 | .icon-xiaoxi:before { content: "\e7a8"; } 131 | 132 | .icon-save:before { content: "\e747"; } 133 | 134 | .icon-weibo:before { content: "\e663"; } 135 | 136 | .icon-tongzhi:before { content: "\e63c"; } 137 | 138 | .icon-xinxiangtianchong:before { content: "\e60a"; } 139 | 140 | .icon-color:before { content: "\e760"; } 141 | 142 | .icon-lunbo-:before { content: "\e6c2"; } 143 | 144 | .icon-ren:before { content: "\e601"; } 145 | 146 | .icon-caidan:before { content: "\e62b"; } 147 | 148 | .icon-tubiao:before { content: "\e602"; } 149 | 150 | .icon-round-user-new:before { content: "\e635"; } 151 | 152 | .icon-buzhouyi:before { content: "\e636"; } 153 | 154 | .icon-anniu:before { content: "\e63f"; } 155 | 156 | .icon-dingbu:before { content: "\e63d"; } 157 | 158 | .icon-mianbaoxie:before { content: "\e63e"; } 159 | 160 | .icon-ziti:before { content: "\e603"; } 161 | 162 | .icon-fenyezuo:before { content: "\e6b0"; } 163 | 164 | .icon-customs-clearance:before { content: "\e863"; } 165 | 166 | .icon-jiazai:before { content: "\e724"; } 167 | 168 | .icon-management:before { content: "\e6ec"; } 169 | 170 | .icon-jindu:before { content: "\e624"; } 171 | 172 | .icon-tongzhi1:before { content: "\e61c"; } 173 | 174 | .icon-jindu1:before { content: "\e604"; } 175 | 176 | .icon-delete-copy:before { content: "\e605"; } 177 | 178 | .icon-huakuai:before { content: "\e8fb"; } 179 | 180 | .icon-shurukuang:before { content: "\eafe"; } 181 | 182 | .icon-anzhuang:before { content: "\e67f"; } 183 | 184 | --------------------------------------------------------------------------------