index.module.scss 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. .banner {
  2. height: 100vh;
  3. overflow: hidden;
  4. :global {
  5. .fullscreen-slide {
  6. height: 100vh !important;
  7. display: flex !important;
  8. align-items: center;
  9. justify-content: center;
  10. background-size: cover;
  11. background-position: center;
  12. .slide-content {
  13. width: 100%;
  14. height: 100%;
  15. position: relative;
  16. background-size: 100% 100% !important;
  17. text-align: center;
  18. color: white;
  19. text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
  20. .iconList {
  21. position: absolute;
  22. top: 10%;
  23. right: 3%;
  24. width: 60px;
  25. height: 245px;
  26. display: flex;
  27. align-items: center;
  28. flex-direction: column;
  29. opacity: 0;
  30. transition: all 0.6s ease-in-out;
  31. .icon {
  32. width: 100%;
  33. height: 50%;
  34. cursor: pointer;
  35. & > img {
  36. width: 66px;
  37. height: 68px;
  38. object-fit: contain;
  39. }
  40. }
  41. }
  42. & > img {
  43. width: 100%;
  44. position: absolute;
  45. top: 50%;
  46. left: 50%;
  47. transform: translate(-50%, -50%);
  48. object-fit: contain;
  49. }
  50. .logo {
  51. width: 8%;
  52. top: 5%;
  53. left: 5%;
  54. object-fit: contain;
  55. }
  56. // 图1
  57. .title1 {
  58. width: 30%;
  59. transform: translate(-110%, -60%);
  60. opacity: 0.3;
  61. transition: all 1s ease-in-out;
  62. }
  63. .item1 {
  64. width: 35%;
  65. opacity: 0;
  66. transition: all 0.6s ease-in-out 0.4s;
  67. transform: translate(25%, -170px);
  68. object-fit: cover;
  69. &:hover {
  70. transition: none;
  71. transform: translate(25%, -170px) perspective(500px)
  72. translate3d(
  73. calc((var(--mouse-x) * 0.03) * 1px),
  74. calc((var(--mouse-y) * 0.03) * 1px),
  75. 0
  76. );
  77. }
  78. }
  79. // 图2
  80. .title2 {
  81. width: 24%;
  82. opacity: 0.3;
  83. transform: translate(45%, -95%);
  84. transition: all 1.2s ease-in-out;
  85. }
  86. .item2Bg {
  87. width: 40%;
  88. opacity: 0;
  89. transform: translate(-90%, -50%);
  90. transition: all 0.4s ease-in-out;
  91. }
  92. .item2 {
  93. width: 35%;
  94. opacity: 0;
  95. transform: translate(-114%, -38%);
  96. transition: all 1s ease-in-out 0.4s;
  97. &:hover {
  98. transition: none;
  99. transform: translate(-114%, -48%) perspective(500px)
  100. translate3d(
  101. calc((var(--mouse-x) * 0.03) * 1px),
  102. calc((var(--mouse-y) * 0.03) * 1px),
  103. 0
  104. );
  105. }
  106. }
  107. // 图3
  108. .item3 {
  109. width: 26%;
  110. opacity: 0;
  111. transform: translate(10%, -40%);
  112. transition: all 1s ease-in-out;
  113. &:hover {
  114. transition: none;
  115. transform: translate(10%, -50%) perspective(500px)
  116. translate3d(
  117. calc((var(--mouse-x) * 0.03) * 1px),
  118. calc((var(--mouse-y) * 0.03) * 1px),
  119. 0
  120. );
  121. }
  122. }
  123. .item4 {
  124. width: 26%;
  125. opacity: 0;
  126. transform: translate(10%, -40%);
  127. transition: all 1s ease-in-out;
  128. &:hover {
  129. transition: none;
  130. transform: translate(10%, -50%) perspective(500px)
  131. translate3d(
  132. calc((var(--mouse-x) * 0.03) * 1px),
  133. calc((var(--mouse-y) * 0.03) * 1px),
  134. 0
  135. );
  136. }
  137. }
  138. }
  139. // 动画效果
  140. .animate {
  141. .iconList {
  142. top: 5%;
  143. height: 195px;
  144. opacity: 1;
  145. }
  146. .title1 {
  147. opacity: 1;
  148. transform: translate(-110%, -50%);
  149. }
  150. .item1 {
  151. opacity: 1;
  152. transform: translate(25%, -170px);
  153. transition: all 0.6s ease-in-out 0.4s;
  154. }
  155. .title2 {
  156. opacity: 1;
  157. transform: translate(45%, -50%);
  158. }
  159. .item2Bg {
  160. opacity: 1;
  161. }
  162. .item2 {
  163. opacity: 1;
  164. transform: translate(-114%, -48%);
  165. transition: all 0.6s ease-in-out 0.4s;
  166. }
  167. .item3 {
  168. opacity: 1;
  169. transform: translate(10%, -50%);
  170. }
  171. .item4 {
  172. opacity: 1;
  173. transform: translate(10%, -50%);
  174. }
  175. }
  176. }
  177. /* 垂直dots样式 */
  178. .vertical-dots {
  179. position: fixed;
  180. left: 30px;
  181. top: 50%;
  182. height: 580px;
  183. transform: translateY(-50%);
  184. display: flex !important;
  185. flex-direction: column;
  186. align-items: center;
  187. background: url('../image/scroll2.png') no-repeat center;
  188. background-size: 2px 100%;
  189. width: auto;
  190. gap: 60px;
  191. & li {
  192. margin: 0 !important;
  193. width: 26px;
  194. height: 26px;
  195. }
  196. & li:nth-child(1) {
  197. padding-top: 93px;
  198. }
  199. & li:nth-child(2) {
  200. padding-top: 59px;
  201. }
  202. & li:nth-child(3) {
  203. padding-top: 59px;
  204. }
  205. & li:nth-child(4) {
  206. padding-top: 62px;
  207. }
  208. & .slick-active {
  209. & button {
  210. background: url('../image/scroll3.png') no-repeat center center;
  211. background-size: cover;
  212. }
  213. }
  214. & li button {
  215. width: 26px;
  216. height: 26px;
  217. background: url('../image/scroll1.png') no-repeat center center;
  218. background-size: cover;
  219. font-size: 12px !important;
  220. color: transparent !important;
  221. border: none;
  222. opacity: 1 !important;
  223. }
  224. & li button::before {
  225. width: 26px;
  226. height: 26px;
  227. font-size: 12px !important;
  228. color: transparent !important;
  229. border: none;
  230. opacity: 0 !important;
  231. }
  232. }
  233. @media screen and (max-width: 768px) {
  234. .fullscreen-slide {
  235. .slide-content {
  236. .iconList {
  237. height: 200px;
  238. .icon {
  239. display: flex;
  240. align-items: center;
  241. flex-direction: column;
  242. justify-content: center;
  243. font-size: 13px;
  244. gap: 5px;
  245. & > img {
  246. width: 46px;
  247. height: 48px;
  248. }
  249. }
  250. }
  251. .logo {
  252. width: 30%;
  253. top: 5%;
  254. left: 17%;
  255. object-fit: contain;
  256. }
  257. // 图1
  258. .title1 {
  259. width: 70%;
  260. transform: translate(-50%, -155%);
  261. }
  262. .item1 {
  263. width: 95%;
  264. transform: translate(-50%, 20px);
  265. &:hover {
  266. transition: none;
  267. transform: translate(-50%, 0);
  268. }
  269. }
  270. // 图2
  271. .title2 {
  272. width: 70%;
  273. transform: translate(-50%, -155%);
  274. }
  275. .item2Bg {
  276. width: 100%;
  277. transform: translate(-50%, -40px);
  278. }
  279. .item2 {
  280. width: 100%;
  281. transform: translate(-50%, 200px);
  282. &:hover {
  283. transition: none;
  284. transform: translate(-50%, 170px);
  285. }
  286. }
  287. // 图3
  288. .item3 {
  289. width: 65%;
  290. transform: translate(-50%, -20px);
  291. &:hover {
  292. transition: none;
  293. transform: translate(-30%, 0px);
  294. }
  295. }
  296. .item4 {
  297. width: 80%;
  298. transform: translate(-50%, 20px);
  299. &:hover {
  300. transition: none;
  301. transform: translate(-50%, 0px);
  302. }
  303. }
  304. }
  305. // 动画效果
  306. .animate {
  307. .iconList {
  308. top: 5%;
  309. height: 160px;
  310. opacity: 1;
  311. }
  312. .title1 {
  313. opacity: 1;
  314. transform: translate(-50%, -135%);
  315. }
  316. .item1 {
  317. opacity: 1;
  318. transform: translate(-50%, 0);
  319. }
  320. .title2 {
  321. transform: translate(-50%, -135%);
  322. }
  323. .item2Bg {
  324. opacity: 1;
  325. }
  326. .item2 {
  327. transform: translate(-50%, 170px);
  328. }
  329. .item3 {
  330. transform: translate(-30%, 0px);
  331. }
  332. .item4 {
  333. transform: translate(-50%, 0px);
  334. }
  335. }
  336. }
  337. .vertical-dots {
  338. left: 15px;
  339. height: 400px;
  340. gap: 40px;
  341. & li {
  342. margin: 0 !important;
  343. width: 16px;
  344. height: 16px;
  345. }
  346. & li:nth-child(1) {
  347. padding-top: 64px;
  348. }
  349. & li:nth-child(2) {
  350. padding-top: 42px;
  351. }
  352. & li:nth-child(3) {
  353. padding-top: 42px;
  354. }
  355. & li:nth-child(4) {
  356. padding-top: 47px;
  357. }
  358. & li button {
  359. width: 16px;
  360. height: 16px;
  361. }
  362. & li button::before {
  363. width: 16px;
  364. height: 16px;
  365. }
  366. }
  367. }
  368. }
  369. }