long
2021-10-11 5eac3437002b58f9d1f387c3ca8f599a548f681d
提交 | 用户 | age
2a61f6 1 <template>
L 2   <div class="wscn-http404-container">
3     <div class="wscn-http404">
4       <div class="pic-404">
5         <img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
6         <img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
7         <img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
8         <img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
9       </div>
10       <div class="bullshit">
11         <div class="bullshit__oops">OOPS!</div>
12         <div class="bullshit__info">All rights reserved
13           <a style="color:#20a0ff" href="https://wallstreetcn.com" target="_blank">wallstreetcn</a>
14         </div>
15         <div class="bullshit__headline">{{ message }}</div>
16         <div class="bullshit__info">Please check that the URL you entered is correct, or click the button below to return to the homepage.</div>
17         <a href="" class="bullshit__return-home">Back to home</a>
18       </div>
19     </div>
20   </div>
21 </template>
22
23 <script>
24
25 export default {
26   name: 'Page404',
27   computed: {
28     message() {
29       return 'The webmaster said that you can not enter this page...'
30     }
31   }
32 }
33 </script>
34
35 <style lang="scss" scoped>
36 .wscn-http404-container{
37   transform: translate(-50%,-50%);
38   position: absolute;
39   top: 40%;
40   left: 50%;
41 }
42 .wscn-http404 {
43   position: relative;
44   width: 1200px;
45   padding: 0 50px;
46   overflow: hidden;
47   .pic-404 {
48     position: relative;
49     float: left;
50     width: 600px;
51     overflow: hidden;
52     &__parent {
53       width: 100%;
54     }
55     &__child {
56       position: absolute;
57       &.left {
58         width: 80px;
59         top: 17px;
60         left: 220px;
61         opacity: 0;
62         animation-name: cloudLeft;
63         animation-duration: 2s;
64         animation-timing-function: linear;
65         animation-fill-mode: forwards;
66         animation-delay: 1s;
67       }
68       &.mid {
69         width: 46px;
70         top: 10px;
71         left: 420px;
72         opacity: 0;
73         animation-name: cloudMid;
74         animation-duration: 2s;
75         animation-timing-function: linear;
76         animation-fill-mode: forwards;
77         animation-delay: 1.2s;
78       }
79       &.right {
80         width: 62px;
81         top: 100px;
82         left: 500px;
83         opacity: 0;
84         animation-name: cloudRight;
85         animation-duration: 2s;
86         animation-timing-function: linear;
87         animation-fill-mode: forwards;
88         animation-delay: 1s;
89       }
90       @keyframes cloudLeft {
91         0% {
92           top: 17px;
93           left: 220px;
94           opacity: 0;
95         }
96         20% {
97           top: 33px;
98           left: 188px;
99           opacity: 1;
100         }
101         80% {
102           top: 81px;
103           left: 92px;
104           opacity: 1;
105         }
106         100% {
107           top: 97px;
108           left: 60px;
109           opacity: 0;
110         }
111       }
112       @keyframes cloudMid {
113         0% {
114           top: 10px;
115           left: 420px;
116           opacity: 0;
117         }
118         20% {
119           top: 40px;
120           left: 360px;
121           opacity: 1;
122         }
123         70% {
124           top: 130px;
125           left: 180px;
126           opacity: 1;
127         }
128         100% {
129           top: 160px;
130           left: 120px;
131           opacity: 0;
132         }
133       }
134       @keyframes cloudRight {
135         0% {
136           top: 100px;
137           left: 500px;
138           opacity: 0;
139         }
140         20% {
141           top: 120px;
142           left: 460px;
143           opacity: 1;
144         }
145         80% {
146           top: 180px;
147           left: 340px;
148           opacity: 1;
149         }
150         100% {
151           top: 200px;
152           left: 300px;
153           opacity: 0;
154         }
155       }
156     }
157   }
158   .bullshit {
159     position: relative;
160     float: left;
161     width: 300px;
162     padding: 30px 0;
163     overflow: hidden;
164     &__oops {
165       font-size: 32px;
166       font-weight: bold;
167       line-height: 40px;
168       color: #1482f0;
169       opacity: 0;
170       margin-bottom: 20px;
171       animation-name: slideUp;
172       animation-duration: 0.5s;
173       animation-fill-mode: forwards;
174     }
175     &__headline {
176       font-size: 20px;
177       line-height: 24px;
178       color: #222;
179       font-weight: bold;
180       opacity: 0;
181       margin-bottom: 10px;
182       animation-name: slideUp;
183       animation-duration: 0.5s;
184       animation-delay: 0.1s;
185       animation-fill-mode: forwards;
186     }
187     &__info {
188       font-size: 13px;
189       line-height: 21px;
190       color: grey;
191       opacity: 0;
192       margin-bottom: 30px;
193       animation-name: slideUp;
194       animation-duration: 0.5s;
195       animation-delay: 0.2s;
196       animation-fill-mode: forwards;
197     }
198     &__return-home {
199       display: block;
200       float: left;
201       width: 110px;
202       height: 36px;
203       background: #1482f0;
204       border-radius: 100px;
205       text-align: center;
206       color: #ffffff;
207       opacity: 0;
208       font-size: 14px;
209       line-height: 36px;
210       cursor: pointer;
211       animation-name: slideUp;
212       animation-duration: 0.5s;
213       animation-delay: 0.3s;
214       animation-fill-mode: forwards;
215     }
216     @keyframes slideUp {
217       0% {
218         transform: translateY(60px);
219         opacity: 0;
220       }
221       100% {
222         transform: translateY(0);
223         opacity: 1;
224       }
225     }
226   }
227 }
228 </style>