diff --git a/src/AppRouter.tsx b/src/AppRouter.tsx index 7520282..a6cb2d0 100644 --- a/src/AppRouter.tsx +++ b/src/AppRouter.tsx @@ -8,10 +8,6 @@ import Layout from "@/views/Layout" import Auth from "@/ui/Auth" import routes, { Loading } from "./route" -function NormalLoading() { - return -} - function LoadWrapper(props: any) { if (props.isLazy) { const LoadingComp=props.loading?props.loading: ()=> //NormalLoading; diff --git a/src/assets/style/_font.scss b/src/assets/style/_font.scss new file mode 100644 index 0000000..ea6d3d7 --- /dev/null +++ b/src/assets/style/_font.scss @@ -0,0 +1,112 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wmhduz8A.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wkxduz8A.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wmxduz8A.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wlBduz8A.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wmBduz8A.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wmRduz8A.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 200; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3i94_wlxdu.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format('woff2'); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: url(https://fonts.gstatic.com/s/sourcesanspro/v14/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/src/assets/style/common.scss b/src/assets/style/common.scss index 1ed1e7d..5a0060e 100644 --- a/src/assets/style/common.scss +++ b/src/assets/style/common.scss @@ -1,4 +1,5 @@ @import "./reset.scss"; +@import "./_font.scss"; body, button, diff --git a/src/components/Loading/Bubbles.module.scss b/src/components/Loading/Bubbles.module.scss new file mode 100644 index 0000000..262436c --- /dev/null +++ b/src/components/Loading/Bubbles.module.scss @@ -0,0 +1,120 @@ + + .bg-bubbles { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + + z-index: 1; + + li { + position: absolute; + list-style: none; + display: block; + width: 40px; + height: 40px; + background-color: rgba(255, 255, 255, 0.15); + bottom: -160px; + + -webkit-animation: square 25s infinite; + animation: square 25s infinite; + + -webkit-transition-timing-function: linear; + transition-timing-function: linear; + + &:nth-child(1) { + left: 10%; + } + + &:nth-child(2) { + left: 20%; + + width: 80px; + height: 80px; + + animation-delay: 2s; + animation-duration: 17s; + } + + &:nth-child(3) { + left: 25%; + animation-delay: 4s; + } + + &:nth-child(4) { + left: 40%; + width: 60px; + height: 60px; + + animation-duration: 22s; + + background-color: rgba(255, 255, 255, 0.25); + } + + &:nth-child(5) { + left: 70%; + } + + &:nth-child(6) { + left: 80%; + width: 120px; + height: 120px; + + animation-delay: 3s; + background-color: rgba(255, 255, 255, 0.2); + } + + &:nth-child(7) { + left: 32%; + width: 160px; + height: 160px; + + animation-delay: 7s; + } + + &:nth-child(8) { + left: 55%; + width: 20px; + height: 20px; + + animation-delay: 15s; + animation-duration: 40s; + } + + &:nth-child(9) { + left: 25%; + width: 10px; + height: 10px; + + animation-delay: 2s; + animation-duration: 40s; + background-color: rgba(255, 255, 255, 0.3); + } + + &:nth-child(10) { + left: 90%; + width: 160px; + height: 160px; + + animation-delay: 11s; + } + } + } + + @-webkit-keyframes square { + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(-700px) rotate(600deg); + } + } + @keyframes square { + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(-700px) rotate(600deg); + } + } diff --git a/src/components/Loading/Bubbles.tsx b/src/components/Loading/Bubbles.tsx new file mode 100644 index 0000000..32a69ce --- /dev/null +++ b/src/components/Loading/Bubbles.tsx @@ -0,0 +1,18 @@ +import React from "react" +import style from "./Bubbles.module.scss" +export default function () { + return ( + + ) +} diff --git a/src/components/Loading/Rainbow.module.scss b/src/components/Loading/Rainbow.module.scss new file mode 100644 index 0000000..9c60b5a --- /dev/null +++ b/src/components/Loading/Rainbow.module.scss @@ -0,0 +1,36 @@ +.ring { + position: relative; + width: 45px; + height: 45px; + margin: 0 auto; + border: 4px solid #4b9cdb; + border-radius: 100%; +} + +.ball { + position: absolute; + top: -11px; + left: 0; + width: 16px; + height: 16px; + border-radius: 100%; + background: #4282b3; +} + +.loading .holder { + position: absolute; + width: 12px; + height: 45px; + left: 17px; + top: 0px; + animation: loadingE 1.3s linear infinite; +} + +@keyframes loadingE { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/src/components/Loading/Rainbow.tsx b/src/components/Loading/Rainbow.tsx new file mode 100644 index 0000000..d6e718b --- /dev/null +++ b/src/components/Loading/Rainbow.tsx @@ -0,0 +1,14 @@ +import React from "react" +import style from "./Rainbow.module.scss" + +console.log(style) + +export default () => ( +
+
+
+
+
+
+
+) diff --git a/src/route.tsx b/src/route.tsx index 84f92f7..cbec56c 100644 --- a/src/route.tsx +++ b/src/route.tsx @@ -1,10 +1,7 @@ import Page404 from "@/views/Auth/Page404" +import Login from "@/views/Login" import React, { lazy } from "react" -function Test() { - return
TExtas
-} - export const Loading = (props: any) =>
Lodeing.22..
let delay = @@ -48,6 +45,7 @@ export default [ { path: "/home", component: lazy(() => import("@/views/Home")), + exact: true, loading: () => , meta: { auth: false, @@ -61,7 +59,7 @@ export default [ }, { path: "/login", - component: lazy(() => import("@/views/Login")), + component: Login //lazy(() => import("@/views/Login")), }, { path: "*", diff --git a/src/views/About/index.tsx b/src/views/About/index.tsx index 23c9e93..6508fee 100644 --- a/src/views/About/index.tsx +++ b/src/views/About/index.tsx @@ -11,7 +11,7 @@ export default function (props: any) { console.log(props) return (
-
About
+
AboutAAAasda
22{props.children}
diff --git a/src/views/Auth/Page404.tsx b/src/views/Auth/Page404.tsx index bf4c59f..782c96b 100644 --- a/src/views/Auth/Page404.tsx +++ b/src/views/Auth/Page404.tsx @@ -1,10 +1,10 @@ import React from "react" import { NavLink } from "react-router-dom" -export default function () { +export default function Page404() { return (
- 404 + 阿松大asddadsa
) } diff --git a/src/views/Home/Header.tsx b/src/views/Home/Header.tsx index 2c187ed..ec43097 100644 --- a/src/views/Home/Header.tsx +++ b/src/views/Home/Header.tsx @@ -1,7 +1,7 @@ import React, { useState } from "react" export default () => { - const title = "TEST" + const title = "TESAaT" const [leftMenuList, setLeftMenuList] = useState([ { title: "首页", path: "/" }, { title: "角色", children: [{ title: "月儿", path: "/about" }] }, diff --git a/src/views/Home/index.tsx b/src/views/Home/index.tsx index c3b7f8c..ae17f5f 100644 --- a/src/views/Home/index.tsx +++ b/src/views/Home/index.tsx @@ -30,7 +30,7 @@ function Home(props: HomeProps) {
addOne(e)}> - +
{todo.map((v: ITodo) => { return ( diff --git a/src/views/Login/index.module.scss b/src/views/Login/index.module.scss index b4908d6..0cf0939 100644 --- a/src/views/Login/index.module.scss +++ b/src/views/Login/index.module.scss @@ -1,3 +1,134 @@ -.login.page{ - background-color: red; -} \ No newline at end of file +@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300); + +$color: #53e3a6; +.login.page { + font-family: "Source Sans Pro", sans-serif; + color: white; + font-weight: 300; + + ::-webkit-input-placeholder { + /* WebKit browsers */ + font-family: "Source Sans Pro", sans-serif; + color: white; + font-weight: 300; + } + :-moz-placeholder { + /* Mozilla Firefox 4 to 18 */ + font-family: "Source Sans Pro", sans-serif; + color: white; + opacity: 1; + font-weight: 300; + } + ::-moz-placeholder { + /* Mozilla Firefox 19+ */ + font-family: "Source Sans Pro", sans-serif; + color: white; + opacity: 1; + font-weight: 300; + } + :-ms-input-placeholder { + /* Internet Explorer 10+ */ + font-family: "Source Sans Pro", sans-serif; + color: white; + font-weight: 300; + } + .wrapper { + background: #50a3a2; + background: -webkit-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); + background: -moz-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); + background: -o-linear-gradient(top left, #50a3a2 0%, #53e3a6 100%); + background: linear-gradient(to bottom right, #50a3a2 0%, #53e3a6 100%); + + position: absolute; + top: 50%; + left: 0; + width: 100%; + height: 400px; + margin-top: -200px; + overflow: hidden; + + &.form-success { + form { + opacity: 0; + pointer-events: none; + } + .container { + h1 { + transform: translateY(85px); + } + } + } + } + + .container { + max-width: 600px; + margin: 0 auto; + padding: 80px 0; + height: 400px; + text-align: center; + + h1 { + font-size: 40px; + transition-duration: 1s; + transition-timing-function: ease-in-put; + font-weight: 200; + } + } + + form { + padding: 20px 0; + position: relative; + z-index: 2; + transition: opacity 0.5s linear; + + input { + display: block; + appearance: none; + outline: 0; + border: 1px solid rgba(255, 255, 255, 0.4); + background-color: rgba(255, 255, 255, 0.2); + width: 250px; + + border-radius: 3px; + padding: 10px 15px; + margin: 0 auto 10px auto; + display: block; + text-align: center; + font-size: 18px; + + color: white; + + transition-duration: 0.25s; + font-weight: 300; + + &:hover { + background-color: rgba(255, 255, 255, 0.4); + } + + &:focus { + background-color: white; + width: 300px; + + color: $color; + } + } + + button { + appearance: none; + outline: 0; + background-color: white; + border: 0; + padding: 10px 15px; + color: $color; + border-radius: 3px; + width: 250px; + cursor: pointer; + font-size: 18px; + transition-duration: 0.25s; + + &:hover { + background-color: rgb(245, 247, 249); + } + } + } +} diff --git a/src/views/Login/index.tsx b/src/views/Login/index.tsx index 3f3eb93..8bbb9b9 100644 --- a/src/views/Login/index.tsx +++ b/src/views/Login/index.tsx @@ -2,16 +2,36 @@ import React from "react" import cn from "classnames" import style from "./index.module.scss" import { useLocation, Route, Switch } from "react-router-dom" +import { useState } from "react" +import Bubbles from "@/components/Loading/Bubbles" -function Test() { - return
test
-} +export default function Login(props: any) { + const [isSuccess, setIsSuccess] = useState(false) + const [WelcomeText, setWelcomeText] = useState("青铜时代2021") + + function clickLogin(event: any) { + event.preventDefault() + setIsSuccess(true) + setTimeout(() => { + setIsSuccess(false) + }, 2000) + } -export default function (props: any) { return (
-
Login
-
22
+
+
+

{WelcomeText}

+
+ + + +
+
+ +
) }