123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- <template>
- <div class="tools" :style="{ transform: `scale(${scaleVal})` }">
- <img class="bg_bottom" src="@/assets/images/bg_tools/bottom.png" alt="" />
- <img class="bg_main" src="@/assets/images/bg_tools/main.png" alt="" />
- <img class="bg_line1" src="@/assets/images/bg_tools/line1.png" alt="" />
- <img class="bg_line2" src="@/assets/images/bg_tools/line2.png" alt="" />
- <img class="bg_item1" src="@/assets/images/bg_tools/item1.png" alt="" />
- <img class="bg_item2" src="@/assets/images/bg_tools/item2.png" alt="" />
- <img class="bg_item3" src="@/assets/images/bg_tools/item3.png" alt="" />
- <img class="bg_item4" src="@/assets/images/bg_tools/item4.png" alt="" />
- <img class="bg_gear" src="@/assets/images/bg_tools/bg_gear.png" alt="" />
- <img class="bg_wrench" src="@/assets/images/bg_tools/bg_wrench.png" alt="" />
- </div>
- </template>
- <script setup>
- import { ref, watch } from 'vue'
- import { useWindowSize } from '@vueuse/core'
- const { width } = useWindowSize()
- const scaleVal = ref(1)
- watch(
- width,
- (value) => {
- scaleVal.value = value / 1900 < 0.32 ? 0.32 : value / 1900
- },
- {
- immediate: true
- }
- )
- </script>
- <style lang="scss" scoped>
- .tools {
- width: 1124px;
- height: 1080px;
- position: relative;
- .bg_123 {
- width: 100%;
- height: 100%;
- }
- .bg_main {
- position: absolute;
- left: 264px;
- top: 160px;
- animation: slide-top-down 12s cubic-bezier(0.25, 0.46, 0.45, 0.94) alternate infinite;
- filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_bottom {
- position: absolute;
- left: 189px;
- top: 366px;
- animation: scale_bottom 8s linear infinite;
- // animation: heartBeat;
- // animation-duration: 6s;
- // animation-iteration-count: infinite;
- }
- .bg_line1 {
- position: absolute;
- left: 210px;
- top: 320px;
- animation: slide-top-down2 4s cubic-bezier(0.25, 0.46, 0.45, 0.94) -4s alternate infinite;
- filter: drop-shadow(4px -4px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_line2 {
- position: absolute;
- left: 530px;
- top: 243px;
- animation: slide-top-down3 4s cubic-bezier(0.25, 0.46, 0.45, 0.94) -4s alternate infinite;
- filter: drop-shadow(4px -4px 12px rgba(232, 233, 235, 0.6));
- }
- .bg_item1 {
- position: absolute;
- left: 642px;
- top: 580px;
- animation: bounceInDown;
- animation-duration: 2s;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- animation-delay: -0.5s;
- filter: drop-shadow(4px -4px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_item2 {
- position: absolute;
- left: 840px;
- top: 80px;
- animation: bounceInDown;
- animation-duration: 2s;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- animation-delay: -1s;
- filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_item3 {
- position: absolute;
- left: 538px;
- top: 752px;
- animation: bounceInDown;
- animation-duration: 2s;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- animation-delay: -1.5s;
- filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_item4 {
- position: absolute;
- left: 251px;
- top: 124px;
- animation: bounceInDown;
- animation-duration: 2s;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- animation-delay: -2s;
- filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_gear {
- width: 28%;
- height: 28%;
- position: absolute;
- right: 80px;
- bottom: 280px;
- animation: swing;
- animation-duration: 12s;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- transform-origin: 45.5% 44%;
- filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6));
- }
- .bg_wrench {
- width: 48%;
- height: 48%;
- position: absolute;
- left: 24px;
- bottom: 100px;
- animation: swing;
- animation-duration: 12s;
- animation-iteration-count: infinite;
- animation-direction: alternate;
- filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6));
- }
- }
- @keyframes slide-top-down {
- 0% {
- transform: translateY(0px);
- }
- 50% {
- transform: translateY(100px);
- }
- 100% {
- transform: translateY(0px);
- }
- }
- @keyframes slide-top-down2 {
- 0% {
- transform: translateY(0px);
- }
- 50% {
- transform: translateY(80px);
- }
- 100% {
- transform: translateY(0px);
- }
- }
- @keyframes slide-top-down3 {
- 0% {
- transform: translateY(0px);
- }
- 50% {
- transform: translateY(120px);
- }
- 100% {
- transform: translateY(0px);
- }
- }
- @keyframes scale_bottom {
- 0% {
- transform: scale(1);
- }
- 14% {
- transform: scale(0.85);
- }
- 20% {
- transform: scale(0.95);
- }
- 28% {
- transform: scale(1.08);
- }
- 32% {
- transform: scale(0.95);
- }
- 36% {
- transform: scale(1.05);
- }
- 40% {
- transform: scale(1.1);
- }
- 45% {
- transform: scale(1.15);
- }
- 50% {
- transform: scale(1.2);
- }
- 55% {
- transform: scale(1.15);
- }
- 60% {
- transform: scale(1.1);
- }
- 65% {
- transform: scale(1);
- }
- 70% {
- transform: scale(1.05);
- }
- 80% {
- transform: scale(0.9);
- }
- 90% {
- transform: scale(0.8);
- }
- 100% {
- transform: scale(1);
- }
- }
- </style>
|