├── src
├── pages
│ └── home
│ │ ├── Home.styl
│ │ ├── index.js
│ │ └── Home.js
├── components
│ ├── footer
│ │ ├── index.js
│ │ ├── Footer.styl
│ │ └── Footer.js
│ ├── header
│ │ ├── index.js
│ │ ├── Header.styl
│ │ └── Header.js
│ ├── leftnav
│ │ ├── index.js
│ │ ├── Leftnav.styl
│ │ └── Leftnav.js
│ └── notfound
│ │ ├── index.js
│ │ ├── Notfound.styl
│ │ └── Notfound.js
├── api
│ ├── README.md
│ └── index.js
├── index.styl
├── index.html
├── loadable.js
├── router.js
├── index.js
├── util
│ ├── error.js
│ └── performance.js
└── images
│ └── logo.svg
├── .gitignore
├── .babelrc
├── dist
├── index.html
└── index.css
├── webpack.dll.config.js
├── package.json
├── README.md
├── webpack.config.js
└── dll
└── manifest.json
/src/pages/home/Home.styl:
--------------------------------------------------------------------------------
1 | .home
2 | display block
3 |
4 |
--------------------------------------------------------------------------------
/src/pages/home/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./Home');
--------------------------------------------------------------------------------
/src/components/footer/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./Footer');
--------------------------------------------------------------------------------
/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./Header');
--------------------------------------------------------------------------------
/src/components/leftnav/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./Leftnav');
--------------------------------------------------------------------------------
/src/components/notfound/index.js:
--------------------------------------------------------------------------------
1 | module.exports = require('./Notfound');
--------------------------------------------------------------------------------
/src/components/notfound/Notfound.styl:
--------------------------------------------------------------------------------
1 | .notfound
2 | display block
3 |
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .cache-loader
2 | node_modules
3 | bower_components/
4 | dist
5 | coverage
6 |
--------------------------------------------------------------------------------
/src/components/leftnav/Leftnav.styl:
--------------------------------------------------------------------------------
1 | .leftnav {
2 | display: block;
3 | width: 200px;
4 | }
5 |
6 |
--------------------------------------------------------------------------------
/src/api/README.md:
--------------------------------------------------------------------------------
1 | ### axios 使用方法
2 | - 引用
3 | ```
4 | import {axiosLogin} from 'api'
5 | ```
6 |
7 | - 发送接口请求
8 | ```
9 | axiosLogin.login(params).then((data)=>{
10 | //处理axios
11 | })
12 | ```
--------------------------------------------------------------------------------
/src/components/footer/Footer.styl:
--------------------------------------------------------------------------------
1 | .footer {
2 | display: block;
3 | height: 40px;
4 | background: #fff;
5 | box-shadow: 0 0 2px 1px #999;
6 | margin-top: 10px;
7 | text-align: center;
8 | line-height: 40px;
9 | width: 100%;
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/src/components/header/Header.styl:
--------------------------------------------------------------------------------
1 | .header {
2 | display: block;
3 | height: 60px;
4 | background: #fff;
5 | display: flex;
6 | box-shadow: 0 0 2px 1px #999;
7 | margin-bottom: 10px;
8 | .ant-steps{
9 | padding-top: 12px;
10 | }
11 | }
12 |
13 |
--------------------------------------------------------------------------------
/src/index.styl:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | html, body {
7 | height: 100%;
8 | }
9 |
10 | #App, .main {
11 | height: 100%;
12 | }
13 |
14 | .main {
15 | flex-direction: column;
16 | display: flex;
17 | }
18 |
19 | .content {
20 | flex: 1;
21 | display: flex;
22 | }
23 |
24 | .main-content {
25 | flex: 1;
26 | }
27 |
--------------------------------------------------------------------------------
/src/pages/home/Home.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Home.styl';
3 |
4 |
5 |
6 |
7 | class Home extends React.Component {
8 |
9 | constructor(props) {
10 | super(props);
11 | this.state = {
12 | };
13 | }
14 |
15 | render() {
16 | return (
17 |
18 | component home
19 |
20 | );
21 | }
22 | }
23 |
24 | export default Home;
25 |
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | webpack4.0
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/loadable.js:
--------------------------------------------------------------------------------
1 | import Loadable from 'react-loadable';
2 | export const Loading = props => {
3 | if (props.error) {
4 | return '加载错误';
5 | } else if (props.timedOut) {
6 | return '加载超时';
7 | } else if (props.pastDelay) {
8 | return '正在加载中...';
9 | } else {
10 | return null;
11 | }
12 | };
13 |
14 | export const importPath = ({loader}) => {
15 | return Loadable ({
16 | loader,
17 | loading: Loading,
18 | delay: 200,
19 | timeout: 10000,
20 | });
21 | };
22 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "env",
5 | {
6 | "targets": {
7 | "browsers": [
8 | ">1%",
9 | "last 3 versions"
10 | ]
11 | }
12 | }
13 | ],
14 | "stage-2",
15 | "latest",
16 | "react"
17 | ],
18 | "plugins": [
19 | "syntax-dynamic-import",
20 | "transform-class-properties", ["import", {
21 | "libraryName": "antd",
22 | "libraryDirectory": "es",
23 | "style": "css"
24 | }]
25 | ]
26 | }
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | webpack4.0
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/components/footer/Footer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Footer.styl';
3 |
4 | class Footer extends React.Component {
5 |
6 | constructor(props) {
7 | super(props);
8 | this.state = {
9 | };
10 | }
11 |
12 | render() {
13 | return (
14 |
15 | component footer
16 |
17 | );
18 | }
19 |
20 | componentWillMount() {}
21 | componentDidMount() {}
22 | componentWillReceiveProps(nextProps) {}
23 | shouldComponentUpdate(nextProps, nextState) { return true; }
24 | componentWillUpdate(nextProps, nextState) {}
25 | componentDidUpdate(prevProps, prevState) {}
26 | componentWillUnmount() {}
27 | }
28 |
29 | export default Footer;
30 |
--------------------------------------------------------------------------------
/src/components/notfound/Notfound.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './Notfound.styl';
3 |
4 | class Notfound extends React.Component {
5 |
6 | constructor(props) {
7 | super(props);
8 | this.state = {
9 | };
10 | }
11 |
12 | render() {
13 | return (
14 |
15 | component notfound
16 |
17 | );
18 | }
19 |
20 | componentWillMount() {}
21 | componentDidMount() {}
22 | componentWillReceiveProps(nextProps) {}
23 | shouldComponentUpdate(nextProps, nextState) { return true; }
24 | componentWillUpdate(nextProps, nextState) {}
25 | componentDidUpdate(prevProps, prevState) {}
26 | componentWillUnmount() {}
27 | }
28 |
29 | export default Notfound;
30 |
--------------------------------------------------------------------------------
/webpack.dll.config.js:
--------------------------------------------------------------------------------
1 | const path = require ('path'), fs = require ('fs'), webpack = require ('webpack');
2 |
3 | const vendors = [
4 | 'react',
5 | 'react-dom',
6 | 'axios',
7 | 'react-loadable',
8 | 'react-router',
9 | 'react-router-dom',
10 | 'querystring',
11 | ];
12 |
13 | module.exports = {
14 | entry: {
15 | vendor: vendors,
16 | },
17 | output: {
18 | path: path.resolve (__dirname, 'dll'),
19 | filename: 'Dll.js',
20 | library: '[name]_[hash]',
21 | },
22 | plugins: [
23 | new webpack.DllPlugin ({
24 | path: path.resolve (__dirname, 'dll', 'manifest.json'),
25 | name: '[name]_[hash]',
26 | context: __dirname,
27 | }),
28 | ],
29 | };
30 |
--------------------------------------------------------------------------------
/src/router.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Switch, Route } from 'react-router-dom';
3 | import { importPath } from './loadable';
4 | /**
5 | * webpackChunkName 为需要按模块切割的名称
6 | */
7 | const routers = [
8 | {
9 | path: '/',
10 | component: importPath({
11 | loader: () => import('pages/home/index.js'),
12 | }),
13 | },
14 | {
15 | path: '/home',
16 | component: importPath({
17 | loader: () =>
18 | import(/* webpackChunkName:"home" */ 'pages/home/index.js'),
19 | }),
20 | },
21 | ];
22 |
23 | const Routers = () => (
24 |
25 |
26 | {routers.map(({ component, path, exact }, index) => {
27 | return (
28 |
29 | );
30 | })}
31 |
32 |
33 | );
34 |
35 | export default Routers;
36 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import ReactDOM from 'react-dom';
3 | import {HashRouter} from 'react-router-dom';
4 | import LeftNav from 'components/leftnav';
5 | import Header from 'components/header';
6 | import Footer from 'components/footer';
7 | import Routers from './router';
8 | import Error from './util/error'; //错误日志
9 | import Performance from './util/performance'; //错误日志
10 | import 'babel-polyfill';
11 |
12 | import './index.styl';
13 |
14 | /**
15 | * 热更新
16 | */
17 | if (module.hot) {
18 | module.hot.accept ();
19 | }
20 | class App extends React.Component {
21 | componentWillMount () {}
22 | render () {
23 | return (
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | );
33 | }
34 | }
35 |
36 | ReactDOM.render (
37 |
38 |
39 | ,
40 | document.getElementById ('App')
41 | );
42 |
--------------------------------------------------------------------------------
/src/components/header/Header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Steps } from 'antd';
3 | const Step = Steps.Step;
4 |
5 |
6 | import './Header.styl';
7 |
8 |
9 | class Header extends React.Component {
10 | constructor(props) {
11 | super(props);
12 | this.state = {
13 |
14 | };
15 | }
16 |
17 | render() {
18 | return (
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | );
28 | }
29 |
30 | componentWillMount() { }
31 | componentDidMount() { }
32 | componentWillReceiveProps(nextProps) { }
33 | shouldComponentUpdate(nextProps, nextState) {
34 | return true;
35 | }
36 | componentWillUpdate(nextProps, nextState) { }
37 | componentDidUpdate(prevProps, prevState) { }
38 | componentWillUnmount() { }
39 | }
40 |
41 | export default Header;
42 |
--------------------------------------------------------------------------------
/src/util/error.js:
--------------------------------------------------------------------------------
1 | const logData = () => { };
2 |
3 | //前端错误日志监控
4 | window.onerror = function (errorMessage, scriptURI, lineNo, columnNo, error) {
5 | console.log('errorMessage: ' + errorMessage); // 异常信息
6 | console.log('scriptURI: ' + scriptURI); // 异常文件路径
7 | console.log('lineNo: ' + lineNo); // 异常行号
8 | console.log('columnNo: ' + columnNo); // 异常列号
9 | console.log('error: ' + error); // 异常堆栈信息
10 | let errorInfo = {
11 | errorMessage,
12 | scriptURI,
13 | lineNo,
14 | columnNo,
15 | error,
16 | time: new Date(),
17 | };
18 | if (localStorage.getItem('errorLog')) { //检查本地是否有错误日志
19 | let errorLog = JSON.parse(localStorage.getItem('errorLog'));
20 | errorLog.push(errorInfo);
21 | } else {
22 | localStorage.setItem('errorLog', JSON.stringify([errorInfo]));
23 | }
24 | };
25 |
26 | window.addEventListener( //在页面注销时候检查是否有错误日志,如果有上传
27 | 'unload',
28 | () => {
29 | if (localStorage.getItem('errorLog')) { //
30 | localStorage.removeItem('errorLog')
31 | //ajax 上传
32 | }
33 | },
34 | false
35 | );
36 |
--------------------------------------------------------------------------------
/src/api/index.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | import querystring from 'querystring';
4 |
5 | import config from './../config';
6 | const { server, devServer } = config;
7 | import { message } from 'antd';
8 |
9 |
10 | if (__LOCAL__) { //true 为开发环境
11 | axios.defaults.baseURL = devServer; //请求测试域名和端口
12 | } else {
13 | axios.defaults.baseURL = server; //请求正式域名和端口
14 | }
15 |
16 | // 发送请求前拦截器
17 | axios.interceptors.request.use(
18 | config => {
19 | if (
20 | config.method === 'post' ||
21 | config.method === 'put' ||
22 | config.method === 'delete' ||
23 | config.method === 'patch'
24 | ) {
25 | config.data = querystring.stringify(config.data);
26 | config.headers = { //json格式
27 | 'Content-Type': 'application/json; charset=UTF-8',
28 | 'X-Requested-With': 'XMLHttpRequest',
29 | };
30 | }
31 | // config.headers = {
32 | // authorization: `Bearer ${localStorage.getItem('toKen')}`, //根据需求是否需要token
33 | // };
34 | return config;
35 | },
36 | error => {
37 | return Promise.reject(error);
38 | }
39 | );
40 |
41 | /**
42 | * 返回数据批量处理接口
43 | */
44 | axios.interceptors.response.use(
45 | response => {
46 | if (response.status) {
47 | if (response.data.code == 1) {
48 | message.success(response.data.message);
49 | } else {
50 | message.error(response.data.message);
51 | }
52 | return response.data.result;
53 | } else {
54 | message.error(response.data.message);
55 | }
56 | return response;
57 | },
58 | error => {
59 | message.error(error.response.data.message);
60 | return error.response.data;
61 | }
62 | );
63 |
64 |
65 | /**
66 | * 登陆模块
67 | */
68 | export const axiosLogin = {
69 | login: async function login(params = {}) {
70 | return await axios.get('/login', params);
71 | }
72 | }
--------------------------------------------------------------------------------
/src/util/performance.js:
--------------------------------------------------------------------------------
1 | // performance.now()
2 |
3 | // // 计算加载时间
4 | // const getPerformanceTiming = () => {
5 | // var performance = window.performance;
6 |
7 | // if (!performance) {
8 | // // 当前浏览器不支持
9 | // console.log('你的浏览器不支持 performance 接口');
10 | // return;
11 | // }
12 |
13 |
14 | // var t = performance.timing;
15 | // var times = {};
16 |
17 | // //【重要】页面加载完成的时间
18 | // //【原因】这几乎代表了用户等待页面可用的时间
19 | // times.loadPage = t.loadEventEnd - t.loadEventStart;
20 | // //加载耗时
21 | // times.pageloadtime = t.loadEventEnd - t.navigationStart;
22 | // //【重要】解析 DOM 树结构的时间
23 | // //【原因】反省下你的 DOM 树嵌套是不是太多了!
24 | // times.domReady = t.domContentLoadedEventEnd - t.domContentLoadedEventStart;
25 |
26 | // //【重要】重定向的时间
27 | // //【原因】拒绝重定向!比如,http://example.com/ 就不该写成 http://example.com
28 | // times.redirect = t.redirectEnd - t.redirectStart;
29 |
30 | // //【重要】DNS 查询时间
31 | // //【原因】DNS 预加载做了么?页面内是不是使用了太多不同的域名导致域名查询的时间太长?
32 | // // 可使用 HTML5 Prefetch 预查询 DNS ,见:[HTML5 prefetch](http://segmentfault.com/a/1190000000633364)
33 | // times.lookupDomain = t.domainLookupEnd - t.domainLookupStart;
34 |
35 | // //【重要】读取页面第一个字节的时间
36 | // //【原因】这可以理解为用户拿到你的资源占用的时间,加异地机房了么,加CDN 处理了么?加带宽了么?加 CPU 运算速度了么?
37 | // // TTFB 即 Time To First Byte 的意思
38 | // // 维基百科:https://en.wikipedia.org/wiki/Time_To_First_Byte
39 | // times.ttfb = t.responseStart - t.navigationStart;
40 |
41 | // //【重要】内容加载完成的时间
42 | // //【原因】页面内容经过 gzip 压缩了么,静态资源 css/js 等压缩了么?
43 | // times.request = t.responseEnd - t.requestStart;
44 |
45 | // //【重要】执行 onload 回调函数的时间
46 | // //【原因】是否太多不必要的操作都放到 onload 回调函数里执行了,考虑过延迟加载、按需加载的策略么?
47 | // times.loadEvent = t.loadEventEnd - t.loadEventStart;
48 |
49 | // // DNS 缓存时间
50 | // times.appcache = t.domainLookupStart - t.fetchStart;
51 |
52 | // // 卸载页面的时间
53 | // times.unloadEvent = t.unloadEventEnd - t.unloadEventStart;
54 |
55 | // // TCP 建立连接完成握手的时间
56 | // times.connect = t.connectEnd - t.connectStart;
57 | // console.log('当前网络加载时间:',(performance.now() / 1000).toFixed(2), '秒')
58 |
59 | // return times;
60 | // }
61 | // getPerformanceTiming()
62 |
--------------------------------------------------------------------------------
/src/components/leftnav/Leftnav.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | // import { hashHistory } from 'react-router';
3 | import PropTypes from 'prop-types';
4 |
5 | import { Link } from 'react-router-dom';
6 |
7 | import { Menu } from 'antd';
8 | const SubMenu = Menu.SubMenu;
9 | const MenuItemGroup = Menu.ItemGroup;
10 |
11 | import './Leftnav.styl';
12 |
13 | const router = [
14 | { title: '首页', key: '/home', childRouter: [] },
15 | { title: '错误', key: '/notfound', },
16 | {
17 | title: '多路由', key: '/content',
18 | },
19 | ]
20 |
21 | class LeftNav extends React.Component {
22 | constructor(props,context) {
23 | super(props,context);
24 | this.context.router;
25 | }
26 |
27 |
28 | handleClick = (e) => {
29 | // // console.log(e,'---');
30 | // let path='';
31 | // e.keyPath.reverse();
32 | // for(var i=0;i
41 |
64 |
65 | );
66 | }
67 |
68 | componentWillMount() { }
69 | componentDidMount() { }
70 | componentWillReceiveProps(nextProps) { }
71 | shouldComponentUpdate(nextProps, nextState) { return true; }
72 | componentWillUpdate(nextProps, nextState) { }
73 | componentDidUpdate(prevProps, prevState) { }
74 | componentWillUnmount() { }
75 | }
76 | export default LeftNav;
77 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "reactscratch",
3 | "version": "1.0.0",
4 | "description": "Create react app from scratch",
5 | "keywords": [
6 | "react-app",
7 | "scratch"
8 | ],
9 | "main": "index.js",
10 | "scripts": {
11 | "start": "webpack-dev-server --open --color --hot --mode development --inline --profile --env.dev=development",
12 | "build": "webpack --progress --profile --mode production --env.dev=production",
13 | "dev": " webpack --progress --profile --mode development --env.dev=dev",
14 | "dll": " webpack --mode production --profile --inline --config webpack.dll.config.js "
15 | },
16 | "author": "",
17 | "license": "ISC",
18 | "dependencies": {
19 | "antd": "3.20.3",
20 | "axios": "^0.18.0",
21 | "js-yaml": "^3.13.1",
22 | "querystring": "^0.2.0",
23 | "querystringify": "^2.1.1",
24 | "react": "16.8.0",
25 | "react-dom": "16.8.0",
26 | "react-loadable": "^5.4.0",
27 | "react-router": "^4.3.1",
28 | "react-router-dom": "^4.3.1"
29 | },
30 | "devDependencies": {
31 | "babel-cli": "^6.26.0",
32 | "babel-core": "^6.26.3",
33 | "babel-loader": "^7.1.4",
34 | "babel-plugin-import": "^1.7.0",
35 | "babel-plugin-syntax-dynamic-import": "^6.18.0",
36 | "babel-plugin-transform-class-properties": "^6.24.1",
37 | "babel-preset-env": "^1.6.1",
38 | "babel-preset-latest": "^6.24.1",
39 | "babel-preset-react": "^6.24.1",
40 | "babel-preset-stage-2": "^6.24.1",
41 | "cache-loader": "^1.2.2",
42 | "clean-webpack-plugin": "^0.1.19",
43 | "copy-webpack-plugin": "^4.5.2",
44 | "css-loader": "^0.28.11",
45 | "extended-define-webpack-plugin": "^0.1.3",
46 | "happypack": "^5.0.0",
47 | "html-loader": "^0.5.5",
48 | "html-webpack-plugin": "^3.2.0",
49 | "less-loader": "^4.1.0",
50 | "mini-css-extract-plugin": "^0.4.0",
51 | "postcss-loader": "^2.1.5",
52 | "prop-types": "^15.6.1",
53 | "react-redux": "^5.0.7",
54 | "redux": "^4.0.0",
55 | "redux-saga": "^0.16.0",
56 | "style-loader": "^0.21.0",
57 | "stylus": "^0.54.5",
58 | "stylus-loader": "^3.0.2",
59 | "svg-sprite-loader": "^3.8.0",
60 | "uglifyjs-webpack-plugin": "^1.2.5",
61 | "url-loader": "^1.0.1",
62 | "webpack": "^4.7.0",
63 | "webpack-bundle-analyzer": "^3.3.2",
64 | "webpack-cli": "^3.0.8",
65 | "webpack-dev-server": "^3.1.4"
66 | },
67 | "theme": {
68 | "font-size-base": "12px",
69 | "layout-header-background": "rgb(64, 64, 64)",
70 | "menu-dark-submenu-bg": "rgb(51, 51, 51)",
71 | "mainColor": "#0590FF"
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/src/images/logo.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #### webpack4-es6-react
2 |
3 | 描述:一个基于 webpack4、React16、react-router-dom、es6、antd、axios 的前端项目,路由支持按需加载或按模块加载,ui框架默认配置是 antd,支持按需加载组件;
4 | [typescript版本](https://github.com/NewPrototype/webpack4-es6-react-typescript)
5 |
6 | #### 运行项目
7 | - ```cnpm i ``` 安装依赖,注意版本依赖版本
8 | - ```npm run start ``` 启动项目
9 |
10 | #### 锁定依赖版本
11 | - ``` npm install || yarn install```
12 |
13 | #### 运行方法
14 | - ```npm run dll``` 公共包第一次生成,后续都不需要重新生成,加快打包速度
15 | - ```npm run start``` 启动项目
16 | - ```npm run dev``` 快捷打包,不压缩文件,发布测试环境
17 | - ```npm run build``` 正式打包,压缩文件,发布生产环境
18 |
19 | #### 功能
20 |
21 | - 编译速度快(使用 happypack 插件实现多线程执行任务)
22 | - 按需加载(不同页面文件单独压缩)
23 | - hash 指纹(js、css 文件自动添加版本号)
24 | - es2015
25 | - 支持 less、stylus
26 | - 图片体积小支持 base64 压缩
27 | - 支持 svg 解析
28 | - 支持自定义打包文件的目录
29 | - 支持热更新
30 | - 支持打包输出 map 文件,去除 console.log,注释
31 | - 支持打包压缩文件
32 | - 按需切割路由 router.js 里面
33 | - 增加 dll 加快打包速度
34 |
35 | #### 开发依赖
36 | - webpack 4.23.1
37 | - react 16.6.0
38 | - react-dom 16.6.0
39 | - react-router-dom 4.3.1
40 | - antd 3.10.4
41 | - axios 0.18.0
42 | - react-loadable 5.5.0
43 | - react-router 4.3.1
44 | #### 目录结构
45 |
46 | ```
47 | .
48 | ├── dist --------------------- 打包文件
49 | ├── dll --------------------- dll文件
50 | ├── webpack.config --------------------- webpack相关配置
51 | ├── package.json --------------------- 项目配置
52 | ├── yarn.json --------------------- yarn 版本锁定
53 | ├── README.md ------------------------ 说明文件
54 | └── src ------------------------------ 源码目录
55 | └── util ------------------------ 辅助
56 | └── error.js --------------------- 错误检查
57 | └── performance.js --------------------- 页面性能
58 | ├── index.js -------------------------- 入口文件路由配置
59 | ├── router.js -------------------------- 路由配置
60 | ├── loadable.js -------------------------- 按需加载路由配置
61 | ├── index.styl -------------------------- 公共css
62 | ├── index.html -------------------------- html入口文件
63 | ├── components ------------------- 业务模块集合目录
64 | ├── api ------------------- 接口集合
65 | ├── images ----------------------- 图片资源目录
66 | └── pages ------------------------ 页面集合目录
67 | └── home --------------------- home页面
68 | ├── Home.js ------------- 页面入口文件
69 | └── Home.styl -------- 页面样式
70 | └── index.js -------- 页面样式
71 | ```
72 |
73 | #### 克隆
74 |
75 | ```
76 | git clone https://github.com/NewPrototype/webpack4-es6-react.git
77 | ```
78 |
79 |
80 | #### 速度
81 |
82 | - 打包速度从 76830 毫秒提升到 14830 毫秒
83 | ```
84 | Hash: 7e97185183a8397d60dc
85 | Version: webpack 4.23.1
86 | Time: 14830ms
87 | Built at: 2018-06-11 11:20:01
88 | ```
89 | - 热更新速度从 2500 毫到 500 毫秒左右
90 | ```
91 | Hash: df56e41b7815ca326b9e
92 | Version: webpack 4.23.1
93 | Time: 500ms
94 | Built at: 2018-06-12 15:27:47
95 | ```
96 |
97 | #### todoList
98 |
99 | - 按需加载路由
100 | - 输出 webpack 编译 json,分析编译时间
101 | - 支持 axios
102 | - 支持 TypeScript
103 | - 加入DllPlugin加快打包
104 | - 提高 webpack 编译速度(一直在持续...)
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require ('path');
2 | const theme = require (path.join (__dirname, '/package.json')).theme;
3 | const HtmlWebpackPlugin = require ('html-webpack-plugin'); //html
4 | const MiniCssExtractPlugin = require ('mini-css-extract-plugin'); //css压缩
5 | const UglifyJsPlugin = require ('uglifyjs-webpack-plugin'); //多线程压缩
6 | const ExtendedDefinePlugin = require ('extended-define-webpack-plugin'); //全局变量
7 | const CleanWebpackPlugin = require ('clean-webpack-plugin'); //清空
8 | const CopyWebpackPlugin = require ('copy-webpack-plugin'); //复制静态html
9 | const webpack = require ('webpack');
10 | const BundleAnalyzerPlugin = require ('webpack-bundle-analyzer')
11 | .BundleAnalyzerPlugin; //视图分析webpack情况
12 |
13 | const HappyPack = require ('happypack'); //多线程运行
14 | var happyThreadPool = HappyPack.ThreadPool ({size: 4});
15 | const devtool = {
16 | dev: 'cheap-eval-source-map',
17 | development: 'cheap-eval-source-map',
18 | production: 'source-map',
19 | };
20 | const PORT = 8000;
21 | const publicPath = {
22 | dev: './',
23 | development: '/',
24 | production: './',
25 | };
26 |
27 | const minimize = {
28 | dev: false,
29 | development: false,
30 | production: true,
31 | };
32 | const stylus = {
33 | dev: ['cache-loader', 'style-loader', 'css-loader', 'stylus-loader'],
34 | development: ['style-loader', 'css-loader', 'stylus-loader'],
35 | production: [
36 | {loader: MiniCssExtractPlugin.loader},
37 | {
38 | loader: 'css-loader',
39 | options: {
40 | minimize: true, //压缩
41 | sourceMap: true,
42 | },
43 | },
44 | {loader: 'stylus-loader'},
45 | ],
46 | };
47 |
48 | /**
49 | * 公共插件
50 | */
51 | const pluginsPublic = [
52 | new HtmlWebpackPlugin ({
53 | template: `${__dirname}/src/index.html`, //源html
54 | inject: 'body', //注入到哪里
55 | filename: 'index.html', //输出后的名称
56 | hash: true, //为静态资源生成hash值
57 | showErrors: true,
58 | }),
59 | new BundleAnalyzerPlugin ({
60 | //另外一种方式
61 | analyzerMode: 'server',
62 | analyzerHost: '127.0.0.1',
63 | analyzerPort: 8889,
64 | reportFilename: 'report.html',
65 | defaultSizes: 'parsed',
66 | openAnalyzer: true,
67 | generateStatsFile: false,
68 | statsFilename: 'stats.json',
69 | statsOptions: null,
70 | logLevel: 'info',
71 | }),
72 | new MiniCssExtractPlugin ({
73 | chunkFilename: '[chunkhash].css',
74 | }),
75 | new HappyPack ({
76 | //多线程运行 默认是电脑核数-1
77 | id: 'babel', //对于loaders id
78 | loaders: ['cache-loader', 'babel-loader?cacheDirectory'], //是用babel-loader解析
79 | threadPool: happyThreadPool,
80 | verboseWhenProfiling: true, //显示信息
81 | }),
82 | ];
83 | /**
84 | * 公共打包插件
85 | */
86 | const pluginsBuild = [
87 | new ExtendedDefinePlugin ({
88 | //全局变量
89 | __LOCAL__: false,
90 | }),
91 | new CleanWebpackPlugin (['dist'], {
92 | root: __dirname,
93 | }),
94 | new CopyWebpackPlugin ([
95 | {from: 'dll/Dll.js', to: path.resolve (__dirname, 'dist')},
96 | ]),
97 | new webpack.HashedModuleIdsPlugin (),
98 | new webpack.DllReferencePlugin ({
99 | context: __dirname,
100 | manifest: require ('./dll/manifest.json'),
101 | }),
102 | ];
103 |
104 | const plugins = {
105 | dev: [].concat (pluginsPublic, pluginsBuild),
106 | development: [].concat (
107 | pluginsPublic,
108 | new ExtendedDefinePlugin ({
109 | //全局变量
110 | __LOCAL__: true,
111 | })
112 | ),
113 | production: [].concat (
114 | pluginsPublic,
115 | pluginsBuild,
116 | new UglifyJsPlugin ({
117 | // sourceMap: true,
118 | parallel: true,
119 | cache: true,
120 | uglifyOptions: {
121 | output: {
122 | comments: false,
123 | beautify: false,
124 | },
125 | compress: {
126 | drop_console: true,
127 | warnings: false,
128 | drop_debugger: true,
129 | },
130 | },
131 | exclude: /(node_modules|bower_components)/,
132 | }) //压缩,生成map
133 | ),
134 | };
135 |
136 | module.exports = (env, argv) => {
137 | const dev = env.dev;
138 | return {
139 | devServer: {
140 | compress: true, //开发服务器是否启动gzip等压缩
141 | port: PORT, //端口
142 | historyApiFallback: true, //不会出现404页面,避免找不到
143 | },
144 | devtool: devtool[dev], //cheap-eval-source-map 是一种比较快捷的map,没有映射列
145 | performance: {
146 | maxEntrypointSize: 250000, //入口文件大小,性能指示
147 | maxAssetSize: 250000, //生成的最大文件
148 | hints: 'warning', //依赖过大是否错误提示
149 | },
150 | entry: {
151 | //入口
152 | index: './src/index.js',
153 | },
154 | output: {
155 | //出口
156 | path: path.resolve (__dirname, 'dist'), //出口路径
157 | chunkFilename: '[name]-[hash].js',
158 | filename: '[name].js',
159 | publicPath: publicPath[dev], //公共路径
160 | },
161 | resolve: {
162 | mainFields: ['main', 'jsnext:main', 'browser'], //npm读取先后方式 jsnext:main 是采用es6模块写法
163 | alias: {
164 | //快捷入口
165 | api: path.resolve (__dirname, 'src/api'),
166 | components: path.resolve (__dirname, 'src/components/'),
167 | pages: path.resolve (__dirname, 'src/pages/'),
168 | styles: path.resolve (__dirname, 'src/styles/'),
169 | lib: path.resolve (__dirname, 'src/lib/'),
170 | util: path.resolve (__dirname, 'src/lib/util/'),
171 | server: path.resolve (__dirname, 'src/lib/server'),
172 | svg: path.resolve (__dirname, 'src/images/svg/'),
173 | images: path.resolve (__dirname, 'src/images'),
174 | react: path.resolve (__dirname, 'node_modules/react/'),
175 | 'react-dom': path.resolve (__dirname, 'node_modules/react-dom'),
176 | 'react-redux': path.resolve (
177 | __dirname,
178 | 'node_modules/react-redux/lib/index.js'
179 | ),
180 | img: path.resolve (__dirname, 'src/images'),
181 | },
182 | },
183 | module: {
184 | noParse: /node_modules\/(moment|chart\.js)/, //不解析
185 | rules: [
186 | {
187 | test: /\.(js|jsx)$/,
188 | exclude: /(node_modules|bower_components)/, //排除
189 | include: [path.resolve (__dirname, 'src')], //包括
190 | loader: 'happypack/loader?id=babel',
191 | },
192 | {
193 | test: /\.css$/,
194 | use: [
195 | {loader: MiniCssExtractPlugin.loader},
196 | {
197 | loader: 'css-loader',
198 | options: {
199 | minimize: minimize[dev], //压缩
200 | sourceMap: minimize[dev],
201 | },
202 | },
203 | ],
204 | },
205 | {
206 | test: /\.(html)$/,
207 | use: {
208 | loader: 'html-loader',
209 | options: {
210 | attrs: [':data-src'], //为了做图片懒加载,那些属性需要被,制定什么属性被该loader解析
211 | minimize: false,
212 | },
213 | },
214 | },
215 | {
216 | test: /\.(png|jpg|gif|jpeg|ttf|svg)$/,
217 | exclude: /(node_modules|bower_components)/,
218 | include: [path.resolve (__dirname, 'src/images')],
219 | use: [
220 | {
221 | loader: 'url-loader?limit=8024', //limit 图片大小的衡量,进行base64处理
222 | options: {
223 | name: '[path][name].[ext]',
224 | },
225 | },
226 | ],
227 | },
228 | {
229 | test: /\.styl/,
230 | exclude: /(node_modules|bower_components)/,
231 | include: [path.resolve (__dirname, 'src')],
232 | use: stylus[dev],
233 | },
234 | {
235 | test: /\.less/,
236 | use: [
237 | {loader: MiniCssExtractPlugin.loader},
238 |
239 | {
240 | loader: 'css-loader',
241 | options: {
242 | minimize: minimize[dev], //压缩
243 | sourceMap: minimize[dev],
244 | },
245 | },
246 | {loader: 'less-loader', options: {modifyVars: theme}},
247 | ],
248 | },
249 | ],
250 | },
251 | plugins: plugins[dev],
252 | };
253 | };
254 |
--------------------------------------------------------------------------------
/dll/manifest.json:
--------------------------------------------------------------------------------
1 | {"name":"vendor_967f8e20effd29cc9573","content":{"./node_modules/prop-types/index.js":{"id":0,"buildMeta":{"providedExports":true}},"./node_modules/react/index.js":{"id":1,"buildMeta":{"providedExports":true}},"./node_modules/history/es/PathUtils.js":{"id":2,"buildMeta":{"exportsType":"namespace","providedExports":["addLeadingSlash","stripLeadingSlash","hasBasename","stripBasename","stripTrailingSlash","parsePath","createPath"]}},"./node_modules/warning/warning.js":{"id":3,"buildMeta":{"providedExports":true}},"./node_modules/invariant/browser.js":{"id":4,"buildMeta":{"providedExports":true}},"./node_modules/history/node_modules/warning/browser.js":{"id":5,"buildMeta":{"providedExports":true}},"./node_modules/history/es/index.js":{"id":6,"buildMeta":{"exportsType":"namespace","providedExports":["createBrowserHistory","createHashHistory","createMemoryHistory","createLocation","locationsAreEqual","parsePath","createPath"]}},"./node_modules/history/es/LocationUtils.js":{"id":7,"buildMeta":{"exportsType":"namespace","providedExports":["createLocation","locationsAreEqual"]}},"./node_modules/history/es/DOMUtils.js":{"id":8,"buildMeta":{"exportsType":"namespace","providedExports":["canUseDOM","addEventListener","removeEventListener","getConfirmation","supportsHistory","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent"]}},"./node_modules/axios/lib/utils.js":{"id":9,"buildMeta":{"providedExports":true}},"./node_modules/react-router/es/Router.js":{"id":10,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/matchPath.js":{"id":11,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/generatePath.js":{"id":12,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/Route.js":{"id":13,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/Router.js":{"id":14,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/history/es/createTransitionManager.js":{"id":15,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/Link.js":{"id":16,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/MemoryRouter.js":{"id":17,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/Prompt.js":{"id":18,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/Redirect.js":{"id":19,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/StaticRouter.js":{"id":20,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/Switch.js":{"id":21,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router/es/withRouter.js":{"id":22,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/Route.js":{"id":23,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/path-to-regexp/index.js":{"id":24,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/defaults.js":{"id":25,"buildMeta":{"providedExports":true}},"./node_modules/object-assign/index.js":{"id":26,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/bind.js":{"id":27,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/adapters/xhr.js":{"id":28,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/createError.js":{"id":29,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/cancel/isCancel.js":{"id":30,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/cancel/Cancel.js":{"id":31,"buildMeta":{"providedExports":true}},"./node_modules/history/es/createBrowserHistory.js":{"id":32,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/history/es/createHashHistory.js":{"id":33,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/history/es/createMemoryHistory.js":{"id":34,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/BrowserRouter.js":{"id":35,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/HashRouter.js":{"id":36,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/MemoryRouter.js":{"id":37,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/NavLink.js":{"id":38,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/Prompt.js":{"id":39,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/Redirect.js":{"id":40,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/StaticRouter.js":{"id":41,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/Switch.js":{"id":42,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/generatePath.js":{"id":43,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/matchPath.js":{"id":44,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/react-router-dom/es/withRouter.js":{"id":45,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/resolve-pathname/index.js":{"id":46,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/value-equal/index.js":{"id":47,"buildMeta":{"exportsType":"namespace","providedExports":["default"]}},"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":{"id":48,"buildMeta":{"providedExports":true}},"./node_modules/react/cjs/react.production.min.js":{"id":50,"buildMeta":{"providedExports":true}},"./node_modules/react-dom/index.js":{"id":51,"buildMeta":{"providedExports":true}},"./node_modules/react-dom/cjs/react-dom.production.min.js":{"id":52,"buildMeta":{"providedExports":true}},"./node_modules/scheduler/index.js":{"id":53,"buildMeta":{"providedExports":true}},"./node_modules/scheduler/cjs/scheduler.production.min.js":{"id":54,"buildMeta":{"providedExports":true}},"./node_modules/axios/index.js":{"id":55,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/axios.js":{"id":56,"buildMeta":{"providedExports":true}},"./node_modules/is-buffer/index.js":{"id":57,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/Axios.js":{"id":58,"buildMeta":{"providedExports":true}},"./node_modules/process/browser.js":{"id":59,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":{"id":60,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/settle.js":{"id":61,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/enhanceError.js":{"id":62,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/buildURL.js":{"id":63,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/parseHeaders.js":{"id":64,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":{"id":65,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/btoa.js":{"id":66,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/cookies.js":{"id":67,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/InterceptorManager.js":{"id":68,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/dispatchRequest.js":{"id":69,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/transformData.js":{"id":70,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":{"id":71,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/combineURLs.js":{"id":72,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/cancel/CancelToken.js":{"id":73,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/spread.js":{"id":74,"buildMeta":{"providedExports":true}},"./node_modules/react-loadable/lib/index.js":{"id":75,"buildMeta":{"providedExports":true}},"./node_modules/prop-types/factoryWithThrowingShims.js":{"id":76,"buildMeta":{"providedExports":true}},"./node_modules/prop-types/lib/ReactPropTypesSecret.js":{"id":77,"buildMeta":{"providedExports":true}},"./node_modules/react-router/es/index.js":{"id":78,"buildMeta":{"exportsType":"namespace","providedExports":["MemoryRouter","Prompt","Redirect","Route","Router","StaticRouter","Switch","generatePath","matchPath","withRouter"]}},"./node_modules/isarray/index.js":{"id":79,"buildMeta":{"providedExports":true}},"./node_modules/react-router-dom/es/index.js":{"id":80,"buildMeta":{"exportsType":"namespace","providedExports":["BrowserRouter","HashRouter","Link","MemoryRouter","NavLink","Prompt","Redirect","Route","Router","StaticRouter","Switch","generatePath","matchPath","withRouter"]}},"./node_modules/querystring-es3/index.js":{"id":81,"buildMeta":{"providedExports":true}},"./node_modules/querystring-es3/decode.js":{"id":82,"buildMeta":{"providedExports":true}},"./node_modules/querystring-es3/encode.js":{"id":83,"buildMeta":{"providedExports":true}}}}
--------------------------------------------------------------------------------
/dist/index.css:
--------------------------------------------------------------------------------
1 | /* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
2 | /* stylelint-disable no-duplicate-selectors */
3 | /* stylelint-disable */
4 | /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
5 | /* stylelint-disable at-rule-no-unknown */
6 | @font-face {
7 | font-family: "Chinese Quote";
8 | src: local("PingFang SC"), local("SimSun");
9 | unicode-range: U+2018, U+2019, U+201c, U+201d;
10 | }
11 | html,
12 | body {
13 | width: 100%;
14 | height: 100%;
15 | }
16 | input::-ms-clear,
17 | input::-ms-reveal {
18 | display: none;
19 | }
20 | *,
21 | *::before,
22 | *::after {
23 | -webkit-box-sizing: border-box;
24 | box-sizing: border-box;
25 | }
26 | html {
27 | font-family: sans-serif;
28 | line-height: 1.15;
29 | -webkit-text-size-adjust: 100%;
30 | -ms-text-size-adjust: 100%;
31 | -ms-overflow-style: scrollbar;
32 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
33 | }
34 | @-ms-viewport {
35 | width: device-width;
36 | }
37 | article,
38 | aside,
39 | dialog,
40 | figcaption,
41 | figure,
42 | footer,
43 | header,
44 | hgroup,
45 | main,
46 | nav,
47 | section {
48 | display: block;
49 | }
50 | body {
51 | margin: 0;
52 | font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
53 | font-size: 14px;
54 | font-variant: tabular-nums;
55 | line-height: 1.5;
56 | color: rgba(0, 0, 0, 0.65);
57 | background-color: #fff;
58 | }
59 | [tabindex="-1"]:focus {
60 | outline: none !important;
61 | }
62 | hr {
63 | -webkit-box-sizing: content-box;
64 | box-sizing: content-box;
65 | height: 0;
66 | overflow: visible;
67 | }
68 | h1,
69 | h2,
70 | h3,
71 | h4,
72 | h5,
73 | h6 {
74 | margin-top: 0;
75 | margin-bottom: .5em;
76 | color: rgba(0, 0, 0, 0.85);
77 | font-weight: 500;
78 | }
79 | p {
80 | margin-top: 0;
81 | margin-bottom: 1em;
82 | }
83 | abbr[title],
84 | abbr[data-original-title] {
85 | text-decoration: underline;
86 | -webkit-text-decoration: underline dotted;
87 | text-decoration: underline dotted;
88 | cursor: help;
89 | border-bottom: 0;
90 | }
91 | address {
92 | margin-bottom: 1em;
93 | font-style: normal;
94 | line-height: inherit;
95 | }
96 | input[type="text"],
97 | input[type="password"],
98 | input[type="number"],
99 | textarea {
100 | -webkit-appearance: none;
101 | }
102 | ol,
103 | ul,
104 | dl {
105 | margin-top: 0;
106 | margin-bottom: 1em;
107 | }
108 | ol ol,
109 | ul ul,
110 | ol ul,
111 | ul ol {
112 | margin-bottom: 0;
113 | }
114 | dt {
115 | font-weight: 500;
116 | }
117 | dd {
118 | margin-bottom: .5em;
119 | margin-left: 0;
120 | }
121 | blockquote {
122 | margin: 0 0 1em;
123 | }
124 | dfn {
125 | font-style: italic;
126 | }
127 | b,
128 | strong {
129 | font-weight: bolder;
130 | }
131 | small {
132 | font-size: 80%;
133 | }
134 | sub,
135 | sup {
136 | position: relative;
137 | font-size: 75%;
138 | line-height: 0;
139 | vertical-align: baseline;
140 | }
141 | sub {
142 | bottom: -0.25em;
143 | }
144 | sup {
145 | top: -0.5em;
146 | }
147 | a {
148 | color: #1890ff;
149 | background-color: transparent;
150 | text-decoration: none;
151 | outline: none;
152 | cursor: pointer;
153 | -webkit-transition: color .3s;
154 | transition: color .3s;
155 | -webkit-text-decoration-skip: objects;
156 | }
157 | a:focus {
158 | text-decoration: underline;
159 | -webkit-text-decoration-skip: ink;
160 | text-decoration-skip: ink;
161 | }
162 | a:hover {
163 | color: #40a9ff;
164 | }
165 | a:active {
166 | color: #096dd9;
167 | }
168 | a:active,
169 | a:hover {
170 | outline: 0;
171 | text-decoration: none;
172 | }
173 | a[disabled] {
174 | color: rgba(0, 0, 0, 0.25);
175 | cursor: not-allowed;
176 | pointer-events: none;
177 | }
178 | pre,
179 | code,
180 | kbd,
181 | samp {
182 | font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
183 | font-size: 1em;
184 | }
185 | pre {
186 | margin-top: 0;
187 | margin-bottom: 1em;
188 | overflow: auto;
189 | }
190 | figure {
191 | margin: 0 0 1em;
192 | }
193 | img {
194 | vertical-align: middle;
195 | border-style: none;
196 | }
197 | svg:not(:root) {
198 | overflow: hidden;
199 | }
200 | a,
201 | area,
202 | button,
203 | [role="button"],
204 | input:not([type=range]),
205 | label,
206 | select,
207 | summary,
208 | textarea {
209 | -ms-touch-action: manipulation;
210 | touch-action: manipulation;
211 | }
212 | table {
213 | border-collapse: collapse;
214 | }
215 | caption {
216 | padding-top: .75em;
217 | padding-bottom: .3em;
218 | color: rgba(0, 0, 0, 0.45);
219 | text-align: left;
220 | caption-side: bottom;
221 | }
222 | th {
223 | text-align: inherit;
224 | }
225 | input,
226 | button,
227 | select,
228 | optgroup,
229 | textarea {
230 | margin: 0;
231 | font-family: inherit;
232 | font-size: inherit;
233 | line-height: inherit;
234 | color: inherit;
235 | }
236 | button,
237 | input {
238 | overflow: visible;
239 | }
240 | button,
241 | select {
242 | text-transform: none;
243 | }
244 | button,
245 | html [type="button"],
246 | [type="reset"],
247 | [type="submit"] {
248 | -webkit-appearance: button;
249 | }
250 | button::-moz-focus-inner,
251 | [type="button"]::-moz-focus-inner,
252 | [type="reset"]::-moz-focus-inner,
253 | [type="submit"]::-moz-focus-inner {
254 | padding: 0;
255 | border-style: none;
256 | }
257 | input[type="radio"],
258 | input[type="checkbox"] {
259 | -webkit-box-sizing: border-box;
260 | box-sizing: border-box;
261 | padding: 0;
262 | }
263 | input[type="date"],
264 | input[type="time"],
265 | input[type="datetime-local"],
266 | input[type="month"] {
267 | -webkit-appearance: listbox;
268 | }
269 | textarea {
270 | overflow: auto;
271 | resize: vertical;
272 | }
273 | fieldset {
274 | min-width: 0;
275 | padding: 0;
276 | margin: 0;
277 | border: 0;
278 | }
279 | legend {
280 | display: block;
281 | width: 100%;
282 | max-width: 100%;
283 | padding: 0;
284 | margin-bottom: .5em;
285 | font-size: 1.5em;
286 | line-height: inherit;
287 | color: inherit;
288 | white-space: normal;
289 | }
290 | progress {
291 | vertical-align: baseline;
292 | }
293 | [type="number"]::-webkit-inner-spin-button,
294 | [type="number"]::-webkit-outer-spin-button {
295 | height: auto;
296 | }
297 | [type="search"] {
298 | outline-offset: -2px;
299 | -webkit-appearance: none;
300 | }
301 | [type="search"]::-webkit-search-cancel-button,
302 | [type="search"]::-webkit-search-decoration {
303 | -webkit-appearance: none;
304 | }
305 | ::-webkit-file-upload-button {
306 | font: inherit;
307 | -webkit-appearance: button;
308 | }
309 | output {
310 | display: inline-block;
311 | }
312 | summary {
313 | display: list-item;
314 | }
315 | template {
316 | display: none;
317 | }
318 | [hidden] {
319 | display: none !important;
320 | }
321 | mark {
322 | padding: .2em;
323 | background-color: #feffe6;
324 | }
325 | ::-moz-selection {
326 | background: #1890ff;
327 | color: #fff;
328 | }
329 | ::selection {
330 | background: #1890ff;
331 | color: #fff;
332 | }
333 | .clearfix {
334 | zoom: 1;
335 | }
336 | .clearfix:before,
337 | .clearfix:after {
338 | content: "";
339 | display: table;
340 | }
341 | .clearfix:after {
342 | clear: both;
343 | }
344 | .anticon {
345 | display: inline-block;
346 | font-style: normal;
347 | vertical-align: -0.125em;
348 | text-align: center;
349 | text-transform: none;
350 | line-height: 0;
351 | text-rendering: optimizeLegibility;
352 | -webkit-font-smoothing: antialiased;
353 | -moz-osx-font-smoothing: grayscale;
354 | }
355 | .anticon > * {
356 | line-height: 1;
357 | }
358 | .anticon svg {
359 | display: inline-block;
360 | }
361 | .anticon:before {
362 | display: none;
363 | }
364 | .anticon .anticon-icon {
365 | display: block;
366 | }
367 | .anticon-spin:before {
368 | display: inline-block;
369 | -webkit-animation: loadingCircle 1s infinite linear;
370 | animation: loadingCircle 1s infinite linear;
371 | }
372 | .anticon-spin {
373 | display: inline-block;
374 | -webkit-animation: loadingCircle 1s infinite linear;
375 | animation: loadingCircle 1s infinite linear;
376 | }
377 | .fade-enter,
378 | .fade-appear {
379 | -webkit-animation-duration: 0.2s;
380 | animation-duration: 0.2s;
381 | -webkit-animation-fill-mode: both;
382 | animation-fill-mode: both;
383 | -webkit-animation-play-state: paused;
384 | animation-play-state: paused;
385 | }
386 | .fade-leave {
387 | -webkit-animation-duration: 0.2s;
388 | animation-duration: 0.2s;
389 | -webkit-animation-fill-mode: both;
390 | animation-fill-mode: both;
391 | -webkit-animation-play-state: paused;
392 | animation-play-state: paused;
393 | }
394 | .fade-enter.fade-enter-active,
395 | .fade-appear.fade-appear-active {
396 | -webkit-animation-name: antFadeIn;
397 | animation-name: antFadeIn;
398 | -webkit-animation-play-state: running;
399 | animation-play-state: running;
400 | }
401 | .fade-leave.fade-leave-active {
402 | -webkit-animation-name: antFadeOut;
403 | animation-name: antFadeOut;
404 | -webkit-animation-play-state: running;
405 | animation-play-state: running;
406 | pointer-events: none;
407 | }
408 | .fade-enter,
409 | .fade-appear {
410 | opacity: 0;
411 | -webkit-animation-timing-function: linear;
412 | animation-timing-function: linear;
413 | }
414 | .fade-leave {
415 | -webkit-animation-timing-function: linear;
416 | animation-timing-function: linear;
417 | }
418 | @-webkit-keyframes antFadeIn {
419 | 0% {
420 | opacity: 0;
421 | }
422 | 100% {
423 | opacity: 1;
424 | }
425 | }
426 | @keyframes antFadeIn {
427 | 0% {
428 | opacity: 0;
429 | }
430 | 100% {
431 | opacity: 1;
432 | }
433 | }
434 | @-webkit-keyframes antFadeOut {
435 | 0% {
436 | opacity: 1;
437 | }
438 | 100% {
439 | opacity: 0;
440 | }
441 | }
442 | @keyframes antFadeOut {
443 | 0% {
444 | opacity: 1;
445 | }
446 | 100% {
447 | opacity: 0;
448 | }
449 | }
450 | .move-up-enter,
451 | .move-up-appear {
452 | -webkit-animation-duration: 0.2s;
453 | animation-duration: 0.2s;
454 | -webkit-animation-fill-mode: both;
455 | animation-fill-mode: both;
456 | -webkit-animation-play-state: paused;
457 | animation-play-state: paused;
458 | }
459 | .move-up-leave {
460 | -webkit-animation-duration: 0.2s;
461 | animation-duration: 0.2s;
462 | -webkit-animation-fill-mode: both;
463 | animation-fill-mode: both;
464 | -webkit-animation-play-state: paused;
465 | animation-play-state: paused;
466 | }
467 | .move-up-enter.move-up-enter-active,
468 | .move-up-appear.move-up-appear-active {
469 | -webkit-animation-name: antMoveUpIn;
470 | animation-name: antMoveUpIn;
471 | -webkit-animation-play-state: running;
472 | animation-play-state: running;
473 | }
474 | .move-up-leave.move-up-leave-active {
475 | -webkit-animation-name: antMoveUpOut;
476 | animation-name: antMoveUpOut;
477 | -webkit-animation-play-state: running;
478 | animation-play-state: running;
479 | pointer-events: none;
480 | }
481 | .move-up-enter,
482 | .move-up-appear {
483 | opacity: 0;
484 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
485 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
486 | }
487 | .move-up-leave {
488 | -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
489 | animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
490 | }
491 | .move-down-enter,
492 | .move-down-appear {
493 | -webkit-animation-duration: 0.2s;
494 | animation-duration: 0.2s;
495 | -webkit-animation-fill-mode: both;
496 | animation-fill-mode: both;
497 | -webkit-animation-play-state: paused;
498 | animation-play-state: paused;
499 | }
500 | .move-down-leave {
501 | -webkit-animation-duration: 0.2s;
502 | animation-duration: 0.2s;
503 | -webkit-animation-fill-mode: both;
504 | animation-fill-mode: both;
505 | -webkit-animation-play-state: paused;
506 | animation-play-state: paused;
507 | }
508 | .move-down-enter.move-down-enter-active,
509 | .move-down-appear.move-down-appear-active {
510 | -webkit-animation-name: antMoveDownIn;
511 | animation-name: antMoveDownIn;
512 | -webkit-animation-play-state: running;
513 | animation-play-state: running;
514 | }
515 | .move-down-leave.move-down-leave-active {
516 | -webkit-animation-name: antMoveDownOut;
517 | animation-name: antMoveDownOut;
518 | -webkit-animation-play-state: running;
519 | animation-play-state: running;
520 | pointer-events: none;
521 | }
522 | .move-down-enter,
523 | .move-down-appear {
524 | opacity: 0;
525 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
526 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
527 | }
528 | .move-down-leave {
529 | -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
530 | animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
531 | }
532 | .move-left-enter,
533 | .move-left-appear {
534 | -webkit-animation-duration: 0.2s;
535 | animation-duration: 0.2s;
536 | -webkit-animation-fill-mode: both;
537 | animation-fill-mode: both;
538 | -webkit-animation-play-state: paused;
539 | animation-play-state: paused;
540 | }
541 | .move-left-leave {
542 | -webkit-animation-duration: 0.2s;
543 | animation-duration: 0.2s;
544 | -webkit-animation-fill-mode: both;
545 | animation-fill-mode: both;
546 | -webkit-animation-play-state: paused;
547 | animation-play-state: paused;
548 | }
549 | .move-left-enter.move-left-enter-active,
550 | .move-left-appear.move-left-appear-active {
551 | -webkit-animation-name: antMoveLeftIn;
552 | animation-name: antMoveLeftIn;
553 | -webkit-animation-play-state: running;
554 | animation-play-state: running;
555 | }
556 | .move-left-leave.move-left-leave-active {
557 | -webkit-animation-name: antMoveLeftOut;
558 | animation-name: antMoveLeftOut;
559 | -webkit-animation-play-state: running;
560 | animation-play-state: running;
561 | pointer-events: none;
562 | }
563 | .move-left-enter,
564 | .move-left-appear {
565 | opacity: 0;
566 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
567 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
568 | }
569 | .move-left-leave {
570 | -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
571 | animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
572 | }
573 | .move-right-enter,
574 | .move-right-appear {
575 | -webkit-animation-duration: 0.2s;
576 | animation-duration: 0.2s;
577 | -webkit-animation-fill-mode: both;
578 | animation-fill-mode: both;
579 | -webkit-animation-play-state: paused;
580 | animation-play-state: paused;
581 | }
582 | .move-right-leave {
583 | -webkit-animation-duration: 0.2s;
584 | animation-duration: 0.2s;
585 | -webkit-animation-fill-mode: both;
586 | animation-fill-mode: both;
587 | -webkit-animation-play-state: paused;
588 | animation-play-state: paused;
589 | }
590 | .move-right-enter.move-right-enter-active,
591 | .move-right-appear.move-right-appear-active {
592 | -webkit-animation-name: antMoveRightIn;
593 | animation-name: antMoveRightIn;
594 | -webkit-animation-play-state: running;
595 | animation-play-state: running;
596 | }
597 | .move-right-leave.move-right-leave-active {
598 | -webkit-animation-name: antMoveRightOut;
599 | animation-name: antMoveRightOut;
600 | -webkit-animation-play-state: running;
601 | animation-play-state: running;
602 | pointer-events: none;
603 | }
604 | .move-right-enter,
605 | .move-right-appear {
606 | opacity: 0;
607 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
608 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
609 | }
610 | .move-right-leave {
611 | -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
612 | animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);
613 | }
614 | @-webkit-keyframes antMoveDownIn {
615 | 0% {
616 | -webkit-transform-origin: 0 0;
617 | transform-origin: 0 0;
618 | -webkit-transform: translateY(100%);
619 | transform: translateY(100%);
620 | opacity: 0;
621 | }
622 | 100% {
623 | -webkit-transform-origin: 0 0;
624 | transform-origin: 0 0;
625 | -webkit-transform: translateY(0%);
626 | transform: translateY(0%);
627 | opacity: 1;
628 | }
629 | }
630 | @keyframes antMoveDownIn {
631 | 0% {
632 | -webkit-transform-origin: 0 0;
633 | transform-origin: 0 0;
634 | -webkit-transform: translateY(100%);
635 | transform: translateY(100%);
636 | opacity: 0;
637 | }
638 | 100% {
639 | -webkit-transform-origin: 0 0;
640 | transform-origin: 0 0;
641 | -webkit-transform: translateY(0%);
642 | transform: translateY(0%);
643 | opacity: 1;
644 | }
645 | }
646 | @-webkit-keyframes antMoveDownOut {
647 | 0% {
648 | -webkit-transform-origin: 0 0;
649 | transform-origin: 0 0;
650 | -webkit-transform: translateY(0%);
651 | transform: translateY(0%);
652 | opacity: 1;
653 | }
654 | 100% {
655 | -webkit-transform-origin: 0 0;
656 | transform-origin: 0 0;
657 | -webkit-transform: translateY(100%);
658 | transform: translateY(100%);
659 | opacity: 0;
660 | }
661 | }
662 | @keyframes antMoveDownOut {
663 | 0% {
664 | -webkit-transform-origin: 0 0;
665 | transform-origin: 0 0;
666 | -webkit-transform: translateY(0%);
667 | transform: translateY(0%);
668 | opacity: 1;
669 | }
670 | 100% {
671 | -webkit-transform-origin: 0 0;
672 | transform-origin: 0 0;
673 | -webkit-transform: translateY(100%);
674 | transform: translateY(100%);
675 | opacity: 0;
676 | }
677 | }
678 | @-webkit-keyframes antMoveLeftIn {
679 | 0% {
680 | -webkit-transform-origin: 0 0;
681 | transform-origin: 0 0;
682 | -webkit-transform: translateX(-100%);
683 | transform: translateX(-100%);
684 | opacity: 0;
685 | }
686 | 100% {
687 | -webkit-transform-origin: 0 0;
688 | transform-origin: 0 0;
689 | -webkit-transform: translateX(0%);
690 | transform: translateX(0%);
691 | opacity: 1;
692 | }
693 | }
694 | @keyframes antMoveLeftIn {
695 | 0% {
696 | -webkit-transform-origin: 0 0;
697 | transform-origin: 0 0;
698 | -webkit-transform: translateX(-100%);
699 | transform: translateX(-100%);
700 | opacity: 0;
701 | }
702 | 100% {
703 | -webkit-transform-origin: 0 0;
704 | transform-origin: 0 0;
705 | -webkit-transform: translateX(0%);
706 | transform: translateX(0%);
707 | opacity: 1;
708 | }
709 | }
710 | @-webkit-keyframes antMoveLeftOut {
711 | 0% {
712 | -webkit-transform-origin: 0 0;
713 | transform-origin: 0 0;
714 | -webkit-transform: translateX(0%);
715 | transform: translateX(0%);
716 | opacity: 1;
717 | }
718 | 100% {
719 | -webkit-transform-origin: 0 0;
720 | transform-origin: 0 0;
721 | -webkit-transform: translateX(-100%);
722 | transform: translateX(-100%);
723 | opacity: 0;
724 | }
725 | }
726 | @keyframes antMoveLeftOut {
727 | 0% {
728 | -webkit-transform-origin: 0 0;
729 | transform-origin: 0 0;
730 | -webkit-transform: translateX(0%);
731 | transform: translateX(0%);
732 | opacity: 1;
733 | }
734 | 100% {
735 | -webkit-transform-origin: 0 0;
736 | transform-origin: 0 0;
737 | -webkit-transform: translateX(-100%);
738 | transform: translateX(-100%);
739 | opacity: 0;
740 | }
741 | }
742 | @-webkit-keyframes antMoveRightIn {
743 | 0% {
744 | opacity: 0;
745 | -webkit-transform-origin: 0 0;
746 | transform-origin: 0 0;
747 | -webkit-transform: translateX(100%);
748 | transform: translateX(100%);
749 | }
750 | 100% {
751 | opacity: 1;
752 | -webkit-transform-origin: 0 0;
753 | transform-origin: 0 0;
754 | -webkit-transform: translateX(0%);
755 | transform: translateX(0%);
756 | }
757 | }
758 | @keyframes antMoveRightIn {
759 | 0% {
760 | opacity: 0;
761 | -webkit-transform-origin: 0 0;
762 | transform-origin: 0 0;
763 | -webkit-transform: translateX(100%);
764 | transform: translateX(100%);
765 | }
766 | 100% {
767 | opacity: 1;
768 | -webkit-transform-origin: 0 0;
769 | transform-origin: 0 0;
770 | -webkit-transform: translateX(0%);
771 | transform: translateX(0%);
772 | }
773 | }
774 | @-webkit-keyframes antMoveRightOut {
775 | 0% {
776 | -webkit-transform-origin: 0 0;
777 | transform-origin: 0 0;
778 | -webkit-transform: translateX(0%);
779 | transform: translateX(0%);
780 | opacity: 1;
781 | }
782 | 100% {
783 | -webkit-transform-origin: 0 0;
784 | transform-origin: 0 0;
785 | -webkit-transform: translateX(100%);
786 | transform: translateX(100%);
787 | opacity: 0;
788 | }
789 | }
790 | @keyframes antMoveRightOut {
791 | 0% {
792 | -webkit-transform-origin: 0 0;
793 | transform-origin: 0 0;
794 | -webkit-transform: translateX(0%);
795 | transform: translateX(0%);
796 | opacity: 1;
797 | }
798 | 100% {
799 | -webkit-transform-origin: 0 0;
800 | transform-origin: 0 0;
801 | -webkit-transform: translateX(100%);
802 | transform: translateX(100%);
803 | opacity: 0;
804 | }
805 | }
806 | @-webkit-keyframes antMoveUpIn {
807 | 0% {
808 | -webkit-transform-origin: 0 0;
809 | transform-origin: 0 0;
810 | -webkit-transform: translateY(-100%);
811 | transform: translateY(-100%);
812 | opacity: 0;
813 | }
814 | 100% {
815 | -webkit-transform-origin: 0 0;
816 | transform-origin: 0 0;
817 | -webkit-transform: translateY(0%);
818 | transform: translateY(0%);
819 | opacity: 1;
820 | }
821 | }
822 | @keyframes antMoveUpIn {
823 | 0% {
824 | -webkit-transform-origin: 0 0;
825 | transform-origin: 0 0;
826 | -webkit-transform: translateY(-100%);
827 | transform: translateY(-100%);
828 | opacity: 0;
829 | }
830 | 100% {
831 | -webkit-transform-origin: 0 0;
832 | transform-origin: 0 0;
833 | -webkit-transform: translateY(0%);
834 | transform: translateY(0%);
835 | opacity: 1;
836 | }
837 | }
838 | @-webkit-keyframes antMoveUpOut {
839 | 0% {
840 | -webkit-transform-origin: 0 0;
841 | transform-origin: 0 0;
842 | -webkit-transform: translateY(0%);
843 | transform: translateY(0%);
844 | opacity: 1;
845 | }
846 | 100% {
847 | -webkit-transform-origin: 0 0;
848 | transform-origin: 0 0;
849 | -webkit-transform: translateY(-100%);
850 | transform: translateY(-100%);
851 | opacity: 0;
852 | }
853 | }
854 | @keyframes antMoveUpOut {
855 | 0% {
856 | -webkit-transform-origin: 0 0;
857 | transform-origin: 0 0;
858 | -webkit-transform: translateY(0%);
859 | transform: translateY(0%);
860 | opacity: 1;
861 | }
862 | 100% {
863 | -webkit-transform-origin: 0 0;
864 | transform-origin: 0 0;
865 | -webkit-transform: translateY(-100%);
866 | transform: translateY(-100%);
867 | opacity: 0;
868 | }
869 | }
870 | @-webkit-keyframes loadingCircle {
871 | 100% {
872 | -webkit-transform: rotate(360deg);
873 | transform: rotate(360deg);
874 | }
875 | }
876 | @keyframes loadingCircle {
877 | 100% {
878 | -webkit-transform: rotate(360deg);
879 | transform: rotate(360deg);
880 | }
881 | }
882 | [ant-click-animating],
883 | [ant-click-animating-without-extra-node] {
884 | position: relative;
885 | }
886 | [ant-click-animating-without-extra-node]:after,
887 | .ant-click-animating-node {
888 | content: '';
889 | position: absolute;
890 | top: -1px;
891 | left: -1px;
892 | bottom: -1px;
893 | right: -1px;
894 | border-radius: inherit;
895 | border: 0 solid #1890ff;
896 | opacity: 0.2;
897 | -webkit-animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
898 | animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);
899 | -webkit-animation-fill-mode: forwards;
900 | animation-fill-mode: forwards;
901 | display: block;
902 | pointer-events: none;
903 | }
904 | @-webkit-keyframes waveEffect {
905 | 100% {
906 | top: -6px;
907 | left: -6px;
908 | bottom: -6px;
909 | right: -6px;
910 | border-width: 6px;
911 | }
912 | }
913 | @keyframes waveEffect {
914 | 100% {
915 | top: -6px;
916 | left: -6px;
917 | bottom: -6px;
918 | right: -6px;
919 | border-width: 6px;
920 | }
921 | }
922 | @-webkit-keyframes fadeEffect {
923 | 100% {
924 | opacity: 0;
925 | }
926 | }
927 | @keyframes fadeEffect {
928 | 100% {
929 | opacity: 0;
930 | }
931 | }
932 | .slide-up-enter,
933 | .slide-up-appear {
934 | -webkit-animation-duration: 0.2s;
935 | animation-duration: 0.2s;
936 | -webkit-animation-fill-mode: both;
937 | animation-fill-mode: both;
938 | -webkit-animation-play-state: paused;
939 | animation-play-state: paused;
940 | }
941 | .slide-up-leave {
942 | -webkit-animation-duration: 0.2s;
943 | animation-duration: 0.2s;
944 | -webkit-animation-fill-mode: both;
945 | animation-fill-mode: both;
946 | -webkit-animation-play-state: paused;
947 | animation-play-state: paused;
948 | }
949 | .slide-up-enter.slide-up-enter-active,
950 | .slide-up-appear.slide-up-appear-active {
951 | -webkit-animation-name: antSlideUpIn;
952 | animation-name: antSlideUpIn;
953 | -webkit-animation-play-state: running;
954 | animation-play-state: running;
955 | }
956 | .slide-up-leave.slide-up-leave-active {
957 | -webkit-animation-name: antSlideUpOut;
958 | animation-name: antSlideUpOut;
959 | -webkit-animation-play-state: running;
960 | animation-play-state: running;
961 | pointer-events: none;
962 | }
963 | .slide-up-enter,
964 | .slide-up-appear {
965 | opacity: 0;
966 | -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
967 | animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
968 | }
969 | .slide-up-leave {
970 | -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
971 | animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
972 | }
973 | .slide-down-enter,
974 | .slide-down-appear {
975 | -webkit-animation-duration: 0.2s;
976 | animation-duration: 0.2s;
977 | -webkit-animation-fill-mode: both;
978 | animation-fill-mode: both;
979 | -webkit-animation-play-state: paused;
980 | animation-play-state: paused;
981 | }
982 | .slide-down-leave {
983 | -webkit-animation-duration: 0.2s;
984 | animation-duration: 0.2s;
985 | -webkit-animation-fill-mode: both;
986 | animation-fill-mode: both;
987 | -webkit-animation-play-state: paused;
988 | animation-play-state: paused;
989 | }
990 | .slide-down-enter.slide-down-enter-active,
991 | .slide-down-appear.slide-down-appear-active {
992 | -webkit-animation-name: antSlideDownIn;
993 | animation-name: antSlideDownIn;
994 | -webkit-animation-play-state: running;
995 | animation-play-state: running;
996 | }
997 | .slide-down-leave.slide-down-leave-active {
998 | -webkit-animation-name: antSlideDownOut;
999 | animation-name: antSlideDownOut;
1000 | -webkit-animation-play-state: running;
1001 | animation-play-state: running;
1002 | pointer-events: none;
1003 | }
1004 | .slide-down-enter,
1005 | .slide-down-appear {
1006 | opacity: 0;
1007 | -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
1008 | animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
1009 | }
1010 | .slide-down-leave {
1011 | -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
1012 | animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
1013 | }
1014 | .slide-left-enter,
1015 | .slide-left-appear {
1016 | -webkit-animation-duration: 0.2s;
1017 | animation-duration: 0.2s;
1018 | -webkit-animation-fill-mode: both;
1019 | animation-fill-mode: both;
1020 | -webkit-animation-play-state: paused;
1021 | animation-play-state: paused;
1022 | }
1023 | .slide-left-leave {
1024 | -webkit-animation-duration: 0.2s;
1025 | animation-duration: 0.2s;
1026 | -webkit-animation-fill-mode: both;
1027 | animation-fill-mode: both;
1028 | -webkit-animation-play-state: paused;
1029 | animation-play-state: paused;
1030 | }
1031 | .slide-left-enter.slide-left-enter-active,
1032 | .slide-left-appear.slide-left-appear-active {
1033 | -webkit-animation-name: antSlideLeftIn;
1034 | animation-name: antSlideLeftIn;
1035 | -webkit-animation-play-state: running;
1036 | animation-play-state: running;
1037 | }
1038 | .slide-left-leave.slide-left-leave-active {
1039 | -webkit-animation-name: antSlideLeftOut;
1040 | animation-name: antSlideLeftOut;
1041 | -webkit-animation-play-state: running;
1042 | animation-play-state: running;
1043 | pointer-events: none;
1044 | }
1045 | .slide-left-enter,
1046 | .slide-left-appear {
1047 | opacity: 0;
1048 | -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
1049 | animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
1050 | }
1051 | .slide-left-leave {
1052 | -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
1053 | animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
1054 | }
1055 | .slide-right-enter,
1056 | .slide-right-appear {
1057 | -webkit-animation-duration: 0.2s;
1058 | animation-duration: 0.2s;
1059 | -webkit-animation-fill-mode: both;
1060 | animation-fill-mode: both;
1061 | -webkit-animation-play-state: paused;
1062 | animation-play-state: paused;
1063 | }
1064 | .slide-right-leave {
1065 | -webkit-animation-duration: 0.2s;
1066 | animation-duration: 0.2s;
1067 | -webkit-animation-fill-mode: both;
1068 | animation-fill-mode: both;
1069 | -webkit-animation-play-state: paused;
1070 | animation-play-state: paused;
1071 | }
1072 | .slide-right-enter.slide-right-enter-active,
1073 | .slide-right-appear.slide-right-appear-active {
1074 | -webkit-animation-name: antSlideRightIn;
1075 | animation-name: antSlideRightIn;
1076 | -webkit-animation-play-state: running;
1077 | animation-play-state: running;
1078 | }
1079 | .slide-right-leave.slide-right-leave-active {
1080 | -webkit-animation-name: antSlideRightOut;
1081 | animation-name: antSlideRightOut;
1082 | -webkit-animation-play-state: running;
1083 | animation-play-state: running;
1084 | pointer-events: none;
1085 | }
1086 | .slide-right-enter,
1087 | .slide-right-appear {
1088 | opacity: 0;
1089 | -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
1090 | animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
1091 | }
1092 | .slide-right-leave {
1093 | -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
1094 | animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
1095 | }
1096 | @-webkit-keyframes antSlideUpIn {
1097 | 0% {
1098 | opacity: 0;
1099 | -webkit-transform-origin: 0% 0%;
1100 | transform-origin: 0% 0%;
1101 | -webkit-transform: scaleY(0.8);
1102 | transform: scaleY(0.8);
1103 | }
1104 | 100% {
1105 | opacity: 1;
1106 | -webkit-transform-origin: 0% 0%;
1107 | transform-origin: 0% 0%;
1108 | -webkit-transform: scaleY(1);
1109 | transform: scaleY(1);
1110 | }
1111 | }
1112 | @keyframes antSlideUpIn {
1113 | 0% {
1114 | opacity: 0;
1115 | -webkit-transform-origin: 0% 0%;
1116 | transform-origin: 0% 0%;
1117 | -webkit-transform: scaleY(0.8);
1118 | transform: scaleY(0.8);
1119 | }
1120 | 100% {
1121 | opacity: 1;
1122 | -webkit-transform-origin: 0% 0%;
1123 | transform-origin: 0% 0%;
1124 | -webkit-transform: scaleY(1);
1125 | transform: scaleY(1);
1126 | }
1127 | }
1128 | @-webkit-keyframes antSlideUpOut {
1129 | 0% {
1130 | opacity: 1;
1131 | -webkit-transform-origin: 0% 0%;
1132 | transform-origin: 0% 0%;
1133 | -webkit-transform: scaleY(1);
1134 | transform: scaleY(1);
1135 | }
1136 | 100% {
1137 | opacity: 0;
1138 | -webkit-transform-origin: 0% 0%;
1139 | transform-origin: 0% 0%;
1140 | -webkit-transform: scaleY(0.8);
1141 | transform: scaleY(0.8);
1142 | }
1143 | }
1144 | @keyframes antSlideUpOut {
1145 | 0% {
1146 | opacity: 1;
1147 | -webkit-transform-origin: 0% 0%;
1148 | transform-origin: 0% 0%;
1149 | -webkit-transform: scaleY(1);
1150 | transform: scaleY(1);
1151 | }
1152 | 100% {
1153 | opacity: 0;
1154 | -webkit-transform-origin: 0% 0%;
1155 | transform-origin: 0% 0%;
1156 | -webkit-transform: scaleY(0.8);
1157 | transform: scaleY(0.8);
1158 | }
1159 | }
1160 | @-webkit-keyframes antSlideDownIn {
1161 | 0% {
1162 | opacity: 0;
1163 | -webkit-transform-origin: 100% 100%;
1164 | transform-origin: 100% 100%;
1165 | -webkit-transform: scaleY(0.8);
1166 | transform: scaleY(0.8);
1167 | }
1168 | 100% {
1169 | opacity: 1;
1170 | -webkit-transform-origin: 100% 100%;
1171 | transform-origin: 100% 100%;
1172 | -webkit-transform: scaleY(1);
1173 | transform: scaleY(1);
1174 | }
1175 | }
1176 | @keyframes antSlideDownIn {
1177 | 0% {
1178 | opacity: 0;
1179 | -webkit-transform-origin: 100% 100%;
1180 | transform-origin: 100% 100%;
1181 | -webkit-transform: scaleY(0.8);
1182 | transform: scaleY(0.8);
1183 | }
1184 | 100% {
1185 | opacity: 1;
1186 | -webkit-transform-origin: 100% 100%;
1187 | transform-origin: 100% 100%;
1188 | -webkit-transform: scaleY(1);
1189 | transform: scaleY(1);
1190 | }
1191 | }
1192 | @-webkit-keyframes antSlideDownOut {
1193 | 0% {
1194 | opacity: 1;
1195 | -webkit-transform-origin: 100% 100%;
1196 | transform-origin: 100% 100%;
1197 | -webkit-transform: scaleY(1);
1198 | transform: scaleY(1);
1199 | }
1200 | 100% {
1201 | opacity: 0;
1202 | -webkit-transform-origin: 100% 100%;
1203 | transform-origin: 100% 100%;
1204 | -webkit-transform: scaleY(0.8);
1205 | transform: scaleY(0.8);
1206 | }
1207 | }
1208 | @keyframes antSlideDownOut {
1209 | 0% {
1210 | opacity: 1;
1211 | -webkit-transform-origin: 100% 100%;
1212 | transform-origin: 100% 100%;
1213 | -webkit-transform: scaleY(1);
1214 | transform: scaleY(1);
1215 | }
1216 | 100% {
1217 | opacity: 0;
1218 | -webkit-transform-origin: 100% 100%;
1219 | transform-origin: 100% 100%;
1220 | -webkit-transform: scaleY(0.8);
1221 | transform: scaleY(0.8);
1222 | }
1223 | }
1224 | @-webkit-keyframes antSlideLeftIn {
1225 | 0% {
1226 | opacity: 0;
1227 | -webkit-transform-origin: 0% 0%;
1228 | transform-origin: 0% 0%;
1229 | -webkit-transform: scaleX(0.8);
1230 | transform: scaleX(0.8);
1231 | }
1232 | 100% {
1233 | opacity: 1;
1234 | -webkit-transform-origin: 0% 0%;
1235 | transform-origin: 0% 0%;
1236 | -webkit-transform: scaleX(1);
1237 | transform: scaleX(1);
1238 | }
1239 | }
1240 | @keyframes antSlideLeftIn {
1241 | 0% {
1242 | opacity: 0;
1243 | -webkit-transform-origin: 0% 0%;
1244 | transform-origin: 0% 0%;
1245 | -webkit-transform: scaleX(0.8);
1246 | transform: scaleX(0.8);
1247 | }
1248 | 100% {
1249 | opacity: 1;
1250 | -webkit-transform-origin: 0% 0%;
1251 | transform-origin: 0% 0%;
1252 | -webkit-transform: scaleX(1);
1253 | transform: scaleX(1);
1254 | }
1255 | }
1256 | @-webkit-keyframes antSlideLeftOut {
1257 | 0% {
1258 | opacity: 1;
1259 | -webkit-transform-origin: 0% 0%;
1260 | transform-origin: 0% 0%;
1261 | -webkit-transform: scaleX(1);
1262 | transform: scaleX(1);
1263 | }
1264 | 100% {
1265 | opacity: 0;
1266 | -webkit-transform-origin: 0% 0%;
1267 | transform-origin: 0% 0%;
1268 | -webkit-transform: scaleX(0.8);
1269 | transform: scaleX(0.8);
1270 | }
1271 | }
1272 | @keyframes antSlideLeftOut {
1273 | 0% {
1274 | opacity: 1;
1275 | -webkit-transform-origin: 0% 0%;
1276 | transform-origin: 0% 0%;
1277 | -webkit-transform: scaleX(1);
1278 | transform: scaleX(1);
1279 | }
1280 | 100% {
1281 | opacity: 0;
1282 | -webkit-transform-origin: 0% 0%;
1283 | transform-origin: 0% 0%;
1284 | -webkit-transform: scaleX(0.8);
1285 | transform: scaleX(0.8);
1286 | }
1287 | }
1288 | @-webkit-keyframes antSlideRightIn {
1289 | 0% {
1290 | opacity: 0;
1291 | -webkit-transform-origin: 100% 0%;
1292 | transform-origin: 100% 0%;
1293 | -webkit-transform: scaleX(0.8);
1294 | transform: scaleX(0.8);
1295 | }
1296 | 100% {
1297 | opacity: 1;
1298 | -webkit-transform-origin: 100% 0%;
1299 | transform-origin: 100% 0%;
1300 | -webkit-transform: scaleX(1);
1301 | transform: scaleX(1);
1302 | }
1303 | }
1304 | @keyframes antSlideRightIn {
1305 | 0% {
1306 | opacity: 0;
1307 | -webkit-transform-origin: 100% 0%;
1308 | transform-origin: 100% 0%;
1309 | -webkit-transform: scaleX(0.8);
1310 | transform: scaleX(0.8);
1311 | }
1312 | 100% {
1313 | opacity: 1;
1314 | -webkit-transform-origin: 100% 0%;
1315 | transform-origin: 100% 0%;
1316 | -webkit-transform: scaleX(1);
1317 | transform: scaleX(1);
1318 | }
1319 | }
1320 | @-webkit-keyframes antSlideRightOut {
1321 | 0% {
1322 | opacity: 1;
1323 | -webkit-transform-origin: 100% 0%;
1324 | transform-origin: 100% 0%;
1325 | -webkit-transform: scaleX(1);
1326 | transform: scaleX(1);
1327 | }
1328 | 100% {
1329 | opacity: 0;
1330 | -webkit-transform-origin: 100% 0%;
1331 | transform-origin: 100% 0%;
1332 | -webkit-transform: scaleX(0.8);
1333 | transform: scaleX(0.8);
1334 | }
1335 | }
1336 | @keyframes antSlideRightOut {
1337 | 0% {
1338 | opacity: 1;
1339 | -webkit-transform-origin: 100% 0%;
1340 | transform-origin: 100% 0%;
1341 | -webkit-transform: scaleX(1);
1342 | transform: scaleX(1);
1343 | }
1344 | 100% {
1345 | opacity: 0;
1346 | -webkit-transform-origin: 100% 0%;
1347 | transform-origin: 100% 0%;
1348 | -webkit-transform: scaleX(0.8);
1349 | transform: scaleX(0.8);
1350 | }
1351 | }
1352 | .swing-enter,
1353 | .swing-appear {
1354 | -webkit-animation-duration: 0.2s;
1355 | animation-duration: 0.2s;
1356 | -webkit-animation-fill-mode: both;
1357 | animation-fill-mode: both;
1358 | -webkit-animation-play-state: paused;
1359 | animation-play-state: paused;
1360 | }
1361 | .swing-enter.swing-enter-active,
1362 | .swing-appear.swing-appear-active {
1363 | -webkit-animation-name: antSwingIn;
1364 | animation-name: antSwingIn;
1365 | -webkit-animation-play-state: running;
1366 | animation-play-state: running;
1367 | }
1368 | @-webkit-keyframes antSwingIn {
1369 | 0%,
1370 | 100% {
1371 | -webkit-transform: translateX(0);
1372 | transform: translateX(0);
1373 | }
1374 | 20% {
1375 | -webkit-transform: translateX(-10px);
1376 | transform: translateX(-10px);
1377 | }
1378 | 40% {
1379 | -webkit-transform: translateX(10px);
1380 | transform: translateX(10px);
1381 | }
1382 | 60% {
1383 | -webkit-transform: translateX(-5px);
1384 | transform: translateX(-5px);
1385 | }
1386 | 80% {
1387 | -webkit-transform: translateX(5px);
1388 | transform: translateX(5px);
1389 | }
1390 | }
1391 | @keyframes antSwingIn {
1392 | 0%,
1393 | 100% {
1394 | -webkit-transform: translateX(0);
1395 | transform: translateX(0);
1396 | }
1397 | 20% {
1398 | -webkit-transform: translateX(-10px);
1399 | transform: translateX(-10px);
1400 | }
1401 | 40% {
1402 | -webkit-transform: translateX(10px);
1403 | transform: translateX(10px);
1404 | }
1405 | 60% {
1406 | -webkit-transform: translateX(-5px);
1407 | transform: translateX(-5px);
1408 | }
1409 | 80% {
1410 | -webkit-transform: translateX(5px);
1411 | transform: translateX(5px);
1412 | }
1413 | }
1414 | .zoom-enter,
1415 | .zoom-appear {
1416 | -webkit-animation-duration: 0.2s;
1417 | animation-duration: 0.2s;
1418 | -webkit-animation-fill-mode: both;
1419 | animation-fill-mode: both;
1420 | -webkit-animation-play-state: paused;
1421 | animation-play-state: paused;
1422 | }
1423 | .zoom-leave {
1424 | -webkit-animation-duration: 0.2s;
1425 | animation-duration: 0.2s;
1426 | -webkit-animation-fill-mode: both;
1427 | animation-fill-mode: both;
1428 | -webkit-animation-play-state: paused;
1429 | animation-play-state: paused;
1430 | }
1431 | .zoom-enter.zoom-enter-active,
1432 | .zoom-appear.zoom-appear-active {
1433 | -webkit-animation-name: antZoomIn;
1434 | animation-name: antZoomIn;
1435 | -webkit-animation-play-state: running;
1436 | animation-play-state: running;
1437 | }
1438 | .zoom-leave.zoom-leave-active {
1439 | -webkit-animation-name: antZoomOut;
1440 | animation-name: antZoomOut;
1441 | -webkit-animation-play-state: running;
1442 | animation-play-state: running;
1443 | pointer-events: none;
1444 | }
1445 | .zoom-enter,
1446 | .zoom-appear {
1447 | -webkit-transform: scale(0);
1448 | -ms-transform: scale(0);
1449 | transform: scale(0);
1450 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1451 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1452 | }
1453 | .zoom-leave {
1454 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1455 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1456 | }
1457 | .zoom-big-enter,
1458 | .zoom-big-appear {
1459 | -webkit-animation-duration: 0.2s;
1460 | animation-duration: 0.2s;
1461 | -webkit-animation-fill-mode: both;
1462 | animation-fill-mode: both;
1463 | -webkit-animation-play-state: paused;
1464 | animation-play-state: paused;
1465 | }
1466 | .zoom-big-leave {
1467 | -webkit-animation-duration: 0.2s;
1468 | animation-duration: 0.2s;
1469 | -webkit-animation-fill-mode: both;
1470 | animation-fill-mode: both;
1471 | -webkit-animation-play-state: paused;
1472 | animation-play-state: paused;
1473 | }
1474 | .zoom-big-enter.zoom-big-enter-active,
1475 | .zoom-big-appear.zoom-big-appear-active {
1476 | -webkit-animation-name: antZoomBigIn;
1477 | animation-name: antZoomBigIn;
1478 | -webkit-animation-play-state: running;
1479 | animation-play-state: running;
1480 | }
1481 | .zoom-big-leave.zoom-big-leave-active {
1482 | -webkit-animation-name: antZoomBigOut;
1483 | animation-name: antZoomBigOut;
1484 | -webkit-animation-play-state: running;
1485 | animation-play-state: running;
1486 | pointer-events: none;
1487 | }
1488 | .zoom-big-enter,
1489 | .zoom-big-appear {
1490 | -webkit-transform: scale(0);
1491 | -ms-transform: scale(0);
1492 | transform: scale(0);
1493 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1494 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1495 | }
1496 | .zoom-big-leave {
1497 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1498 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1499 | }
1500 | .zoom-big-fast-enter,
1501 | .zoom-big-fast-appear {
1502 | -webkit-animation-duration: 0.1s;
1503 | animation-duration: 0.1s;
1504 | -webkit-animation-fill-mode: both;
1505 | animation-fill-mode: both;
1506 | -webkit-animation-play-state: paused;
1507 | animation-play-state: paused;
1508 | }
1509 | .zoom-big-fast-leave {
1510 | -webkit-animation-duration: 0.1s;
1511 | animation-duration: 0.1s;
1512 | -webkit-animation-fill-mode: both;
1513 | animation-fill-mode: both;
1514 | -webkit-animation-play-state: paused;
1515 | animation-play-state: paused;
1516 | }
1517 | .zoom-big-fast-enter.zoom-big-fast-enter-active,
1518 | .zoom-big-fast-appear.zoom-big-fast-appear-active {
1519 | -webkit-animation-name: antZoomBigIn;
1520 | animation-name: antZoomBigIn;
1521 | -webkit-animation-play-state: running;
1522 | animation-play-state: running;
1523 | }
1524 | .zoom-big-fast-leave.zoom-big-fast-leave-active {
1525 | -webkit-animation-name: antZoomBigOut;
1526 | animation-name: antZoomBigOut;
1527 | -webkit-animation-play-state: running;
1528 | animation-play-state: running;
1529 | pointer-events: none;
1530 | }
1531 | .zoom-big-fast-enter,
1532 | .zoom-big-fast-appear {
1533 | -webkit-transform: scale(0);
1534 | -ms-transform: scale(0);
1535 | transform: scale(0);
1536 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1537 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1538 | }
1539 | .zoom-big-fast-leave {
1540 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1541 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1542 | }
1543 | .zoom-up-enter,
1544 | .zoom-up-appear {
1545 | -webkit-animation-duration: 0.2s;
1546 | animation-duration: 0.2s;
1547 | -webkit-animation-fill-mode: both;
1548 | animation-fill-mode: both;
1549 | -webkit-animation-play-state: paused;
1550 | animation-play-state: paused;
1551 | }
1552 | .zoom-up-leave {
1553 | -webkit-animation-duration: 0.2s;
1554 | animation-duration: 0.2s;
1555 | -webkit-animation-fill-mode: both;
1556 | animation-fill-mode: both;
1557 | -webkit-animation-play-state: paused;
1558 | animation-play-state: paused;
1559 | }
1560 | .zoom-up-enter.zoom-up-enter-active,
1561 | .zoom-up-appear.zoom-up-appear-active {
1562 | -webkit-animation-name: antZoomUpIn;
1563 | animation-name: antZoomUpIn;
1564 | -webkit-animation-play-state: running;
1565 | animation-play-state: running;
1566 | }
1567 | .zoom-up-leave.zoom-up-leave-active {
1568 | -webkit-animation-name: antZoomUpOut;
1569 | animation-name: antZoomUpOut;
1570 | -webkit-animation-play-state: running;
1571 | animation-play-state: running;
1572 | pointer-events: none;
1573 | }
1574 | .zoom-up-enter,
1575 | .zoom-up-appear {
1576 | -webkit-transform: scale(0);
1577 | -ms-transform: scale(0);
1578 | transform: scale(0);
1579 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1580 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1581 | }
1582 | .zoom-up-leave {
1583 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1584 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1585 | }
1586 | .zoom-down-enter,
1587 | .zoom-down-appear {
1588 | -webkit-animation-duration: 0.2s;
1589 | animation-duration: 0.2s;
1590 | -webkit-animation-fill-mode: both;
1591 | animation-fill-mode: both;
1592 | -webkit-animation-play-state: paused;
1593 | animation-play-state: paused;
1594 | }
1595 | .zoom-down-leave {
1596 | -webkit-animation-duration: 0.2s;
1597 | animation-duration: 0.2s;
1598 | -webkit-animation-fill-mode: both;
1599 | animation-fill-mode: both;
1600 | -webkit-animation-play-state: paused;
1601 | animation-play-state: paused;
1602 | }
1603 | .zoom-down-enter.zoom-down-enter-active,
1604 | .zoom-down-appear.zoom-down-appear-active {
1605 | -webkit-animation-name: antZoomDownIn;
1606 | animation-name: antZoomDownIn;
1607 | -webkit-animation-play-state: running;
1608 | animation-play-state: running;
1609 | }
1610 | .zoom-down-leave.zoom-down-leave-active {
1611 | -webkit-animation-name: antZoomDownOut;
1612 | animation-name: antZoomDownOut;
1613 | -webkit-animation-play-state: running;
1614 | animation-play-state: running;
1615 | pointer-events: none;
1616 | }
1617 | .zoom-down-enter,
1618 | .zoom-down-appear {
1619 | -webkit-transform: scale(0);
1620 | -ms-transform: scale(0);
1621 | transform: scale(0);
1622 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1623 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1624 | }
1625 | .zoom-down-leave {
1626 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1627 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1628 | }
1629 | .zoom-left-enter,
1630 | .zoom-left-appear {
1631 | -webkit-animation-duration: 0.2s;
1632 | animation-duration: 0.2s;
1633 | -webkit-animation-fill-mode: both;
1634 | animation-fill-mode: both;
1635 | -webkit-animation-play-state: paused;
1636 | animation-play-state: paused;
1637 | }
1638 | .zoom-left-leave {
1639 | -webkit-animation-duration: 0.2s;
1640 | animation-duration: 0.2s;
1641 | -webkit-animation-fill-mode: both;
1642 | animation-fill-mode: both;
1643 | -webkit-animation-play-state: paused;
1644 | animation-play-state: paused;
1645 | }
1646 | .zoom-left-enter.zoom-left-enter-active,
1647 | .zoom-left-appear.zoom-left-appear-active {
1648 | -webkit-animation-name: antZoomLeftIn;
1649 | animation-name: antZoomLeftIn;
1650 | -webkit-animation-play-state: running;
1651 | animation-play-state: running;
1652 | }
1653 | .zoom-left-leave.zoom-left-leave-active {
1654 | -webkit-animation-name: antZoomLeftOut;
1655 | animation-name: antZoomLeftOut;
1656 | -webkit-animation-play-state: running;
1657 | animation-play-state: running;
1658 | pointer-events: none;
1659 | }
1660 | .zoom-left-enter,
1661 | .zoom-left-appear {
1662 | -webkit-transform: scale(0);
1663 | -ms-transform: scale(0);
1664 | transform: scale(0);
1665 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1666 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1667 | }
1668 | .zoom-left-leave {
1669 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1670 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1671 | }
1672 | .zoom-right-enter,
1673 | .zoom-right-appear {
1674 | -webkit-animation-duration: 0.2s;
1675 | animation-duration: 0.2s;
1676 | -webkit-animation-fill-mode: both;
1677 | animation-fill-mode: both;
1678 | -webkit-animation-play-state: paused;
1679 | animation-play-state: paused;
1680 | }
1681 | .zoom-right-leave {
1682 | -webkit-animation-duration: 0.2s;
1683 | animation-duration: 0.2s;
1684 | -webkit-animation-fill-mode: both;
1685 | animation-fill-mode: both;
1686 | -webkit-animation-play-state: paused;
1687 | animation-play-state: paused;
1688 | }
1689 | .zoom-right-enter.zoom-right-enter-active,
1690 | .zoom-right-appear.zoom-right-appear-active {
1691 | -webkit-animation-name: antZoomRightIn;
1692 | animation-name: antZoomRightIn;
1693 | -webkit-animation-play-state: running;
1694 | animation-play-state: running;
1695 | }
1696 | .zoom-right-leave.zoom-right-leave-active {
1697 | -webkit-animation-name: antZoomRightOut;
1698 | animation-name: antZoomRightOut;
1699 | -webkit-animation-play-state: running;
1700 | animation-play-state: running;
1701 | pointer-events: none;
1702 | }
1703 | .zoom-right-enter,
1704 | .zoom-right-appear {
1705 | -webkit-transform: scale(0);
1706 | -ms-transform: scale(0);
1707 | transform: scale(0);
1708 | -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1709 | animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);
1710 | }
1711 | .zoom-right-leave {
1712 | -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1713 | animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);
1714 | }
1715 | @-webkit-keyframes antZoomIn {
1716 | 0% {
1717 | opacity: 0;
1718 | -webkit-transform: scale(0.2);
1719 | transform: scale(0.2);
1720 | }
1721 | 100% {
1722 | opacity: 1;
1723 | -webkit-transform: scale(1);
1724 | transform: scale(1);
1725 | }
1726 | }
1727 | @keyframes antZoomIn {
1728 | 0% {
1729 | opacity: 0;
1730 | -webkit-transform: scale(0.2);
1731 | transform: scale(0.2);
1732 | }
1733 | 100% {
1734 | opacity: 1;
1735 | -webkit-transform: scale(1);
1736 | transform: scale(1);
1737 | }
1738 | }
1739 | @-webkit-keyframes antZoomOut {
1740 | 0% {
1741 | -webkit-transform: scale(1);
1742 | transform: scale(1);
1743 | }
1744 | 100% {
1745 | opacity: 0;
1746 | -webkit-transform: scale(0.2);
1747 | transform: scale(0.2);
1748 | }
1749 | }
1750 | @keyframes antZoomOut {
1751 | 0% {
1752 | -webkit-transform: scale(1);
1753 | transform: scale(1);
1754 | }
1755 | 100% {
1756 | opacity: 0;
1757 | -webkit-transform: scale(0.2);
1758 | transform: scale(0.2);
1759 | }
1760 | }
1761 | @-webkit-keyframes antZoomBigIn {
1762 | 0% {
1763 | opacity: 0;
1764 | -webkit-transform: scale(0.8);
1765 | transform: scale(0.8);
1766 | }
1767 | 100% {
1768 | -webkit-transform: scale(1);
1769 | transform: scale(1);
1770 | }
1771 | }
1772 | @keyframes antZoomBigIn {
1773 | 0% {
1774 | opacity: 0;
1775 | -webkit-transform: scale(0.8);
1776 | transform: scale(0.8);
1777 | }
1778 | 100% {
1779 | -webkit-transform: scale(1);
1780 | transform: scale(1);
1781 | }
1782 | }
1783 | @-webkit-keyframes antZoomBigOut {
1784 | 0% {
1785 | -webkit-transform: scale(1);
1786 | transform: scale(1);
1787 | }
1788 | 100% {
1789 | opacity: 0;
1790 | -webkit-transform: scale(0.8);
1791 | transform: scale(0.8);
1792 | }
1793 | }
1794 | @keyframes antZoomBigOut {
1795 | 0% {
1796 | -webkit-transform: scale(1);
1797 | transform: scale(1);
1798 | }
1799 | 100% {
1800 | opacity: 0;
1801 | -webkit-transform: scale(0.8);
1802 | transform: scale(0.8);
1803 | }
1804 | }
1805 | @-webkit-keyframes antZoomUpIn {
1806 | 0% {
1807 | opacity: 0;
1808 | -webkit-transform-origin: 50% 0%;
1809 | transform-origin: 50% 0%;
1810 | -webkit-transform: scale(0.8);
1811 | transform: scale(0.8);
1812 | }
1813 | 100% {
1814 | -webkit-transform-origin: 50% 0%;
1815 | transform-origin: 50% 0%;
1816 | -webkit-transform: scale(1);
1817 | transform: scale(1);
1818 | }
1819 | }
1820 | @keyframes antZoomUpIn {
1821 | 0% {
1822 | opacity: 0;
1823 | -webkit-transform-origin: 50% 0%;
1824 | transform-origin: 50% 0%;
1825 | -webkit-transform: scale(0.8);
1826 | transform: scale(0.8);
1827 | }
1828 | 100% {
1829 | -webkit-transform-origin: 50% 0%;
1830 | transform-origin: 50% 0%;
1831 | -webkit-transform: scale(1);
1832 | transform: scale(1);
1833 | }
1834 | }
1835 | @-webkit-keyframes antZoomUpOut {
1836 | 0% {
1837 | -webkit-transform-origin: 50% 0%;
1838 | transform-origin: 50% 0%;
1839 | -webkit-transform: scale(1);
1840 | transform: scale(1);
1841 | }
1842 | 100% {
1843 | opacity: 0;
1844 | -webkit-transform-origin: 50% 0%;
1845 | transform-origin: 50% 0%;
1846 | -webkit-transform: scale(0.8);
1847 | transform: scale(0.8);
1848 | }
1849 | }
1850 | @keyframes antZoomUpOut {
1851 | 0% {
1852 | -webkit-transform-origin: 50% 0%;
1853 | transform-origin: 50% 0%;
1854 | -webkit-transform: scale(1);
1855 | transform: scale(1);
1856 | }
1857 | 100% {
1858 | opacity: 0;
1859 | -webkit-transform-origin: 50% 0%;
1860 | transform-origin: 50% 0%;
1861 | -webkit-transform: scale(0.8);
1862 | transform: scale(0.8);
1863 | }
1864 | }
1865 | @-webkit-keyframes antZoomLeftIn {
1866 | 0% {
1867 | opacity: 0;
1868 | -webkit-transform-origin: 0% 50%;
1869 | transform-origin: 0% 50%;
1870 | -webkit-transform: scale(0.8);
1871 | transform: scale(0.8);
1872 | }
1873 | 100% {
1874 | -webkit-transform-origin: 0% 50%;
1875 | transform-origin: 0% 50%;
1876 | -webkit-transform: scale(1);
1877 | transform: scale(1);
1878 | }
1879 | }
1880 | @keyframes antZoomLeftIn {
1881 | 0% {
1882 | opacity: 0;
1883 | -webkit-transform-origin: 0% 50%;
1884 | transform-origin: 0% 50%;
1885 | -webkit-transform: scale(0.8);
1886 | transform: scale(0.8);
1887 | }
1888 | 100% {
1889 | -webkit-transform-origin: 0% 50%;
1890 | transform-origin: 0% 50%;
1891 | -webkit-transform: scale(1);
1892 | transform: scale(1);
1893 | }
1894 | }
1895 | @-webkit-keyframes antZoomLeftOut {
1896 | 0% {
1897 | -webkit-transform-origin: 0% 50%;
1898 | transform-origin: 0% 50%;
1899 | -webkit-transform: scale(1);
1900 | transform: scale(1);
1901 | }
1902 | 100% {
1903 | opacity: 0;
1904 | -webkit-transform-origin: 0% 50%;
1905 | transform-origin: 0% 50%;
1906 | -webkit-transform: scale(0.8);
1907 | transform: scale(0.8);
1908 | }
1909 | }
1910 | @keyframes antZoomLeftOut {
1911 | 0% {
1912 | -webkit-transform-origin: 0% 50%;
1913 | transform-origin: 0% 50%;
1914 | -webkit-transform: scale(1);
1915 | transform: scale(1);
1916 | }
1917 | 100% {
1918 | opacity: 0;
1919 | -webkit-transform-origin: 0% 50%;
1920 | transform-origin: 0% 50%;
1921 | -webkit-transform: scale(0.8);
1922 | transform: scale(0.8);
1923 | }
1924 | }
1925 | @-webkit-keyframes antZoomRightIn {
1926 | 0% {
1927 | opacity: 0;
1928 | -webkit-transform-origin: 100% 50%;
1929 | transform-origin: 100% 50%;
1930 | -webkit-transform: scale(0.8);
1931 | transform: scale(0.8);
1932 | }
1933 | 100% {
1934 | -webkit-transform-origin: 100% 50%;
1935 | transform-origin: 100% 50%;
1936 | -webkit-transform: scale(1);
1937 | transform: scale(1);
1938 | }
1939 | }
1940 | @keyframes antZoomRightIn {
1941 | 0% {
1942 | opacity: 0;
1943 | -webkit-transform-origin: 100% 50%;
1944 | transform-origin: 100% 50%;
1945 | -webkit-transform: scale(0.8);
1946 | transform: scale(0.8);
1947 | }
1948 | 100% {
1949 | -webkit-transform-origin: 100% 50%;
1950 | transform-origin: 100% 50%;
1951 | -webkit-transform: scale(1);
1952 | transform: scale(1);
1953 | }
1954 | }
1955 | @-webkit-keyframes antZoomRightOut {
1956 | 0% {
1957 | -webkit-transform-origin: 100% 50%;
1958 | transform-origin: 100% 50%;
1959 | -webkit-transform: scale(1);
1960 | transform: scale(1);
1961 | }
1962 | 100% {
1963 | opacity: 0;
1964 | -webkit-transform-origin: 100% 50%;
1965 | transform-origin: 100% 50%;
1966 | -webkit-transform: scale(0.8);
1967 | transform: scale(0.8);
1968 | }
1969 | }
1970 | @keyframes antZoomRightOut {
1971 | 0% {
1972 | -webkit-transform-origin: 100% 50%;
1973 | transform-origin: 100% 50%;
1974 | -webkit-transform: scale(1);
1975 | transform: scale(1);
1976 | }
1977 | 100% {
1978 | opacity: 0;
1979 | -webkit-transform-origin: 100% 50%;
1980 | transform-origin: 100% 50%;
1981 | -webkit-transform: scale(0.8);
1982 | transform: scale(0.8);
1983 | }
1984 | }
1985 | @-webkit-keyframes antZoomDownIn {
1986 | 0% {
1987 | opacity: 0;
1988 | -webkit-transform-origin: 50% 100%;
1989 | transform-origin: 50% 100%;
1990 | -webkit-transform: scale(0.8);
1991 | transform: scale(0.8);
1992 | }
1993 | 100% {
1994 | -webkit-transform-origin: 50% 100%;
1995 | transform-origin: 50% 100%;
1996 | -webkit-transform: scale(1);
1997 | transform: scale(1);
1998 | }
1999 | }
2000 | @keyframes antZoomDownIn {
2001 | 0% {
2002 | opacity: 0;
2003 | -webkit-transform-origin: 50% 100%;
2004 | transform-origin: 50% 100%;
2005 | -webkit-transform: scale(0.8);
2006 | transform: scale(0.8);
2007 | }
2008 | 100% {
2009 | -webkit-transform-origin: 50% 100%;
2010 | transform-origin: 50% 100%;
2011 | -webkit-transform: scale(1);
2012 | transform: scale(1);
2013 | }
2014 | }
2015 | @-webkit-keyframes antZoomDownOut {
2016 | 0% {
2017 | -webkit-transform-origin: 50% 100%;
2018 | transform-origin: 50% 100%;
2019 | -webkit-transform: scale(1);
2020 | transform: scale(1);
2021 | }
2022 | 100% {
2023 | opacity: 0;
2024 | -webkit-transform-origin: 50% 100%;
2025 | transform-origin: 50% 100%;
2026 | -webkit-transform: scale(0.8);
2027 | transform: scale(0.8);
2028 | }
2029 | }
2030 | @keyframes antZoomDownOut {
2031 | 0% {
2032 | -webkit-transform-origin: 50% 100%;
2033 | transform-origin: 50% 100%;
2034 | -webkit-transform: scale(1);
2035 | transform: scale(1);
2036 | }
2037 | 100% {
2038 | opacity: 0;
2039 | -webkit-transform-origin: 50% 100%;
2040 | transform-origin: 50% 100%;
2041 | -webkit-transform: scale(0.8);
2042 | transform: scale(0.8);
2043 | }
2044 | }
2045 | .ant-motion-collapse {
2046 | overflow: hidden;
2047 | }
2048 | .ant-motion-collapse-active {
2049 | -webkit-transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
2050 | transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important;
2051 | }
2052 |
2053 | /* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
2054 | /* stylelint-disable no-duplicate-selectors */
2055 | /* stylelint-disable */
2056 | /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
2057 | .ant-menu {
2058 | font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
2059 | font-size: 14px;
2060 | font-variant: tabular-nums;
2061 | line-height: 1.5;
2062 | -webkit-box-sizing: border-box;
2063 | box-sizing: border-box;
2064 | margin: 0;
2065 | padding: 0;
2066 | outline: none;
2067 | margin-bottom: 0;
2068 | padding-left: 0;
2069 | list-style: none;
2070 | -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
2071 | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
2072 | color: rgba(0, 0, 0, 0.65);
2073 | background: #fff;
2074 | line-height: 0;
2075 | -webkit-transition: background .3s, width .2s;
2076 | transition: background .3s, width .2s;
2077 | zoom: 1;
2078 | }
2079 | .ant-menu:before,
2080 | .ant-menu:after {
2081 | content: "";
2082 | display: table;
2083 | }
2084 | .ant-menu:after {
2085 | clear: both;
2086 | }
2087 | .ant-menu ul,
2088 | .ant-menu ol {
2089 | list-style: none;
2090 | margin: 0;
2091 | padding: 0;
2092 | }
2093 | .ant-menu-hidden {
2094 | display: none;
2095 | }
2096 | .ant-menu-item-group-title {
2097 | color: rgba(0, 0, 0, 0.45);
2098 | font-size: 14px;
2099 | line-height: 1.5;
2100 | padding: 8px 16px;
2101 | -webkit-transition: all .3s;
2102 | transition: all .3s;
2103 | }
2104 | .ant-menu-submenu,
2105 | .ant-menu-submenu-inline {
2106 | -webkit-transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2107 | transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2108 | }
2109 | .ant-menu-item:active,
2110 | .ant-menu-submenu-title:active {
2111 | background: #e6f7ff;
2112 | }
2113 | .ant-menu-submenu .ant-menu-sub {
2114 | cursor: initial;
2115 | -webkit-transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2116 | transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2117 | }
2118 | .ant-menu-item > a {
2119 | display: block;
2120 | color: rgba(0, 0, 0, 0.65);
2121 | }
2122 | .ant-menu-item > a:hover {
2123 | color: #1890ff;
2124 | }
2125 | .ant-menu-item > a:focus {
2126 | text-decoration: none;
2127 | }
2128 | .ant-menu-item > a:before {
2129 | position: absolute;
2130 | background-color: transparent;
2131 | top: 0;
2132 | left: 0;
2133 | bottom: 0;
2134 | right: 0;
2135 | content: '';
2136 | }
2137 | .ant-menu-item-divider {
2138 | height: 1px;
2139 | overflow: hidden;
2140 | background-color: #e8e8e8;
2141 | line-height: 0;
2142 | }
2143 | .ant-menu-item:hover,
2144 | .ant-menu-item-active,
2145 | .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
2146 | .ant-menu-submenu-active,
2147 | .ant-menu-submenu-title:hover {
2148 | color: #1890ff;
2149 | }
2150 | .ant-menu-horizontal .ant-menu-item,
2151 | .ant-menu-horizontal .ant-menu-submenu {
2152 | margin-top: -1px;
2153 | }
2154 | .ant-menu-horizontal > .ant-menu-item:hover,
2155 | .ant-menu-horizontal > .ant-menu-item-active,
2156 | .ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {
2157 | background-color: transparent;
2158 | }
2159 | .ant-menu-item-selected {
2160 | color: #1890ff;
2161 | }
2162 | .ant-menu-item-selected > a,
2163 | .ant-menu-item-selected > a:hover {
2164 | color: #1890ff;
2165 | }
2166 | .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
2167 | background-color: #e6f7ff;
2168 | }
2169 | .ant-menu-inline,
2170 | .ant-menu-vertical,
2171 | .ant-menu-vertical-left {
2172 | border-right: 1px solid #e8e8e8;
2173 | }
2174 | .ant-menu-vertical-right {
2175 | border-left: 1px solid #e8e8e8;
2176 | }
2177 | .ant-menu-vertical.ant-menu-sub,
2178 | .ant-menu-vertical-left.ant-menu-sub,
2179 | .ant-menu-vertical-right.ant-menu-sub {
2180 | border-right: 0;
2181 | padding: 0;
2182 | -webkit-transform-origin: 0 0;
2183 | -ms-transform-origin: 0 0;
2184 | transform-origin: 0 0;
2185 | }
2186 | .ant-menu-vertical.ant-menu-sub .ant-menu-item,
2187 | .ant-menu-vertical-left.ant-menu-sub .ant-menu-item,
2188 | .ant-menu-vertical-right.ant-menu-sub .ant-menu-item {
2189 | border-right: 0;
2190 | margin-left: 0;
2191 | left: 0;
2192 | }
2193 | .ant-menu-vertical.ant-menu-sub .ant-menu-item:after,
2194 | .ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after,
2195 | .ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after {
2196 | border-right: 0;
2197 | }
2198 | .ant-menu-vertical.ant-menu-sub > .ant-menu-item,
2199 | .ant-menu-vertical-left.ant-menu-sub > .ant-menu-item,
2200 | .ant-menu-vertical-right.ant-menu-sub > .ant-menu-item,
2201 | .ant-menu-vertical.ant-menu-sub > .ant-menu-submenu,
2202 | .ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu,
2203 | .ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu {
2204 | -webkit-transform-origin: 0 0;
2205 | -ms-transform-origin: 0 0;
2206 | transform-origin: 0 0;
2207 | }
2208 | .ant-menu-horizontal.ant-menu-sub,
2209 | .ant-menu-vertical.ant-menu-sub,
2210 | .ant-menu-vertical-left.ant-menu-sub,
2211 | .ant-menu-vertical-right.ant-menu-sub {
2212 | min-width: 160px;
2213 | }
2214 | .ant-menu-item,
2215 | .ant-menu-submenu-title {
2216 | cursor: pointer;
2217 | margin: 0;
2218 | padding: 0 20px;
2219 | position: relative;
2220 | display: block;
2221 | white-space: nowrap;
2222 | -webkit-transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2223 | transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2224 | }
2225 | .ant-menu-item .anticon,
2226 | .ant-menu-submenu-title .anticon {
2227 | min-width: 14px;
2228 | margin-right: 10px;
2229 | font-size: 14px;
2230 | -webkit-transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2231 | transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2232 | }
2233 | .ant-menu-item .anticon + span,
2234 | .ant-menu-submenu-title .anticon + span {
2235 | -webkit-transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2236 | transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2237 | opacity: 1;
2238 | }
2239 | .ant-menu > .ant-menu-item-divider {
2240 | height: 1px;
2241 | margin: 1px 0;
2242 | overflow: hidden;
2243 | padding: 0;
2244 | line-height: 0;
2245 | background-color: #e8e8e8;
2246 | }
2247 | .ant-menu-submenu-popup {
2248 | position: absolute;
2249 | border-radius: 4px;
2250 | z-index: 1050;
2251 | }
2252 | .ant-menu-submenu-popup .submenu-title-wrapper {
2253 | padding-right: 20px;
2254 | }
2255 | .ant-menu-submenu-popup:before {
2256 | position: absolute;
2257 | top: -7px;
2258 | left: 0;
2259 | right: 0;
2260 | bottom: 0;
2261 | content: ' ';
2262 | opacity: .0001;
2263 | }
2264 | .ant-menu-submenu > .ant-menu {
2265 | background-color: #fff;
2266 | border-radius: 4px;
2267 | }
2268 | .ant-menu-submenu > .ant-menu-submenu-title:after {
2269 | -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2270 | transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2271 | transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2272 | transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2273 | }
2274 | .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow,
2275 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow,
2276 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow,
2277 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {
2278 | -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2279 | transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2280 | transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2281 | transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2282 | position: absolute;
2283 | top: 50%;
2284 | right: 16px;
2285 | width: 10px;
2286 | }
2287 | .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2288 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2289 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2290 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2291 | .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2292 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2293 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2294 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
2295 | content: '';
2296 | position: absolute;
2297 | vertical-align: baseline;
2298 | background: #fff;
2299 | background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.65)), to(rgba(0, 0, 0, 0.65)));
2300 | background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65));
2301 | background-image: linear-gradient(to right, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65));
2302 | width: 6px;
2303 | height: 1.5px;
2304 | border-radius: 2px;
2305 | -webkit-transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2306 | transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2307 | transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2308 | transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
2309 | }
2310 | .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2311 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2312 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2313 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
2314 | -webkit-transform: rotate(45deg) translateY(-2px);
2315 | -ms-transform: rotate(45deg) translateY(-2px);
2316 | transform: rotate(45deg) translateY(-2px);
2317 | }
2318 | .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2319 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2320 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2321 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
2322 | -webkit-transform: rotate(-45deg) translateY(2px);
2323 | -ms-transform: rotate(-45deg) translateY(2px);
2324 | transform: rotate(-45deg) translateY(2px);
2325 | }
2326 | .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
2327 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
2328 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
2329 | .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,
2330 | .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,
2331 | .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,
2332 | .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,
2333 | .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before {
2334 | background: -webkit-gradient(linear, left top, right top, from(#1890ff), to(#1890ff));
2335 | background: -webkit-linear-gradient(left, #1890ff, #1890ff);
2336 | background: linear-gradient(to right, #1890ff, #1890ff);
2337 | }
2338 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
2339 | -webkit-transform: rotate(-45deg) translateX(2px);
2340 | -ms-transform: rotate(-45deg) translateX(2px);
2341 | transform: rotate(-45deg) translateX(2px);
2342 | }
2343 | .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
2344 | -webkit-transform: rotate(45deg) translateX(-2px);
2345 | -ms-transform: rotate(45deg) translateX(-2px);
2346 | transform: rotate(45deg) translateX(-2px);
2347 | }
2348 | .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {
2349 | -webkit-transform: translateY(-2px);
2350 | -ms-transform: translateY(-2px);
2351 | transform: translateY(-2px);
2352 | }
2353 | .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
2354 | -webkit-transform: rotate(-45deg) translateX(-2px);
2355 | -ms-transform: rotate(-45deg) translateX(-2px);
2356 | transform: rotate(-45deg) translateX(-2px);
2357 | }
2358 | .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
2359 | -webkit-transform: rotate(45deg) translateX(2px);
2360 | -ms-transform: rotate(45deg) translateX(2px);
2361 | transform: rotate(45deg) translateX(2px);
2362 | }
2363 | .ant-menu-vertical .ant-menu-submenu-selected,
2364 | .ant-menu-vertical-left .ant-menu-submenu-selected,
2365 | .ant-menu-vertical-right .ant-menu-submenu-selected {
2366 | color: #1890ff;
2367 | }
2368 | .ant-menu-vertical .ant-menu-submenu-selected > a,
2369 | .ant-menu-vertical-left .ant-menu-submenu-selected > a,
2370 | .ant-menu-vertical-right .ant-menu-submenu-selected > a {
2371 | color: #1890ff;
2372 | }
2373 | .ant-menu-horizontal {
2374 | border: 0;
2375 | border-bottom: 1px solid #e8e8e8;
2376 | -webkit-box-shadow: none;
2377 | box-shadow: none;
2378 | line-height: 46px;
2379 | white-space: nowrap;
2380 | }
2381 | .ant-menu-horizontal > .ant-menu-item,
2382 | .ant-menu-horizontal > .ant-menu-submenu {
2383 | position: relative;
2384 | top: 1px;
2385 | display: inline-block;
2386 | vertical-align: bottom;
2387 | border-bottom: 2px solid transparent;
2388 | }
2389 | .ant-menu-horizontal > .ant-menu-item:hover,
2390 | .ant-menu-horizontal > .ant-menu-submenu:hover,
2391 | .ant-menu-horizontal > .ant-menu-item-active,
2392 | .ant-menu-horizontal > .ant-menu-submenu-active,
2393 | .ant-menu-horizontal > .ant-menu-item-open,
2394 | .ant-menu-horizontal > .ant-menu-submenu-open,
2395 | .ant-menu-horizontal > .ant-menu-item-selected,
2396 | .ant-menu-horizontal > .ant-menu-submenu-selected {
2397 | border-bottom: 2px solid #1890ff;
2398 | color: #1890ff;
2399 | }
2400 | .ant-menu-horizontal > .ant-menu-item > a {
2401 | display: block;
2402 | color: rgba(0, 0, 0, 0.65);
2403 | }
2404 | .ant-menu-horizontal > .ant-menu-item > a:hover {
2405 | color: #1890ff;
2406 | }
2407 | .ant-menu-horizontal > .ant-menu-item > a:before {
2408 | bottom: -2px;
2409 | }
2410 | .ant-menu-horizontal > .ant-menu-item-selected > a {
2411 | color: #1890ff;
2412 | }
2413 | .ant-menu-horizontal:after {
2414 | content: " ";
2415 | display: block;
2416 | height: 0;
2417 | clear: both;
2418 | }
2419 | .ant-menu-vertical .ant-menu-item,
2420 | .ant-menu-vertical-left .ant-menu-item,
2421 | .ant-menu-vertical-right .ant-menu-item,
2422 | .ant-menu-inline .ant-menu-item {
2423 | position: relative;
2424 | }
2425 | .ant-menu-vertical .ant-menu-item:after,
2426 | .ant-menu-vertical-left .ant-menu-item:after,
2427 | .ant-menu-vertical-right .ant-menu-item:after,
2428 | .ant-menu-inline .ant-menu-item:after {
2429 | content: "";
2430 | position: absolute;
2431 | right: 0;
2432 | top: 0;
2433 | bottom: 0;
2434 | border-right: 3px solid #1890ff;
2435 | -webkit-transform: scaleY(0.0001);
2436 | -ms-transform: scaleY(0.0001);
2437 | transform: scaleY(0.0001);
2438 | opacity: 0;
2439 | -webkit-transition: opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
2440 | transition: opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
2441 | transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
2442 | transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);
2443 | }
2444 | .ant-menu-vertical .ant-menu-item,
2445 | .ant-menu-vertical-left .ant-menu-item,
2446 | .ant-menu-vertical-right .ant-menu-item,
2447 | .ant-menu-inline .ant-menu-item,
2448 | .ant-menu-vertical .ant-menu-submenu-title,
2449 | .ant-menu-vertical-left .ant-menu-submenu-title,
2450 | .ant-menu-vertical-right .ant-menu-submenu-title,
2451 | .ant-menu-inline .ant-menu-submenu-title {
2452 | padding: 0 16px;
2453 | font-size: 14px;
2454 | line-height: 40px;
2455 | height: 40px;
2456 | margin-top: 4px;
2457 | margin-bottom: 4px;
2458 | overflow: hidden;
2459 | text-overflow: ellipsis;
2460 | }
2461 | .ant-menu-vertical .ant-menu-submenu,
2462 | .ant-menu-vertical-left .ant-menu-submenu,
2463 | .ant-menu-vertical-right .ant-menu-submenu,
2464 | .ant-menu-inline .ant-menu-submenu {
2465 | padding-bottom: 0.01px;
2466 | }
2467 | .ant-menu-vertical .ant-menu-item:not(:last-child),
2468 | .ant-menu-vertical-left .ant-menu-item:not(:last-child),
2469 | .ant-menu-vertical-right .ant-menu-item:not(:last-child),
2470 | .ant-menu-inline .ant-menu-item:not(:last-child) {
2471 | margin-bottom: 8px;
2472 | }
2473 | .ant-menu-vertical > .ant-menu-item,
2474 | .ant-menu-vertical-left > .ant-menu-item,
2475 | .ant-menu-vertical-right > .ant-menu-item,
2476 | .ant-menu-inline > .ant-menu-item,
2477 | .ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title,
2478 | .ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title,
2479 | .ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title,
2480 | .ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
2481 | line-height: 40px;
2482 | height: 40px;
2483 | }
2484 | .ant-menu-inline {
2485 | width: 100%;
2486 | }
2487 | .ant-menu-inline .ant-menu-selected:after,
2488 | .ant-menu-inline .ant-menu-item-selected:after {
2489 | -webkit-transition: opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2490 | transition: opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2491 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2492 | transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);
2493 | opacity: 1;
2494 | -webkit-transform: scaleY(1);
2495 | -ms-transform: scaleY(1);
2496 | transform: scaleY(1);
2497 | }
2498 | .ant-menu-inline .ant-menu-item,
2499 | .ant-menu-inline .ant-menu-submenu-title {
2500 | width: calc(100% + 1px);
2501 | }
2502 | .ant-menu-inline .ant-menu-submenu-title {
2503 | padding-right: 34px;
2504 | }
2505 | .ant-menu-inline-collapsed {
2506 | width: 80px;
2507 | }
2508 | .ant-menu-inline-collapsed > .ant-menu-item,
2509 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,
2510 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title,
2511 | .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
2512 | left: 0;
2513 | text-overflow: clip;
2514 | padding: 0 32px !important;
2515 | }
2516 | .ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow,
2517 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow,
2518 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow,
2519 | .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow {
2520 | display: none;
2521 | }
2522 | .ant-menu-inline-collapsed > .ant-menu-item .anticon,
2523 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon,
2524 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon,
2525 | .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon {
2526 | font-size: 16px;
2527 | line-height: 40px;
2528 | margin: 0;
2529 | }
2530 | .ant-menu-inline-collapsed > .ant-menu-item .anticon + span,
2531 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span,
2532 | .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span,
2533 | .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {
2534 | max-width: 0;
2535 | display: inline-block;
2536 | opacity: 0;
2537 | }
2538 | .ant-menu-inline-collapsed-tooltip {
2539 | pointer-events: none;
2540 | }
2541 | .ant-menu-inline-collapsed-tooltip .anticon {
2542 | display: none;
2543 | }
2544 | .ant-menu-inline-collapsed-tooltip a {
2545 | color: rgba(255, 255, 255, 0.85);
2546 | }
2547 | .ant-menu-inline-collapsed .ant-menu-item-group-title {
2548 | overflow: hidden;
2549 | white-space: nowrap;
2550 | text-overflow: ellipsis;
2551 | padding-left: 4px;
2552 | padding-right: 4px;
2553 | }
2554 | .ant-menu-item-group-list {
2555 | margin: 0;
2556 | padding: 0;
2557 | }
2558 | .ant-menu-item-group-list .ant-menu-item,
2559 | .ant-menu-item-group-list .ant-menu-submenu-title {
2560 | padding: 0 16px 0 28px;
2561 | }
2562 | .ant-menu-root.ant-menu-vertical,
2563 | .ant-menu-root.ant-menu-vertical-left,
2564 | .ant-menu-root.ant-menu-vertical-right,
2565 | .ant-menu-root.ant-menu-inline {
2566 | -webkit-box-shadow: none;
2567 | box-shadow: none;
2568 | }
2569 | .ant-menu-sub.ant-menu-inline {
2570 | padding: 0;
2571 | border: 0;
2572 | -webkit-box-shadow: none;
2573 | box-shadow: none;
2574 | border-radius: 0;
2575 | }
2576 | .ant-menu-sub.ant-menu-inline > .ant-menu-item,
2577 | .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
2578 | line-height: 40px;
2579 | height: 40px;
2580 | list-style-type: disc;
2581 | list-style-position: inside;
2582 | }
2583 | .ant-menu-sub.ant-menu-inline .ant-menu-item-group-title {
2584 | padding-left: 32px;
2585 | }
2586 | .ant-menu-item-disabled,
2587 | .ant-menu-submenu-disabled {
2588 | color: rgba(0, 0, 0, 0.25) !important;
2589 | cursor: not-allowed;
2590 | background: none;
2591 | border-color: transparent !important;
2592 | }
2593 | .ant-menu-item-disabled > a,
2594 | .ant-menu-submenu-disabled > a {
2595 | color: rgba(0, 0, 0, 0.25) !important;
2596 | pointer-events: none;
2597 | }
2598 | .ant-menu-item-disabled > .ant-menu-submenu-title,
2599 | .ant-menu-submenu-disabled > .ant-menu-submenu-title {
2600 | color: rgba(0, 0, 0, 0.25) !important;
2601 | cursor: not-allowed;
2602 | }
2603 | .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2604 | .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2605 | .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2606 | .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after {
2607 | background: rgba(0, 0, 0, 0.25) !important;
2608 | }
2609 | .ant-menu-dark,
2610 | .ant-menu-dark .ant-menu-sub {
2611 | color: rgba(255, 255, 255, 0.65);
2612 | background: #001529;
2613 | }
2614 | .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow,
2615 | .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow {
2616 | opacity: .45;
2617 | -webkit-transition: all .3s;
2618 | transition: all .3s;
2619 | }
2620 | .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2621 | .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,
2622 | .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before,
2623 | .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
2624 | background: #fff;
2625 | }
2626 | .ant-menu-dark.ant-menu-submenu-popup {
2627 | background: transparent;
2628 | }
2629 | .ant-menu-dark .ant-menu-inline.ant-menu-sub {
2630 | background: #000c17;
2631 | -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset;
2632 | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset;
2633 | }
2634 | .ant-menu-dark.ant-menu-horizontal {
2635 | border-bottom: 0;
2636 | }
2637 | .ant-menu-dark.ant-menu-horizontal > .ant-menu-item,
2638 | .ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {
2639 | border-color: #001529;
2640 | border-bottom: 0;
2641 | top: 0;
2642 | margin-top: 0;
2643 | }
2644 | .ant-menu-dark.ant-menu-horizontal > .ant-menu-item > a:before {
2645 | bottom: 0;
2646 | }
2647 | .ant-menu-dark .ant-menu-item,
2648 | .ant-menu-dark .ant-menu-item-group-title,
2649 | .ant-menu-dark .ant-menu-item > a {
2650 | color: rgba(255, 255, 255, 0.65);
2651 | }
2652 | .ant-menu-dark.ant-menu-inline,
2653 | .ant-menu-dark.ant-menu-vertical,
2654 | .ant-menu-dark.ant-menu-vertical-left,
2655 | .ant-menu-dark.ant-menu-vertical-right {
2656 | border-right: 0;
2657 | }
2658 | .ant-menu-dark.ant-menu-inline .ant-menu-item,
2659 | .ant-menu-dark.ant-menu-vertical .ant-menu-item,
2660 | .ant-menu-dark.ant-menu-vertical-left .ant-menu-item,
2661 | .ant-menu-dark.ant-menu-vertical-right .ant-menu-item {
2662 | border-right: 0;
2663 | margin-left: 0;
2664 | left: 0;
2665 | }
2666 | .ant-menu-dark.ant-menu-inline .ant-menu-item:after,
2667 | .ant-menu-dark.ant-menu-vertical .ant-menu-item:after,
2668 | .ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after,
2669 | .ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after {
2670 | border-right: 0;
2671 | }
2672 | .ant-menu-dark.ant-menu-inline .ant-menu-item,
2673 | .ant-menu-dark.ant-menu-inline .ant-menu-submenu-title {
2674 | width: 100%;
2675 | }
2676 | .ant-menu-dark .ant-menu-item:hover,
2677 | .ant-menu-dark .ant-menu-item-active,
2678 | .ant-menu-dark .ant-menu-submenu-active,
2679 | .ant-menu-dark .ant-menu-submenu-open,
2680 | .ant-menu-dark .ant-menu-submenu-selected,
2681 | .ant-menu-dark .ant-menu-submenu-title:hover {
2682 | background-color: transparent;
2683 | color: #fff;
2684 | }
2685 | .ant-menu-dark .ant-menu-item:hover > a,
2686 | .ant-menu-dark .ant-menu-item-active > a,
2687 | .ant-menu-dark .ant-menu-submenu-active > a,
2688 | .ant-menu-dark .ant-menu-submenu-open > a,
2689 | .ant-menu-dark .ant-menu-submenu-selected > a,
2690 | .ant-menu-dark .ant-menu-submenu-title:hover > a {
2691 | color: #fff;
2692 | }
2693 | .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
2694 | .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
2695 | .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
2696 | .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
2697 | .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
2698 | .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow,
2699 | .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
2700 | .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
2701 | .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
2702 | .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
2703 | .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,
2704 | .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow {
2705 | opacity: 1;
2706 | }
2707 | .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2708 | .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2709 | .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2710 | .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2711 | .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2712 | .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2713 | .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
2714 | .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
2715 | .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
2716 | .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
2717 | .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
2718 | .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after,
2719 | .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2720 | .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2721 | .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2722 | .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2723 | .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2724 | .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2725 | .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
2726 | .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
2727 | .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
2728 | .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
2729 | .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before,
2730 | .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before {
2731 | background: #fff;
2732 | }
2733 | .ant-menu-dark .ant-menu-item-selected {
2734 | border-right: 0;
2735 | color: #fff;
2736 | }
2737 | .ant-menu-dark .ant-menu-item-selected:after {
2738 | border-right: 0;
2739 | }
2740 | .ant-menu-dark .ant-menu-item-selected > a,
2741 | .ant-menu-dark .ant-menu-item-selected > a:hover {
2742 | color: #fff;
2743 | }
2744 | .ant-menu.ant-menu-dark .ant-menu-item-selected,
2745 | .ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected {
2746 | background-color: #1890ff;
2747 | }
2748 | .ant-menu-dark .ant-menu-item-disabled,
2749 | .ant-menu-dark .ant-menu-submenu-disabled,
2750 | .ant-menu-dark .ant-menu-item-disabled > a,
2751 | .ant-menu-dark .ant-menu-submenu-disabled > a {
2752 | opacity: 0.8;
2753 | color: rgba(255, 255, 255, 0.35) !important;
2754 | }
2755 | .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title,
2756 | .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {
2757 | color: rgba(255, 255, 255, 0.35) !important;
2758 | }
2759 | .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2760 | .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before,
2761 | .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after,
2762 | .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after {
2763 | background: rgba(255, 255, 255, 0.35) !important;
2764 | }
2765 |
2766 | /* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
2767 | /* stylelint-disable no-duplicate-selectors */
2768 | /* stylelint-disable */
2769 | /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
2770 | .ant-tooltip {
2771 | font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
2772 | font-size: 14px;
2773 | font-variant: tabular-nums;
2774 | line-height: 1.5;
2775 | color: rgba(0, 0, 0, 0.65);
2776 | -webkit-box-sizing: border-box;
2777 | box-sizing: border-box;
2778 | margin: 0;
2779 | padding: 0;
2780 | list-style: none;
2781 | position: absolute;
2782 | z-index: 1060;
2783 | display: block;
2784 | visibility: visible;
2785 | max-width: 250px;
2786 | }
2787 | .ant-tooltip-hidden {
2788 | display: none;
2789 | }
2790 | .ant-tooltip-placement-top,
2791 | .ant-tooltip-placement-topLeft,
2792 | .ant-tooltip-placement-topRight {
2793 | padding-bottom: 8px;
2794 | }
2795 | .ant-tooltip-placement-right,
2796 | .ant-tooltip-placement-rightTop,
2797 | .ant-tooltip-placement-rightBottom {
2798 | padding-left: 8px;
2799 | }
2800 | .ant-tooltip-placement-bottom,
2801 | .ant-tooltip-placement-bottomLeft,
2802 | .ant-tooltip-placement-bottomRight {
2803 | padding-top: 8px;
2804 | }
2805 | .ant-tooltip-placement-left,
2806 | .ant-tooltip-placement-leftTop,
2807 | .ant-tooltip-placement-leftBottom {
2808 | padding-right: 8px;
2809 | }
2810 | .ant-tooltip-inner {
2811 | padding: 6px 8px;
2812 | color: #fff;
2813 | text-align: left;
2814 | text-decoration: none;
2815 | background-color: rgba(0, 0, 0, 0.75);
2816 | border-radius: 4px;
2817 | -webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
2818 | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
2819 | min-height: 32px;
2820 | word-wrap: break-word;
2821 | }
2822 | .ant-tooltip-arrow {
2823 | position: absolute;
2824 | width: 0;
2825 | height: 0;
2826 | border-color: transparent;
2827 | border-style: solid;
2828 | }
2829 | .ant-tooltip-placement-top .ant-tooltip-arrow,
2830 | .ant-tooltip-placement-topLeft .ant-tooltip-arrow,
2831 | .ant-tooltip-placement-topRight .ant-tooltip-arrow {
2832 | bottom: 3px;
2833 | border-width: 5px 5px 0;
2834 | border-top-color: rgba(0, 0, 0, 0.75);
2835 | }
2836 | .ant-tooltip-placement-top .ant-tooltip-arrow {
2837 | left: 50%;
2838 | margin-left: -5px;
2839 | }
2840 | .ant-tooltip-placement-topLeft .ant-tooltip-arrow {
2841 | left: 16px;
2842 | }
2843 | .ant-tooltip-placement-topRight .ant-tooltip-arrow {
2844 | right: 16px;
2845 | }
2846 | .ant-tooltip-placement-right .ant-tooltip-arrow,
2847 | .ant-tooltip-placement-rightTop .ant-tooltip-arrow,
2848 | .ant-tooltip-placement-rightBottom .ant-tooltip-arrow {
2849 | left: 3px;
2850 | border-width: 5px 5px 5px 0;
2851 | border-right-color: rgba(0, 0, 0, 0.75);
2852 | }
2853 | .ant-tooltip-placement-right .ant-tooltip-arrow {
2854 | top: 50%;
2855 | margin-top: -5px;
2856 | }
2857 | .ant-tooltip-placement-rightTop .ant-tooltip-arrow {
2858 | top: 8px;
2859 | }
2860 | .ant-tooltip-placement-rightBottom .ant-tooltip-arrow {
2861 | bottom: 8px;
2862 | }
2863 | .ant-tooltip-placement-left .ant-tooltip-arrow,
2864 | .ant-tooltip-placement-leftTop .ant-tooltip-arrow,
2865 | .ant-tooltip-placement-leftBottom .ant-tooltip-arrow {
2866 | right: 3px;
2867 | border-width: 5px 0 5px 5px;
2868 | border-left-color: rgba(0, 0, 0, 0.75);
2869 | }
2870 | .ant-tooltip-placement-left .ant-tooltip-arrow {
2871 | top: 50%;
2872 | margin-top: -5px;
2873 | }
2874 | .ant-tooltip-placement-leftTop .ant-tooltip-arrow {
2875 | top: 8px;
2876 | }
2877 | .ant-tooltip-placement-leftBottom .ant-tooltip-arrow {
2878 | bottom: 8px;
2879 | }
2880 | .ant-tooltip-placement-bottom .ant-tooltip-arrow,
2881 | .ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,
2882 | .ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
2883 | top: 3px;
2884 | border-width: 0 5px 5px;
2885 | border-bottom-color: rgba(0, 0, 0, 0.75);
2886 | }
2887 | .ant-tooltip-placement-bottom .ant-tooltip-arrow {
2888 | left: 50%;
2889 | margin-left: -5px;
2890 | }
2891 | .ant-tooltip-placement-bottomLeft .ant-tooltip-arrow {
2892 | left: 16px;
2893 | }
2894 | .ant-tooltip-placement-bottomRight .ant-tooltip-arrow {
2895 | right: 16px;
2896 | }
2897 |
2898 | /* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
2899 | /* stylelint-disable no-duplicate-selectors */
2900 | /* stylelint-disable */
2901 | /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
2902 | .ant-steps {
2903 | font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
2904 | font-size: 14px;
2905 | font-variant: tabular-nums;
2906 | line-height: 1.5;
2907 | color: rgba(0, 0, 0, 0.65);
2908 | -webkit-box-sizing: border-box;
2909 | box-sizing: border-box;
2910 | margin: 0;
2911 | padding: 0;
2912 | list-style: none;
2913 | font-size: 0;
2914 | width: 100%;
2915 | display: -webkit-box;
2916 | display: -webkit-flex;
2917 | display: -ms-flexbox;
2918 | display: flex;
2919 | }
2920 | .ant-steps-item {
2921 | position: relative;
2922 | display: inline-block;
2923 | vertical-align: top;
2924 | -webkit-box-flex: 1;
2925 | -webkit-flex: 1;
2926 | -ms-flex: 1;
2927 | flex: 1;
2928 | overflow: hidden;
2929 | }
2930 | .ant-steps-item:last-child {
2931 | -webkit-box-flex: 0;
2932 | -webkit-flex: none;
2933 | -ms-flex: none;
2934 | flex: none;
2935 | }
2936 | .ant-steps-item:last-child .ant-steps-item-tail,
2937 | .ant-steps-item:last-child .ant-steps-item-title:after {
2938 | display: none;
2939 | }
2940 | .ant-steps-item-icon,
2941 | .ant-steps-item-content {
2942 | display: inline-block;
2943 | vertical-align: top;
2944 | }
2945 | .ant-steps-item-icon {
2946 | border: 1px solid rgba(0, 0, 0, 0.25);
2947 | width: 32px;
2948 | height: 32px;
2949 | line-height: 32px;
2950 | text-align: center;
2951 | border-radius: 32px;
2952 | font-size: 16px;
2953 | margin-right: 8px;
2954 | -webkit-transition: background-color 0.3s, border-color 0.3s;
2955 | transition: background-color 0.3s, border-color 0.3s;
2956 | font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
2957 | }
2958 | .ant-steps-item-icon > .ant-steps-icon {
2959 | line-height: 1;
2960 | top: -1px;
2961 | color: #1890ff;
2962 | position: relative;
2963 | }
2964 | .ant-steps-item-tail {
2965 | position: absolute;
2966 | left: 0;
2967 | width: 100%;
2968 | top: 12px;
2969 | padding: 0 10px;
2970 | }
2971 | .ant-steps-item-tail:after {
2972 | content: '';
2973 | display: inline-block;
2974 | background: #e8e8e8;
2975 | height: 1px;
2976 | border-radius: 1px;
2977 | width: 100%;
2978 | -webkit-transition: background .3s;
2979 | transition: background .3s;
2980 | }
2981 | .ant-steps-item-title {
2982 | font-size: 16px;
2983 | color: rgba(0, 0, 0, 0.65);
2984 | display: inline-block;
2985 | padding-right: 16px;
2986 | position: relative;
2987 | line-height: 32px;
2988 | }
2989 | .ant-steps-item-title:after {
2990 | content: '';
2991 | height: 1px;
2992 | width: 9999px;
2993 | background: #e8e8e8;
2994 | display: block;
2995 | position: absolute;
2996 | top: 16px;
2997 | left: 100%;
2998 | }
2999 | .ant-steps-item-description {
3000 | font-size: 14px;
3001 | color: rgba(0, 0, 0, 0.45);
3002 | }
3003 | .ant-steps-item-wait .ant-steps-item-icon {
3004 | border-color: rgba(0, 0, 0, 0.25);
3005 | background-color: #fff;
3006 | }
3007 | .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {
3008 | color: rgba(0, 0, 0, 0.25);
3009 | }
3010 | .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
3011 | background: rgba(0, 0, 0, 0.25);
3012 | }
3013 | .ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title {
3014 | color: rgba(0, 0, 0, 0.45);
3015 | }
3016 | .ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title:after {
3017 | background-color: #e8e8e8;
3018 | }
3019 | .ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-description {
3020 | color: rgba(0, 0, 0, 0.45);
3021 | }
3022 | .ant-steps-item-wait > .ant-steps-item-tail:after {
3023 | background-color: #e8e8e8;
3024 | }
3025 | .ant-steps-item-process .ant-steps-item-icon {
3026 | border-color: #1890ff;
3027 | background-color: #fff;
3028 | }
3029 | .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
3030 | color: #1890ff;
3031 | }
3032 | .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
3033 | background: #1890ff;
3034 | }
3035 | .ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title {
3036 | color: rgba(0, 0, 0, 0.85);
3037 | }
3038 | .ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title:after {
3039 | background-color: #e8e8e8;
3040 | }
3041 | .ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-description {
3042 | color: rgba(0, 0, 0, 0.65);
3043 | }
3044 | .ant-steps-item-process > .ant-steps-item-tail:after {
3045 | background-color: #e8e8e8;
3046 | }
3047 | .ant-steps-item-process .ant-steps-item-icon {
3048 | background: #1890ff;
3049 | }
3050 | .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
3051 | color: #fff;
3052 | }
3053 | .ant-steps-item-process .ant-steps-item-title {
3054 | font-weight: 500;
3055 | }
3056 | .ant-steps-item-finish .ant-steps-item-icon {
3057 | border-color: #1890ff;
3058 | background-color: #fff;
3059 | }
3060 | .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
3061 | color: #1890ff;
3062 | }
3063 | .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
3064 | background: #1890ff;
3065 | }
3066 | .ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title {
3067 | color: rgba(0, 0, 0, 0.65);
3068 | }
3069 | .ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title:after {
3070 | background-color: #1890ff;
3071 | }
3072 | .ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-description {
3073 | color: rgba(0, 0, 0, 0.45);
3074 | }
3075 | .ant-steps-item-finish > .ant-steps-item-tail:after {
3076 | background-color: #1890ff;
3077 | }
3078 | .ant-steps-item-error .ant-steps-item-icon {
3079 | border-color: #f5222d;
3080 | background-color: #fff;
3081 | }
3082 | .ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {
3083 | color: #f5222d;
3084 | }
3085 | .ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
3086 | background: #f5222d;
3087 | }
3088 | .ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title {
3089 | color: #f5222d;
3090 | }
3091 | .ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title:after {
3092 | background-color: #e8e8e8;
3093 | }
3094 | .ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-description {
3095 | color: #f5222d;
3096 | }
3097 | .ant-steps-item-error > .ant-steps-item-tail:after {
3098 | background-color: #e8e8e8;
3099 | }
3100 | .ant-steps-item.ant-steps-next-error .ant-steps-item-title:after {
3101 | background: #f5222d;
3102 | }
3103 | .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
3104 | margin-right: 16px;
3105 | white-space: nowrap;
3106 | }
3107 | .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {
3108 | margin-right: 0;
3109 | }
3110 | .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title {
3111 | padding-right: 0;
3112 | }
3113 | .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail {
3114 | display: none;
3115 | }
3116 | .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description {
3117 | max-width: 140px;
3118 | white-space: normal;
3119 | }
3120 | .ant-steps-item-custom .ant-steps-item-icon {
3121 | background: none;
3122 | border: 0;
3123 | width: auto;
3124 | height: auto;
3125 | }
3126 | .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
3127 | font-size: 24px;
3128 | line-height: 32px;
3129 | top: 0;
3130 | left: 0.5px;
3131 | width: 32px;
3132 | height: 32px;
3133 | }
3134 | .ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
3135 | color: #1890ff;
3136 | }
3137 | .ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
3138 | margin-right: 12px;
3139 | }
3140 | .ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {
3141 | margin-right: 0;
3142 | }
3143 | .ant-steps-small .ant-steps-item-icon {
3144 | width: 24px;
3145 | height: 24px;
3146 | line-height: 24px;
3147 | text-align: center;
3148 | border-radius: 24px;
3149 | font-size: 12px;
3150 | }
3151 | .ant-steps-small .ant-steps-item-title {
3152 | font-size: 14px;
3153 | line-height: 24px;
3154 | padding-right: 12px;
3155 | }
3156 | .ant-steps-small .ant-steps-item-title:after {
3157 | top: 12px;
3158 | }
3159 | .ant-steps-small .ant-steps-item-description {
3160 | font-size: 14px;
3161 | color: rgba(0, 0, 0, 0.45);
3162 | }
3163 | .ant-steps-small .ant-steps-item-tail {
3164 | top: 8px;
3165 | padding: 0 8px;
3166 | }
3167 | .ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {
3168 | width: inherit;
3169 | height: inherit;
3170 | line-height: inherit;
3171 | border-radius: 0;
3172 | border: 0;
3173 | background: none;
3174 | }
3175 | .ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
3176 | font-size: 24px;
3177 | line-height: 24px;
3178 | -webkit-transform: none;
3179 | -ms-transform: none;
3180 | transform: none;
3181 | }
3182 | .ant-steps-vertical {
3183 | display: block;
3184 | }
3185 | .ant-steps-vertical .ant-steps-item {
3186 | display: block;
3187 | overflow: visible;
3188 | }
3189 | .ant-steps-vertical .ant-steps-item-icon {
3190 | float: left;
3191 | margin-right: 16px;
3192 | }
3193 | .ant-steps-vertical .ant-steps-item-content {
3194 | min-height: 48px;
3195 | overflow: hidden;
3196 | display: block;
3197 | }
3198 | .ant-steps-vertical .ant-steps-item-title {
3199 | line-height: 32px;
3200 | }
3201 | .ant-steps-vertical .ant-steps-item-description {
3202 | padding-bottom: 12px;
3203 | }
3204 | .ant-steps-vertical > .ant-steps-item > .ant-steps-item-tail {
3205 | position: absolute;
3206 | left: 16px;
3207 | top: 0;
3208 | height: 100%;
3209 | width: 1px;
3210 | padding: 38px 0 6px;
3211 | }
3212 | .ant-steps-vertical > .ant-steps-item > .ant-steps-item-tail:after {
3213 | height: 100%;
3214 | width: 1px;
3215 | }
3216 | .ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-tail {
3217 | display: block;
3218 | }
3219 | .ant-steps-vertical > .ant-steps-item > .ant-steps-item-content > .ant-steps-item-title:after {
3220 | display: none;
3221 | }
3222 | .ant-steps-vertical.ant-steps-small .ant-steps-item-tail {
3223 | position: absolute;
3224 | left: 12px;
3225 | top: 0;
3226 | padding: 30px 0 6px;
3227 | }
3228 | .ant-steps-vertical.ant-steps-small .ant-steps-item-title {
3229 | line-height: 24px;
3230 | }
3231 | @media (max-width: 480px) {
3232 | .ant-steps-horizontal.ant-steps-label-horizontal {
3233 | display: block;
3234 | }
3235 | .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {
3236 | display: block;
3237 | overflow: visible;
3238 | }
3239 | .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon {
3240 | float: left;
3241 | margin-right: 16px;
3242 | }
3243 | .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-content {
3244 | min-height: 48px;
3245 | overflow: hidden;
3246 | display: block;
3247 | }
3248 | .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-title {
3249 | line-height: 32px;
3250 | }
3251 | .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-description {
3252 | padding-bottom: 12px;
3253 | }
3254 | .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-tail {
3255 | position: absolute;
3256 | left: 16px;
3257 | top: 0;
3258 | height: 100%;
3259 | width: 1px;
3260 | padding: 38px 0 6px;
3261 | }
3262 | .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-tail:after {
3263 | height: 100%;
3264 | width: 1px;
3265 | }
3266 | .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item:not(:last-child) > .ant-steps-item-tail {
3267 | display: block;
3268 | }
3269 | .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-content > .ant-steps-item-title:after {
3270 | display: none;
3271 | }
3272 | .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-tail {
3273 | position: absolute;
3274 | left: 12px;
3275 | top: 0;
3276 | padding: 30px 0 6px;
3277 | }
3278 | .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-title {
3279 | line-height: 24px;
3280 | }
3281 | }
3282 | .ant-steps-label-vertical .ant-steps-item {
3283 | overflow: visible;
3284 | }
3285 | .ant-steps-label-vertical .ant-steps-item-tail {
3286 | padding: 0 24px;
3287 | margin-left: 48px;
3288 | }
3289 | .ant-steps-label-vertical .ant-steps-item-content {
3290 | display: block;
3291 | text-align: center;
3292 | margin-top: 8px;
3293 | width: 104px;
3294 | }
3295 | .ant-steps-label-vertical .ant-steps-item-icon {
3296 | display: inline-block;
3297 | margin-left: 36px;
3298 | }
3299 | .ant-steps-label-vertical .ant-steps-item-title {
3300 | padding-right: 0;
3301 | }
3302 | .ant-steps-label-vertical .ant-steps-item-title:after {
3303 | display: none;
3304 | }
3305 | .ant-steps-dot .ant-steps-item-title {
3306 | line-height: 1.5;
3307 | }
3308 | .ant-steps-dot .ant-steps-item-tail {
3309 | width: 100%;
3310 | top: 2px;
3311 | margin: 0 0 0 70px;
3312 | padding: 0;
3313 | }
3314 | .ant-steps-dot .ant-steps-item-tail:after {
3315 | height: 3px;
3316 | width: calc(100% - 20px);
3317 | margin-left: 12px;
3318 | }
3319 | .ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {
3320 | left: 2px;
3321 | }
3322 | .ant-steps-dot .ant-steps-item-icon {
3323 | padding-right: 0;
3324 | width: 8px;
3325 | height: 8px;
3326 | line-height: 8px;
3327 | border: 0;
3328 | margin-left: 67px;
3329 | background: transparent;
3330 | }
3331 | .ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot {
3332 | float: left;
3333 | width: 100%;
3334 | height: 100%;
3335 | border-radius: 100px;
3336 | position: relative;
3337 | -webkit-transition: all .3s;
3338 | transition: all .3s;
3339 | /* expand hover area */
3340 | }
3341 | .ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after {
3342 | content: "";
3343 | background: rgba(0, 0, 0, 0.001);
3344 | width: 60px;
3345 | height: 32px;
3346 | position: absolute;
3347 | top: -12px;
3348 | left: -26px;
3349 | }
3350 | .ant-steps-dot .ant-steps-item-content {
3351 | width: 140px;
3352 | }
3353 | .ant-steps-dot .ant-steps-item-process .ant-steps-item-icon {
3354 | width: 10px;
3355 | height: 10px;
3356 | line-height: 10px;
3357 | }
3358 | .ant-steps-dot .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot {
3359 | top: -1px;
3360 | }
3361 | .ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {
3362 | margin-left: 0;
3363 | margin-top: 8px;
3364 | }
3365 | .ant-steps-vertical.ant-steps-dot .ant-steps-item-tail {
3366 | margin: 0;
3367 | left: -9px;
3368 | top: 2px;
3369 | padding: 22px 0 4px;
3370 | }
3371 | .ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {
3372 | left: 0;
3373 | }
3374 | .ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot {
3375 | left: -2px;
3376 | }
3377 |
3378 |
--------------------------------------------------------------------------------