You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2021/12/07 08:58:14 UTC
[dolphinscheduler-website] branch master updated: Revert "[Feature] Mobile adaptation (#564)" (#565)
This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler-website.git
The following commit(s) were added to refs/heads/master by this push:
new 37e6c28 Revert "[Feature] Mobile adaptation (#564)" (#565)
37e6c28 is described below
commit 37e6c28805144e3f108e8b9a6c702d6cfe66aca4
Author: Kirs <ac...@163.com>
AuthorDate: Tue Dec 7 16:57:57 2021 +0800
Revert "[Feature] Mobile adaptation (#564)" (#565)
This reverts commit cbb1a80e991bfa79a329391aeefee61e7b1dfbaa.
---
docs/en-us/dev/user_doc/guide/quick-start.md | 17 +-
img/banner-mobile.png | Bin 342943 -> 0 bytes
img/menu_black.png | Bin 141 -> 0 bytes
img/menu_white.png | Bin 141 -> 0 bytes
package.json | 2 -
site_config/docs2-0-0.js | 2 +-
src/components/footer/index.jsx | 26 +--
src/components/footer/index.scss | 136 +++++-------
src/components/header/index.jsx | 132 ++++++------
src/components/header/index.scss | 155 +++++++-------
src/markdown.scss | 6 -
src/pages/blog/index.md.scss | 12 --
src/pages/home/index.jsx | 90 +++-----
src/pages/home/index.scss | 295 +++++++++++++------------
src/pages/user/index.jsx | 79 ++++---
src/pages/user/user.scss | 310 +++++++++++++++++++--------
src/variables.scss | 5 -
17 files changed, 673 insertions(+), 594 deletions(-)
diff --git a/docs/en-us/dev/user_doc/guide/quick-start.md b/docs/en-us/dev/user_doc/guide/quick-start.md
index 9410ada..418248a 100644
--- a/docs/en-us/dev/user_doc/guide/quick-start.md
+++ b/docs/en-us/dev/user_doc/guide/quick-start.md
@@ -14,11 +14,10 @@
<img src="/img/create-queue-en.png" width="60%" />
</p>
-* Create tenant
-
-<p align="center">
- <img src="/img/create-tenant-en.png" width="60%" />
-</p>
+ * Create tenant
+ <p align="center">
+ <img src="/img/create-tenant-en.png" width="60%" />
+ </p>
* Creating Ordinary Users
<p align="center">
@@ -44,11 +43,11 @@
<img src="/img/create-environment.png" width="60%" />
</p>
-* Create a token
+ * Create a token
-<p align="center">
- <img src="/img/token-en.png" width="60%" />
-</p>
+ <p align="center">
+ <img src="/img/token-en.png" width="60%" />
+ </p>
* Login with regular users
diff --git a/img/banner-mobile.png b/img/banner-mobile.png
deleted file mode 100644
index 80095dd..0000000
Binary files a/img/banner-mobile.png and /dev/null differ
diff --git a/img/menu_black.png b/img/menu_black.png
deleted file mode 100644
index e84ad37..0000000
Binary files a/img/menu_black.png and /dev/null differ
diff --git a/img/menu_white.png b/img/menu_white.png
deleted file mode 100644
index 83bc00c..0000000
Binary files a/img/menu_white.png and /dev/null differ
diff --git a/package.json b/package.json
index ad80bd6..6a249e3 100644
--- a/package.json
+++ b/package.json
@@ -14,12 +14,10 @@
"classnames": "^2.2.6",
"core-decorators": "^0.20.0",
"js-cookie": "^2.2.1",
- "lodash": "^4.17.21",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scroll": "^1.8.1",
"react-tilt": "^0.1.4",
- "swiper": "^7.3.1",
"whatwg-fetch": "^2.0.4"
},
"devDependencies": {
diff --git a/site_config/docs2-0-0.js b/site_config/docs2-0-0.js
index c02ab09..1ba10c2 100644
--- a/site_config/docs2-0-0.js
+++ b/site_config/docs2-0-0.js
@@ -2,7 +2,7 @@ export default {
'en-us': {
sidemenu: [
{
- title: 'About',
+ title: 'About Apache DolphinScheduler',
children: [
{
title: 'Introduction',
diff --git a/src/components/footer/index.jsx b/src/components/footer/index.jsx
index 0c0cec7..b21d14f 100644
--- a/src/components/footer/index.jsx
+++ b/src/components/footer/index.jsx
@@ -22,17 +22,17 @@ class Footer extends React.Component {
</div>
<div className="contact-container">
<ul>
- {
- dataSource.contact.list.map((contact, i) => (
- <li key={i}>
- <a href={getLink(contact.link)}>
- <img className="img-base" src={contact.img1} />
- <img className="img-change" src={contact.img2} />
- <p>{contact.name}</p>
- </a>
- </li>
- ))
- }
+ {
+ dataSource.contact.list.map((contact, i) => (
+ <li key={i}>
+ <img className="img-base" src={contact.img1} />
+ <img className="img-change" src={contact.img2} />
+ <a href={getLink(contact.link)}>
+ <p>{contact.name}</p>
+ </a>
+ </li>
+ ))
+ }
</ul>
</div>
<div className="cols-container">
@@ -43,7 +43,7 @@ class Footer extends React.Component {
dataSource.documentation.list.map((docu, i) => (
<li key={i}>
<a href={getLink(docu.link)}>
- <p>{docu.text}</p>
+ <p>{docu.text}</p>
</a>
</li>
))
@@ -58,7 +58,7 @@ class Footer extends React.Component {
dataSource.asf.list.map((asf, i) => (
<li key={i}>
<a href={getLink(asf.link)}>
- <p>{asf.text}</p>
+ <p>{asf.text}</p>
</a>
</li>
))
diff --git a/src/components/footer/index.scss b/src/components/footer/index.scss
index df58057..fc42a12 100644
--- a/src/components/footer/index.scss
+++ b/src/components/footer/index.scss
@@ -1,12 +1,16 @@
-@import "../../variables.scss";
+@import '../../variables.scss';
.footer-container {
- background: #f8f8f8;
+ background: #F8F8F8;
.footer-body {
max-width: $contentWidth;
margin: 0 auto;
box-sizing: border-box;
padding: 40px 40px 0;
+ @media screen and (max-width: $mobileWidth) {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
img {
// display: block;
width: 125px;
@@ -18,7 +22,7 @@
font-family: Avenir-Heavy;
text-align: center;
font-size: 36px;
- color: #000f20;
+ color: #000F20;
margin-bottom: 20px;
word-break: break-word;
height: 54px;
@@ -32,109 +36,112 @@
word-break: break-word;
height: 32px;
}
- .contact-container {
- ul {
+ .contact-container{
+ ul{
display: flex;
- margin-top: 80px;
+ margin-top:80px;
margin-bottom: 40px;
flex-direction: row;
align-items: center;
justify-content: center;
align-content: center;
+ // margin-left: 200px;
+ // margin-right: 200px;
li {
list-style: none;
- a {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-self: center;
- }
- p {
+ display:flex;
+ flex-direction: column;
+ align-items: center;
+ p{
font-family: Avenir-Heavy;
font-size: 22px;
- color: #000f20;
+ color: #000F20;
width: 280px;
text-align: center;
}
- &:hover p {
- color: #288fff;
+ &:hover p{
+ color: #288FFF;
}
- img {
+ img{
width: 80px;
height: 80px;
}
- .img-base {
+ .img-base{
display: block;
}
- .img-change {
+ .img-change{
display: none;
}
- &:hover .img-base {
+ &:hover .img-base{
display: none;
}
- &:hover .img-change {
+ &:hover .img-change{
display: block;
}
}
}
+
}
.cols-container {
- margin: 100px 0px 60px 0px;
+ margin-top: 100px;
+ margin-bottom: 60px;
display: flex;
flex-direction: row;
- justify-content: space-around;
- .docu-container {
- margin-left: 0px;
- h4 {
- color: #000f20;
+ justify-content: center;
+ .docu-container{
+ margin-left: 100px;
+ h4{
+ color: #000F20;
font-family: Avenir-Heavy;
font-size: 22px;
text-align: left;
margin-bottom: 10px;
+
}
- ul {
+ ul{
display: flex;
flex-direction: row;
border-top: 1px solid #ccc;
- li {
+ li{
margin-top: 10px;
list-style: none;
margin-right: 35px;
- p {
+ p{
font-family: Avenir-Heavy;
font-size: 16px;
- color: #000f20;
+ color: #000F20;
}
- &:hover p {
- color: #288fff;
+ &:hover p{
+ color: #288FFF;
}
}
}
}
- .asf-container {
+ .asf-container{
margin-left: 200px;
- h4 {
- color: #000f20;
+ h4{
+ color: #000F20;
font-family: Avenir-Heavy;
font-size: 22px;
text-align: left;
margin-bottom: 10px;
+
}
- ul {
+ ul{
display: flex;
flex-direction: row;
border-top: 1px solid #ccc;
- li {
+ li{
margin-top: 10px;
list-style: none;
margin-right: 30px;
- p {
+ p{
font-family: Avenir-Heavy;
font-size: 16px;
- color: #000f20;
+ color: #000F20;
}
- &:hover p {
- color: #288fff;
+ &:hover p{
+ color: #288FFF;
}
}
}
@@ -161,50 +168,13 @@
@media screen and (max-width: $mobileWidth) {
.footer-container {
.footer-body {
- padding: 40px 20px;
- h3 {
- font-size: 28px;
- height: auto;
- }
- h4 {
- font-size: 20px;
- height: auto;
- }
- .contact-container {
- ul {
- margin-top: 20px;
- flex-wrap: wrap;
- justify-content: center;
- li {
- margin-bottom: 20px;
- width: 50%;
- p {
- width: auto;
- }
- }
- }
- }
.cols-container {
- margin: 60px 0 20px 0;
- flex-direction: column;
- .docu-container,.asf-container {
- margin: 0 0 50px 0;
- ul {
- flex-wrap: wrap;
- padding-top: 10px;
- justify-content: center;
- li {
- margin: 8px 15px;
- }
- }
- h4 {
- text-align: center;
- }
+ .col {
+ width: 100%;
+ text-align: center;
+ padding: 0;
}
}
- .copyright {
- padding-top: 20px;
- }
}
}
}
diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index e778075..4e58b41 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -29,7 +29,7 @@ const searchSwitch = {
url: 'https://www.google.com/search?q=',
},
};
-const noop = () => { };
+const noop = () => {};
const propTypes = {
currentKey: PropTypes.string,
logo: PropTypes.string.isRequired,
@@ -49,7 +49,7 @@ class Header extends React.Component {
super(props);
this.state = {
current: props.currentKey,
- mobileMemuVisible: false,
+ menuBodyVisible: false,
language: props.language,
search: siteConfig.defaultSearch,
searchValue: '',
@@ -137,15 +137,9 @@ class Header extends React.Component {
}
}
- toggleMenu() {
- this.setState({
- mobileMemuVisible: !this.state.mobileMemuVisible,
- });
- }
-
render() {
const { type, logo, onLanguageChange } = this.props;
- const { mobileMemuVisible, language, search, searchVisible } = this.state;
+ const { menuBodyVisible, language, search, searchVisible } = this.state;
return (
<header
className={
@@ -156,80 +150,88 @@ class Header extends React.Component {
}
>
<div className="header-body">
- <span className={classnames({
- 'mobile-menu-btn': true,
- [`mobile-menu-btn-${type}`]: true,
- })}
- />
<a href={getLink(`/${language}/index.html`)}>
<img className="logo" alt={siteConfig.name} title={siteConfig.name} src={getLink(logo)} />
</a>
{
siteConfig.defaultSearch ?
(
- <div
- className={classnames({
- search: true,
- [`search-${type}`]: true,
- })}
- >
- <span className="icon-search" onClick={this.toggleSearch} />
- {
- searchVisible ?
- (
- <div className="search-input">
- <img src={searchSwitch[search].logo} onClick={this.switchSearch} />
- <input autoFocus onChange={this.onInputChange} onKeyDown={this.onKeyDown} />
- </div>
- ) : null
- }
- </div>
+ <div
+ className={classnames({
+ search: true,
+ [`search-${type}`]: true,
+ })}
+ >
+ <span className="icon-search" onClick={this.toggleSearch} />
+ {
+ searchVisible ?
+ (
+ <div className="search-input">
+ <img src={searchSwitch[search].logo} onClick={this.switchSearch} />
+ <input autoFocus onChange={this.onInputChange} onKeyDown={this.onKeyDown} />
+ </div>
+ ) : null
+ }
+ </div>
) : null
}
{
onLanguageChange !== noop ?
- (
- <span
- className={
- classnames({
- 'language-switch': true,
- [`language-switch-${type}`]: true,
- })
- }
- onClick={this.switchLang}
- >
- {languageSwitch.find(lang => lang.value === language).text}
- </span>
- )
+ (<span
+ className={
+ classnames({
+ 'language-switch': true,
+ [`language-switch-${type}`]: true,
+ })
+ }
+ onClick={this.switchLang}
+ >
+ {languageSwitch.find(lang => lang.value === language).text}
+ </span>)
:
null
}
<div
- className="header-menu"
+ className={
+ classnames({
+ 'header-menu': true,
+ 'header-menu-open': menuBodyVisible,
+ })
+ }
>
+ <img
+ className="header-menu-toggle"
+ onClick={this.toggleMenu}
+ src={type === 'normal' ? getLink('/img/system/menu_gray.png') : getLink('/img/system/menu_white.png')}
+ />
<div>
<Menu className={type === 'normal' ? 'blackClass' : 'whiteClass'} onClick={this.handleClick} selectedKeys={[this.state.current]} mode="horizontal" forceSubMenuRender>
- {siteConfig[language].pageMenu.map(item => (
- item.children ?
- <SubMenu
- key={item.key}
- className={this.state.current === item.key ? 'ant-menu-item-selected' : ''}
- title={
- <span className="submenu-title-wrapper">
- <a href={getLink(item.link)} target={item.target || '_self'}>{item.text}</a>
- </span>
- }
- >
- <Menu.ItemGroup className="showUL">
- {item.children.map(items => (
- <Menu.Item key={items.key} ><a href={getLink(items.link)} target={items.target || '_self'}>{items.text}</a></Menu.Item>
- ))}
- </Menu.ItemGroup>
- </SubMenu> :
- <Menu.Item key={item.key}>
+ {siteConfig[language].pageMenu.map(item => (
+ item.children ?
+ <SubMenu
+ key={item.key}
+ className={this.state.current === item.key ? 'ant-menu-item-selected' : ''}
+ title={
+ <span className="submenu-title-wrapper">
<a href={getLink(item.link)} target={item.target || '_self'}>{item.text}</a>
- </Menu.Item>
- ))}
+ <ul style={{ display: 'none' }}>
+ {item.children.map(items => (
+ <li key={items.key} ><a href={getLink(items.link)} target={items.target || '_self'}>{items.text}</a></li>
+ ))}
+ </ul>
+ </span>
+ }
+ >
+ <Menu.ItemGroup className="showUL">
+ {item.children.map(items => (
+ <Menu.Item key={items.key} ><a href={getLink(items.link)} target={items.target || '_self'}>{items.text}</a></Menu.Item>
+ ))}
+ </Menu.ItemGroup>
+ </SubMenu> :
+ <Menu.Item key={item.key}>
+ <a href={getLink(item.link)} target={item.target || '_self'}>{item.text}</a>
+ </Menu.Item>
+ ))}
</Menu>
</div>
</div>
diff --git a/src/components/header/index.scss b/src/components/header/index.scss
index 73567a5..f550732 100644
--- a/src/components/header/index.scss
+++ b/src/components/header/index.scss
@@ -1,10 +1,13 @@
-@import "../../variables.scss";
-.ant-menu {
+@import '../../variables.scss';
+.ant-menu {
background: none;
}
.ant-menu-horizontal {
border-bottom: 0;
}
+.ant-menu-submenu-title {
+ padding: 0 15px !important;
+}
.ant-menu-submenu-hidden {
display: none;
}
@@ -19,11 +22,11 @@
background-color: transparent;
}
&-dark {
- background-color: #000f20;
+ background-color:#000F20;
}
&-normal {
background-color: #fff;
- box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.08);
+ box-shadow: 0 2px 10px 0 rgba(0,0,0,0.08);
}
.header-body {
max-width: $contentWidth;
@@ -31,15 +34,21 @@
height: $headerHeight;
line-height: $headerHeight;
.logo {
- margin-top: 12px;
- margin-left: 30px;
+ margin-top: 10px;
+ margin-left: 40px;
width: 156px;
vertical-align: sub;
}
.header-menu {
margin-top: 10px;
- margin-right: 20px;
float: right;
+ .header-menu-toggle {
+ display: none;
+ width: 19px;
+ margin-right: 20px;
+ margin-top: $headerHeight / 2 - 15px;
+ cursor: pointer;
+ }
}
ul {
padding: 0;
@@ -47,14 +56,14 @@
}
li {
display: inline-block;
- margin-right: 10px;
+ margin-right: 20px;
}
.menu-item {
font-family: Avenir-Heavy;
font-size: 14px;
vertical-align: bottom;
}
- .whiteClass {
+ .whiteClass{
.ant-menu-item {
a {
color: #fff;
@@ -81,10 +90,10 @@
.submenu-title-wrapper {
a {
color: #fff;
- opacity: 0.6;
+ opacity:0.6;
font-family: Avenir-Medium;
}
- }
+ }
}
}
.blackClass {
@@ -173,12 +182,12 @@
}
}
.language-switch-primary {
- border: 1px solid #fff;
- color: #fff;
+ border: 1px solid #FFF;
+ color: #FFF;
}
.language-switch-dark {
- border: 1px solid #fff;
- color: #fff;
+ border: 1px solid #FFF;
+ color: #FFF;
}
.language-switch-normal {
border: 1px solid #333;
@@ -198,16 +207,16 @@
width: 12px;
height: 12px;
border-radius: 50%;
- border: 2px solid;
+ border:2px solid;
position: relative;
&::before {
- content: "";
+ content: '';
transform: rotate(45deg);
- width: 8px;
+ width:8px;
height: 2px;
position: absolute;
- top: 13px;
- left: 11px;
+ top:13px;
+ left:11px;
}
}
&-primary {
@@ -273,82 +282,62 @@
}
}
-@media screen and (max-width: $navMiddle) {
- .header-container {
- .header-body {
- li {
- margin-right: 10px;
- padding: 0 10px;
- }
- .ant-menu-submenu-title{
- padding: 0;
- }
- }
- }
-}
-@media screen and (max-width: $navSmall) {
+@media screen and (max-width: $mobileWidth) {
.header-container {
.header-body {
- li {
- font-size: 12px;
- margin-right: 5px;
+ .logo {
+ margin-left: 20px;
+ }
+ .language-switch {
+ margin-right: 20px;
}
- }
- }
-}
-
-@media screen and (max-width: $navMini) {
- .header-container {
- .header-body {
.header-menu {
- display: none;
+ ul {
+ display: none;
+ }
+ .header-menu-toggle {
+ display: inline-block;
+ margin-right: 20px;
+ }
}
- .mobile-menu-btn {
- display: block;
- width: 24px;
- height: 24px;
- background-size: 100% 100%;
- margin-top: 21px;
- margin-left: 20px;
- cursor: pointer;
- opacity: 0.6;
- float: left;
- &-primary,
- &-dark {
- background-image: url("/img/menu_white.png");
- opacity: 0.6;
+ .header-menu-open {
+ ul {
+ background-color: $headerMenuBgColor;
+ display: inline-block;
+ position: absolute;
+ right: 0;
+ top: $headerHeight;
+ z-index: 100;
+ }
+ li {
+ width: 200px;
+ display: list-item;
+ padding-left: 30px;
+ list-style: none;
+ line-height: 40px;
+ margin-right: 20px;
+ a {
+ color: #333;
+ display: inline-block;
+ width: 100%;
+ }
&:hover {
- opacity: 1;
+ background: $endColor;
+ a {
+ color: #fff;
+ opacity: 1;
+ }
}
}
- &-normal {
- background-image: url("/img/menu_black.png");
- opacity: 0.6;
- &:hover {
+ .menu-item-primary-active, .menu-item-normal-active, .menu-item-dark-active {
+ background: $endColor;
+ a {
+ color: #fff;
opacity: 1;
}
}
}
- .search {
- margin-right: 20px;
- }
- }
- }
-}
-
-@media screen and (max-width: $mobileWidth) {
- .header-container {
- .header-body {
- .logo {
- margin-left: 20px;
- }
- .search {
- margin-right: 20px;
- }
- .language-switch {
- margin-right: 20px;
- }
}
}
}
diff --git a/src/markdown.scss b/src/markdown.scss
index cc2fe94..7dfc83c 100644
--- a/src/markdown.scss
+++ b/src/markdown.scss
@@ -1553,9 +1553,3 @@ $katexPath: 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/';
.katex .mtable .col-align-r>.vlist {
text-align:right
}
-
-@media screen and (max-width: $mobileWidth) {
- .markdown-body img {
- width: 100%;
- }
-}
diff --git a/src/pages/blog/index.md.scss b/src/pages/blog/index.md.scss
index 3dcb5e2..7e83c19 100644
--- a/src/pages/blog/index.md.scss
+++ b/src/pages/blog/index.md.scss
@@ -5,16 +5,4 @@
margin: $headerHeight auto 0;
min-width: 735px;
}
-}
-
-@media screen and (max-width: $mobileWidth) {
- .blog-detail-page {
- .blog-content {
- min-width: auto;
- width: 100%;
- padding: 40px 20px;
- box-sizing: border-box;
- margin: $headerHeight auto 0;
- }
- }
}
\ No newline at end of file
diff --git a/src/pages/home/index.jsx b/src/pages/home/index.jsx
index e39d919..9c06057 100644
--- a/src/pages/home/index.jsx
+++ b/src/pages/home/index.jsx
@@ -8,12 +8,8 @@ import Language from '../../components/language';
import Item from './featureItem';
import homeConfig from '../../../site_config/home';
import './index.scss';
+import Slider from '../../components/slider';
import EventCard from '../community/eventCard';
-import debounce from 'lodash/debounce';
-import Swiper from 'swiper/swiper-bundle';
-import 'swiper/swiper-bundle.css';
-
-const MOBILE_WIDTH = 640;
class Home extends Language {
constructor(props) {
@@ -23,10 +19,7 @@ class Home extends Language {
starCount: 0,
forkCount: 0,
index: 0,
- isMobile: document.body.clientWidth <= MOBILE_WIDTH,
};
- this.swiper = null;
- this.calculateLayout = null;
}
componentDidMount() {
@@ -47,12 +40,6 @@ class Home extends Language {
});
}
});
- this.calculateLayout = debounce(() => {
- this.setState({
- isMobile: document.body.clientWidth <= MOBILE_WIDTH,
- });
- }, 200);
- window.addEventListener('resize', this.calculateLayout);
// 写死协议,因github会做协议跳转,这种跳转会被Safari拦截
fetch('https://api.github.com/repos/apache/dolphinscheduler')
.then(res => res.json())
@@ -63,41 +50,36 @@ class Home extends Language {
forkCount: data.forks_count,
});
});
- this.initSwiper();
- window._debug = this;
}
- componentDidUpdate(prevProps, prevState) {
- if (prevState.isMobile !== this.state.isMobile) {
- this.initSwiper();
+ addClick = (length) => {
+ if (this.state.index < length - 1) {
+ this.setState({
+ ...this.state,
+ index: this.state.index + 1,
+ });
+ } else {
+ this.setState({
+ ...this.state,
+ index: 0,
+ });
}
}
- componentWillUnmount() {
- if (this.calculateLayout) {
- window.removeEventListener('resize', this.calculateLayout);
+ minusClick = (length) => {
+ if (this.state.index > 0) {
+ this.setState({
+ ...this.state,
+ index: this.state.index - 1,
+ });
+ } else {
+ this.setState({
+ ...this.state,
+ index: length - 1,
+ });
}
}
- initSwiper() {
- const { isMobile } = this.state;
- // Events swiper
- if (this.swiper) this.swiper.destroy();
- this.swiper = new Swiper('.swiper-container', {
- loop: true,
- slidesPerView: isMobile ? 1 : 3,
- spaceBetween: 30,
- slidesPerGroup: isMobile ? 1 : 3,
- navigation: {
- nextEl: '.swiper-button-next',
- prevEl: '.swiper-button-prev',
- },
- pagination: {
- el: '.swiper-pagination',
- clickable: true,
- },
- });
- }
addClick = (length) => {
if (this.state.index < length - 1) {
@@ -128,7 +110,7 @@ class Home extends Language {
}
render() {
- const { starCount, forkCount, isMobile } = this.state;
+ const { starCount, forkCount } = this.state;
const language = this.getLanguage();
const dataSource = homeConfig[language];
const { headerType } = this.state;
@@ -136,9 +118,7 @@ class Home extends Language {
return (
<div className="home-page">
<section className="top-section">
- {
- isMobile ? null : <img className="pc-bg" src="/img/banner.jpg" />
- }
+ <img src="/img/banner.jpg" />
<Header
currentKey="home"
type={headerType}
@@ -200,22 +180,14 @@ class Home extends Language {
}
</ul>
</section>
+
<section className="events-section">
<h3>{dataSource.events.title}</h3>
- <div className="swiper-container">
- <div className="swiper-wrapper">
- {
- dataSource.events.list.map((event, i) => (
- <div key={i} className="swiper-slide">
- <EventCard event={event} key={i} />
- </div>
- ))
- }
- </div>
- </div>
- <div className="swiper-button-next" />
- <div className="swiper-button-prev" />
- <div className="swiper-pagination" />
+ <Slider>
+ {dataSource.events.list.map((event, i) => (
+ <EventCard event={event} key={i} />
+ ))}
+ </Slider>
</section>
<Footer logo="/img/ds_gray.svg" language={language} />
</div>
diff --git a/src/pages/home/index.scss b/src/pages/home/index.scss
index 0691919..cf83b3a 100644
--- a/src/pages/home/index.scss
+++ b/src/pages/home/index.scss
@@ -1,22 +1,17 @@
-@import "../../variables.scss";
-@import "../../reset.scss";
+@import '../../variables.scss';
+@import '../../reset.scss';
@keyframes slashStar {
0% {
- opacity: 1;
- }
+ opacity: 1; }
100% {
- opacity: 0;
- }
+ opacity: 0; }
}
.home-page {
- min-width: 1100px;
.top-section {
- width: 100%;
position: relative;
- height: auto;
- .pc-bg {
+ img {
width: 100%;
}
.animation {
@@ -24,13 +19,13 @@
width: 6px;
height: 6px;
border-radius: 50%;
- background-color: #1be1f6;
- }
+ background-color: #1BE1F6;
+ }
.animation1 {
left: 15%;
top: 70%;
animation: slashStar 2s ease-in-out 0.3s infinite;
- }
+ }
.animation2 {
left: 34%;
top: 35%;
@@ -67,7 +62,7 @@
h2 {
font-family: Avenir-Heavy;
font-size: 46px;
- color: #fff;
+ color: #FFF;
text-align: center;
word-break: break-word;
margin: 0;
@@ -77,7 +72,7 @@
opacity: 0.6;
font-family: Avenir-Medium;
font-size: 24px;
- color: #fff;
+ color: #FFF;
text-align: center;
margin: 12px auto 0;
max-width: 730px;
@@ -134,9 +129,9 @@
display: inline-block;
font-family: Avenir-Heavy;
font-size: 14px;
- color: #fff;
+ color: #FFF;
text-align: center;
- background: #46484b;
+ background: #46484B;
border-radius: 2px;
line-height: 24px;
padding: 0 6px;
@@ -154,7 +149,7 @@
}
}
.introduction-section {
- background: #f9fafa;
+ background: #F9FAFA;
.introduction-body {
max-width: $contentWidth;
box-sizing: border-box;
@@ -167,7 +162,7 @@
justify-content: center;
flex-direction: column;
&::before {
- content: "";
+ content: '';
position: relative;
top: 102px;
left: 40px;
@@ -175,7 +170,7 @@
border-right: 1px solid #666;
}
&::after {
- content: "";
+ content: '';
position: relative;
left: 39px;
top: 165px;
@@ -201,7 +196,7 @@
font-size: 22px;
width: 940px;
height: 64px;
- color: #130e0e;
+ color:#130e0e;
}
}
img {
@@ -211,6 +206,16 @@
max-width: 100%;
// box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.05);
}
+ @media screen and (max-width: 1106px){
+ .introduction {
+ display: inline-block;
+ width: 100%;
+ max-width: 100%;
+ }
+ img {
+ margin: 0;
+ }
+ }
}
}
.feature-section {
@@ -220,7 +225,7 @@
position: relative;
padding: 80px 40px 40px;
&::before {
- content: "";
+ content: '';
position: absolute;
top: 0;
left: 50%;
@@ -230,7 +235,7 @@
border-right: 1px solid #666;
}
&::after {
- content: "";
+ content: '';
position: absolute;
top: 66px;
left: 50%;
@@ -249,11 +254,13 @@
list-style: none;
padding: 0;
margin: 0;
- display: flex;
li {
+ width: 240px;
+ height: 360px;
text-align: center;
- display: block;
- padding-bottom: 40px;
+ vertical-align: top;
+ display: inline-block;
+ margin-bottom: 40px;
width: 25%;
cursor: pointer;
&:hover {
@@ -276,7 +283,7 @@
height: 32px;
font-weight: 400;
color: #333333;
- line-height: 32px;
+ line-height: 32px
}
p {
width: 200px;
@@ -290,28 +297,20 @@
}
}
}
+ @media screen and (max-width: 768px){
+ li {
+ width: 100%;
+ }
+ }
}
}
.events-section {
+ // background: #F9FAFA;
max-width: $contentWidth;
- margin: 0px auto 70px;
- padding: 0 50px;
+ margin: 0px auto 50px;
box-sizing: border-box;
- position: relative;
- .swiper-container {
- overflow: hidden;
- }
- .swiper-button-next {
- position: absolute;
- right: 10px;
- }
- .swiper-pagination {
- position: absolute;
- bottom: -50px;
- }
- .swiper-button-prev {
- position: absolute;
- left: 10px;
+ @media screen and (max-width: $mobileWidth) {
+ padding: 0px;
}
h3 {
font-family: Avenir-Heavy;
@@ -321,12 +320,19 @@
margin: 40px 0 60px;
}
.event-card {
- width: 100%;
+ width: 373px;
font-size: 0;
img {
- width: 100%;
+ width: 373px;
height: 209px;
}
+ @media screen and (max-width: $mobileWidth / 2) {
+ width: 320px;
+ img {
+ width: 320px;
+ height: 179px;
+ }
+ }
.event-introduction {
padding: 20px;
h4 {
@@ -357,7 +363,7 @@
}
}
}
- .ourusers-section {
+ .ourusers-section{
display: flex;
flex-direction: column;
align-items: center;
@@ -370,33 +376,33 @@
margin-top: 40px;
margin-bottom: 60px;
}
- .button1-section {
+ .button1-section{
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
width: 100%;
- img {
+ img{
width: 80px;
height: 80px;
&:hover {
box-shadow: 0px 0px 12px 0px rgba(9, 97, 197, 0.1);
}
}
- button {
+ button{
border: hidden;
background-color: transparent;
}
- .overflow-section {
+ .overflow-section{
display: flex;
width: 70%;
- ul {
+ ul{
display: inline-flex;
flex-wrap: wrap;
- li {
+ li{
list-style: none;
margin: 5px 5px 5px 5px;
- img {
+ img{
width: 100px;
height: 100px;
&:hover {
@@ -408,7 +414,7 @@
}
}
}
- .review-section {
+ .review-section{
display: flex;
flex-direction: column;
align-items: center;
@@ -420,60 +426,60 @@
text-align: center;
margin-top: 40px;
}
- .button-section {
+ .button-section{
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
width: 100%;
- img {
+ img{
width: 80px;
height: 80px;
&:hover {
box-shadow: 0px 0px 12px 0px rgba(9, 97, 197, 0.1);
}
}
- button {
+ button{
border: hidden;
background-color: transparent;
}
- .overflow-section {
+ .overflow-section{
overflow: hidden;
width: 65%;
height: 350px;
margin: 40px 0px 20px 0px;
- background: #f9fafa;
+ background: #F9FAFA;
display: flex;
align-items: center;
- ul {
+ ul{
display: -webkit-box;
align-items: center;
flex-direction: row;
width: 100%;
- li {
+ li{
display: flex;
flex-direction: row;
align-items: center;
list-style: none;
width: 100%;
- img {
+ img{
width: 150px;
height: 150px;
margin: 0 40px 0 50px;
}
- .name-section {
+ .name-section{
display: flex;
flex-direction: column;
margin-left: 20px;
}
- p {
+ p{
font-family: Avenir-Heavy;
}
- .pr {
+ .pr{
font-size: 20px;
margin-right: 20px;
}
- .pn {
+ .pn{
font-size: 18px;
text-align: right;
margin-top: 40px;
@@ -484,6 +490,91 @@
}
}
}
+ .start-section {
+ background-image: linear-gradient(0deg, $startColor 0%, $intermediateColor 51%, $endColor 100%);
+ .start-body {
+ max-width: $contentWidth;
+ margin: 0 auto;
+ box-sizing: border-box;
+ height: 260px;
+ padding: 35px 40px;
+ position: relative;
+ &::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 20px;
+ height: 100%;
+ opacity: 0.3;
+ border-right: 1px solid #fff;
+ }
+ &::after {
+ content: '';
+ position: absolute;
+ left: 19px;
+ top: 48px;
+ height: 17px;
+ background: #fff;
+ }
+ .left-part {
+ display: inline-block;
+ width: 50%;
+ vertical-align: top;
+ h3 {
+ font-family: Avenir-Heavy;
+ font-size: 36px;
+ color: #FFF;
+ margin: 0;
+ }
+ p {
+ opacity: 0.8;
+ font-family: Avenir-Medium;
+ font-size: 18px;
+ color: #FFF;
+ line-height: 24px;
+ margin: 6px 0 12px;
+ }
+ a {
+ font-family: Avenir-Heavy;
+ font-size: 14px;
+ color: $brandColor;
+ text-align: center;
+ display: inline-block;
+ width: 140px;
+ height: 48px;
+ line-height: 48px;
+ background: #FFF;
+ border-radius: 4px;
+ }
+ }
+ .right-part {
+ display: inline-block;
+ width: 50%;
+ font-size: 0;
+ margin-top: 15px;
+ img {
+ margin-left: 5%;
+ width: 500px;
+ }
+ }
+ @media screen and (max-width: 1050px){
+ & {
+ height: 474px;
+ }
+ .left-part {
+ width: 100%;
+ }
+ .right-part {
+ width: 100%;
+ margin-top: 38px;
+ img {
+ max-width: 100%;
+ margin-left: 0;
+ }
+ }
+ }
+ }
+ }
.users-section {
box-sizing: border-box;
max-width: $contentWidth;
@@ -491,7 +582,7 @@
padding: 80px 40px 40px;
position: relative;
&::before {
- content: "";
+ content: '';
position: absolute;
top: 0;
left: 50%;
@@ -501,7 +592,7 @@
border-right: 1px solid #666;
}
&::after {
- content: "";
+ content: '';
position: absolute;
top: 66px;
left: 50%;
@@ -545,25 +636,6 @@
}
}
@media screen and (max-width: $mobileWidth) {
- min-width: auto;
- .top-section {
- height: 100vh;
- max-height: 1335px;
- background-image: url("/img/banner-mobile.png");
- background-position: right 50% bottom 0%;
- background-size: cover;
- .pc-bg {
- display: none;
- }
- .product-name {
- h2 {
- font-size: 36px;
- }
- }
- .product-desc {
- font-size: 18px;
- }
- }
.introduction-section {
padding: 0 20px;
&::before {
@@ -572,51 +644,10 @@
&::after {
left: 19px;
}
- .introduction-body {
- min-height: auto;
- .introduction {
- margin: 40px auto 0 auto;
- h3 {
- width: 100%;
- font-size: 28px;
- }
- p {
- font-size: 18px;
- width: 100%;
- height: auto;
- text-align: center;
- }
- }
- img {
- width: 100%;
- margin: 40px 0;
- height: auto;
- }
- }
- }
- .feature-section {
- padding: 40px 20px;
- h3 {
- font-size: 28px;
- margin: 0 0 20px 0;
- }
- ul {
- width: 100%;
- flex-direction: column;
- li {
- width: 100%;
- }
- }
}
- .events-section {
- h3 {
- font-size: 28px;
- margin: 20px 0 40px 0;
- }
- padding: 0 10px;
- .swiper-button-next, .swiper-button-prev{
- display: none;
- }
+ .feature-section, .users-section {
+ padding-left: 20px;
+ padding-right: 20px;
}
}
}
diff --git a/src/pages/user/index.jsx b/src/pages/user/index.jsx
index 21fbd0d..1bd983f 100644
--- a/src/pages/user/index.jsx
+++ b/src/pages/user/index.jsx
@@ -4,9 +4,6 @@ import Header from '../../components/header';
import Language from '../../components/language';
import homeConfig from '../../../site_config/home';
import './user.scss';
-import Footer from '../../components/footer';
-import Swiper from 'swiper/swiper-bundle';
-import 'swiper/swiper-bundle.css';
class User extends Language {
constructor(props) {
@@ -16,25 +13,39 @@ class User extends Language {
starCount: 0,
forkCount: 0,
index: 0,
- swiper: null,
};
}
- componentDidMount() {
- this.swiper = new Swiper('.swiper-container', {
- loop: true,
- navigation: {
- nextEl: '.swiper-button-next',
- prevEl: '.swiper-button-prev',
- },
- pagination: {
- el: '.swiper-pagination',
- clickable: true,
- },
- });
+ addClick = (length) => {
+ if (this.state.index < length - 1) {
+ this.setState({
+ ...this.state,
+ index: this.state.index + 1,
+ });
+ } else {
+ this.setState({
+ ...this.state,
+ index: 0,
+ });
+ }
+ }
+
+ minusClick = (length) => {
+ if (this.state.index > 0) {
+ this.setState({
+ ...this.state,
+ index: this.state.index - 1,
+ });
+ } else {
+ this.setState({
+ ...this.state,
+ index: length - 1,
+ });
+ }
}
render() {
+ const { index } = this.state;
const language = this.getLanguage();
const { headerType } = this.state;
const headerLogo = headerType === 'normal' ? '/img/hlogo_colorful.svg' : '/img/hlogo_white.svg';
@@ -54,7 +65,7 @@ class User extends Language {
<h3>
{dataSource.ourusers.title}
</h3>
- <div className="button1-section">
+ <div className="button1-section" id="buttonleft">
<div className="overflow-section">
<ul>
{
@@ -70,30 +81,30 @@ class User extends Language {
</section>
<section className="review-section">
<h3>{dataSource.userreview.title}</h3>
- <div className="swiper-container">
- <div className="swiper-wrapper">
- {
- dataSource.userreview.list.map((ureview, i) => (
- <div key={i} className="swiper-slide">
- <div className="slide-content">
- <div className="img-box">
- <img src={ureview.img} />
- </div>
+ <div className="button-section" id="buttonleft">
+ <button onClick={() => this.minusClick(dataSource.userreview.list.length)} >
+ <img src="/img/gotoleft.png" />
+ </button>
+ <div className="overflow-section">
+ <ul>
+ {
+ dataSource.userreview.list.map((ureview, i) => (
+ <li key={i}>
+ <img src={ureview.img} />
<div className="name-section">
<p className="pr">{ureview.review} </p>
<p className="pn">{ureview.name} </p>
</div>
- </div>
- </div>
- ))
- }
+ </li>
+ ))[index]
+ }
+ </ul>
</div>
- <div className="swiper-button-next" />
- <div className="swiper-button-prev" />
- <div className="swiper-pagination" />
+ <button onClick={() => this.addClick(dataSource.userreview.list.length)}>
+ <img src="/img/gotoright.png" />
+ </button>
</div>
</section>
- <Footer logo="/img/ds_gray.svg" language={language} />
</div>
);
}
diff --git a/src/pages/user/user.scss b/src/pages/user/user.scss
index 067e4bc..22c89f4 100644
--- a/src/pages/user/user.scss
+++ b/src/pages/user/user.scss
@@ -1,21 +1,161 @@
-@import "../../variables.scss";
-@import "../../reset.scss";
+@import '../../variables.scss';
+@import '../../reset.scss';
@keyframes slashStar {
0% {
- opacity: 1;
- }
+ opacity: 1; }
100% {
- opacity: 0;
- }
+ opacity: 0; }
}
.user-page {
- .ourusers-section {
+ .top-section {
+ position: relative;
+
+ img {
+ width: 100%;
+ }
+ .animation {
+ position: absolute;
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background-color: #1BE1F6;
+ }
+ .animation1 {
+ left: 15%;
+ top: 70%;
+ animation: slashStar 2s ease-in-out 0.3s infinite;
+ }
+ .animation2 {
+ left: 34%;
+ top: 35%;
+ animation: slashStar 2s ease-in-out 1.2s infinite;
+ }
+ .animation3 {
+ left: 53%;
+ top: 20%;
+ animation: slashStar 2s ease-in-out 0.5s infinite;
+ }
+ .animation4 {
+ left: 72%;
+ top: 64%;
+ animation: slashStar 2s ease-in-out 0.8s infinite;
+ }
+ .animation5 {
+ left: 87%;
+ top: 30%;
+ animation: slashStar 2s ease-in-out 1.5s infinite;
+ }
+ .vertical-middle {
+ position: absolute;
+ left: 0;
+ top: 40%;
+ transform: translateY(-50%);
+ box-sizing: border-box;
+ width: 100%;
+ text-align: center;
+ padding: 0 20px;
+ }
+ .product-name {
+ position: relative;
+ display: inline-block;
+ h2 {
+ font-family: Avenir-Heavy;
+ font-size: 46px;
+ color: #FFF;
+ text-align: center;
+ word-break: break-word;
+ margin: 0;
+ }
+ }
+ .product-desc {
+ opacity: 0.6;
+ font-family: Avenir-Medium;
+ font-size: 24px;
+ color: #FFF;
+ text-align: center;
+ margin: 12px auto 0;
+ max-width: 730px;
+ }
+ .button-area {
+ text-align: center;
+ margin-top: 40px;
+ .button {
+ margin-right: 20px;
+ }
+ .button:last-child {
+ margin-right: 0;
+ }
+ }
+ .github-buttons {
+ margin-top: 20px;
+ text-align: center;
+ a {
+ margin-right: 12px;
+ &:last-child {
+ margin-right: 0;
+ }
+ div {
+ border-radius: 2px;
+ display: inline-block;
+ height: 24px;
+ line-height: 24px;
+ font-size: 12px;
+ padding: 0 8px;
+ color: #fff;
+ background: rgba(255, 255, 255, 0.2);
+ img {
+ width: 16px;
+ height: 16px;
+ vertical-align: middle;
+ margin-top: -6px;
+ }
+ .count {
+ font-family: TXD_D_Medium;
+ font-size: 16px;
+ padding-left: 4px;
+ display: inline-block;
+ height: 100%;
+ min-width: 30px;
+ }
+ }
+ }
+ }
+ .version-note {
+ text-align: center;
+ margin: 22px 0 10px;
+ a {
+ text-decoration: none;
+ display: inline-block;
+ font-family: Avenir-Heavy;
+ font-size: 14px;
+ color: #FFF;
+ text-align: center;
+ background: #46484B;
+ border-radius: 2px;
+ line-height: 24px;
+ padding: 0 6px;
+ margin-right: 10px;
+ &:last-child {
+ margin-right: 0;
+ }
+ }
+ }
+ .release-date {
+ font-family: Avenir-Medium;
+ font-size: 12px;
+ color: #999;
+ text-align: center;
+ }
+ }
+
+ .ourusers-section{
display: flex;
flex-direction: column;
align-items: center;
- margin: 110px auto 80px auto;
+ margin-bottom: 40px;
+ margin:110px auto;
h3 {
font-family: Avenir-Heavy;
font-size: 36px;
@@ -24,33 +164,33 @@
margin-top: 40px;
margin-bottom: 60px;
}
- .button1-section {
+ .button1-section{
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
width: 100%;
- img {
+ img{
width: 80px;
height: 80px;
&:hover {
box-shadow: 0px 0px 12px 0px rgba(9, 97, 197, 0.1);
}
}
- button {
+ button{
border: hidden;
background-color: transparent;
}
- .overflow-section {
+ .overflow-section{
display: flex;
width: 70%;
- ul {
+ ul{
display: inline-flex;
flex-wrap: wrap;
- li {
+ li{
list-style: none;
margin: 5px 5px 5px 5px;
- img {
+ img{
width: 100px;
height: 100px;
&:hover {
@@ -62,11 +202,11 @@
}
}
}
- .review-section {
+ .review-section{
display: flex;
flex-direction: column;
align-items: center;
- margin-bottom: 80px;
+ margin-bottom: 40px;
h3 {
font-family: Avenir-Heavy;
font-size: 36px;
@@ -74,94 +214,84 @@
text-align: center;
margin-top: 40px;
}
- .swiper-container {
- width: 80%;
- overflow: hidden;
- position: relative;
- margin: 20px 40px;
- .swiper-wrapper {
- align-items: center;
+ .button-section{
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ img{
+ width: 80px;
+ height: 80px;
+ &:hover {
+ box-shadow: 0px 0px 12px 0px rgba(9, 97, 197, 0.1);
+ }
}
- .slide-content {
+ button{
+ border: hidden;
+ background-color: transparent;
+ }
+ .overflow-section{
+ overflow: hidden;
+ width: 65%;
+ height: 350px;
+ margin: 40px 0px 20px 0px;
+ background: #F9FAFA;
display: flex;
align-items: center;
- justify-content: center;
- width: calc(100% - 120px);
- background-color: #f9fafa;
- margin: 40px 60px;
- padding: 20px;
- box-sizing: border-box;
- min-height: 300px;
- .img-box {
- width: 150px;
- height: 150px;
- margin: 0 40px 0 50px;
- display: flex;
+ ul{
+ display: -webkit-box;
align-items: center;
- img {
+ flex-direction: row;
+ width: 100%;
+ li{
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ list-style: none;
width: 100%;
+ img{
+ width: 150px;
+ height: 150px;
+ margin: 0 40px 0 50px;
+ }
+ .name-section{
+ display: flex;
+ flex-direction: column;
+ margin-left: 20px;
+ }
+ p{
+ font-family: Avenir-Heavy;
+ }
+ .pr{
+ font-size: 20px;
+ margin-right: 20px;
+ }
+ .pn{
+ font-size: 18px;
+ text-align: right;
+ margin-top: 40px;
+ margin-right: 20px;
+ }
}
}
- .name-section {
- flex: 1;
- }
}
}
}
@media screen and (max-width: $mobileWidth) {
- .ourusers-section {
- margin: 70px auto 40px auto;
- h3 {
- font-size: 28px;
- margin-bottom: 40px;
+ .introduction-section {
+ padding: 0 20px;
+ &::before {
+ left: 20px;
}
- .button1-section {
- .overflow-section {
- width: 100%;
- ul {
- justify-content: center;
- }
- }
+ &::after {
+ left: 19px;
}
}
- .review-section {
- h3 {
- font-size: 28px;
- margin: 0 0 20px 0;
- }
- .swiper-container {
- width: 100%;
- overflow: hidden;
- position: relative;
- .swiper-wrapper {
- align-items: stretch;
- }
- .swiper-slide {
- background-color: #f9fafa;
- height: auto;
- }
- .slide-content {
- width: 100%;
- margin: 30px 0;
- flex-direction: column;
- .img-box {
- width: 150px;
- height: 150px;
- background-color: #fff;
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- img {
- width: 100%;
- }
- }
- }
- .swiper-button-prev,
- .swiper-button-next {
- display: none;
- }
- }
+ .feature-section, .users-section {
+ padding-left: 20px;
+ padding-right: 20px;
}
}
}
diff --git a/src/variables.scss b/src/variables.scss
index 9d13a21..6eaf859 100644
--- a/src/variables.scss
+++ b/src/variables.scss
@@ -22,8 +22,3 @@ $barHeight: 200px;
$mobileWidth: 640px;
// 页面主体最大宽度
$contentWidth: 1280px;
-
-
-$navMiddle: $contentWidth;
-$navSmall: 1050px;
-$navMini: 968px;
\ No newline at end of file