123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- <template>
- <div class="fourth">
- <div class="main animate__animated">
- <img src="../../../assets/img/top4.png" />
- <label for="file" :class="{ camere: true, shakeSlow: dou === 2 }">
- <img src="../../../assets/img/camere.png" style="width: 100%" />
- </label>
- <img
- :class="{ doudong: dou === 1 }"
- src="../../../assets/img/bottom4.png"
- />
- </div>
- <input
- type="file"
- accept="image/*"
- style="display: none"
- id="file"
- capture="environment"
- @change="inputFile"
- />
- </div>
- </template>
- <script setup>
- import { ref, defineEmits } from "vue";
- // import { onMounted, reactive } from "vue";
- import { isAndroid, isIphone } from "../../../utils/isTerminal";
- /**
- * window.$originData.orginParames.title 页面标题
- * window.$originData.orginParames.parameters 固定参数值
- * window.$originData.urlParames url参数
- */
- const emits = defineEmits(["changePage"]);
- const dou = ref(0);
- window.addEventListener(
- "devicemotion",
- event => {
- if (dou.value < 1) return;
- var acceleration = event.accelerationIncludingGravity;
- let px = Math.pow(acceleration.x, 2) >= 100;
- let py = Math.pow(acceleration.y, 2) >= 100;
- let pz = Math.pow(acceleration.z, 2) >= 100;
- console.log("----------------start------------");
- if (px || py || pz) {
- // 手机摇晃
- toNext();
- }
- },
- false
- );
- function toNext() {
- dou.value = 2;
- let t = setTimeout(() => {
- clearTimeout(t);
- emits("changePage", "five");
- }, 2000);
- }
- function inputFile() {
- dou.value = 1;
- if (isAndroid || isIphone) return;
- let t = setTimeout(() => {
- clearTimeout(t);
- toNext();
- }, 2000);
- }
- </script>
- <style lang="scss" scoped>
- .fourth {
- position: relative;
- .main {
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
- img {
- width: 40%;
- margin: 0 auto;
- display: block;
- }
- .camere {
- display: block;
- width: 5em;
- margin: 4em auto;
- }
- }
- @keyframes shake-slow {
- 2% {
- transform: translate(6px, -2px) rotate(3.5deg);
- }
- 4% {
- transform: translate(5px, 8px) rotate(-0.5deg);
- }
- 6% {
- transform: translate(6px, -3px) rotate(-2.5deg);
- }
- 8% {
- transform: translate(4px, -2px) rotate(1.5deg);
- }
- 10% {
- transform: translate(-6px, 8px) rotate(-1.5deg);
- }
- 12% {
- transform: translate(-5px, 5px) rotate(1.5deg);
- }
- 14% {
- transform: translate(4px, 10px) rotate(3.5deg);
- }
- 16% {
- transform: translate(0px, 4px) rotate(1.5deg);
- }
- 18% {
- transform: translate(-1px, -6px) rotate(-0.5deg);
- }
- 20% {
- transform: translate(6px, -9px) rotate(2.5deg);
- }
- 22% {
- transform: translate(1px, -5px) rotate(-1.5deg);
- }
- 24% {
- transform: translate(-9px, 6px) rotate(-0.5deg);
- }
- 26% {
- transform: translate(8px, -2px) rotate(-1.5deg);
- }
- 28% {
- transform: translate(2px, -3px) rotate(-2.5deg);
- }
- 30% {
- transform: translate(9px, -7px) rotate(-0.5deg);
- }
- 32% {
- transform: translate(8px, -6px) rotate(-2.5deg);
- }
- 34% {
- transform: translate(-5px, 1px) rotate(3.5deg);
- }
- 36% {
- transform: translate(0px, -5px) rotate(2.5deg);
- }
- 38% {
- transform: translate(2px, 7px) rotate(-1.5deg);
- }
- 40% {
- transform: translate(6px, 3px) rotate(-1.5deg);
- }
- 42% {
- transform: translate(1px, -5px) rotate(-1.5deg);
- }
- 44% {
- transform: translate(10px, -4px) rotate(-0.5deg);
- }
- 46% {
- transform: translate(-2px, 2px) rotate(3.5deg);
- }
- 48% {
- transform: translate(3px, 4px) rotate(-0.5deg);
- }
- 50% {
- transform: translate(8px, 1px) rotate(-1.5deg);
- }
- 52% {
- transform: translate(7px, 4px) rotate(-1.5deg);
- }
- 54% {
- transform: translate(10px, 8px) rotate(-1.5deg);
- }
- 56% {
- transform: translate(-3px, 0px) rotate(-0.5deg);
- }
- 58% {
- transform: translate(0px, -1px) rotate(1.5deg);
- }
- 60% {
- transform: translate(6px, 9px) rotate(-1.5deg);
- }
- 62% {
- transform: translate(-9px, 8px) rotate(0.5deg);
- }
- 64% {
- transform: translate(-6px, 10px) rotate(0.5deg);
- }
- 66% {
- transform: translate(7px, 0px) rotate(0.5deg);
- }
- 68% {
- transform: translate(3px, 8px) rotate(-0.5deg);
- }
- 70% {
- transform: translate(-2px, -9px) rotate(1.5deg);
- }
- 72% {
- transform: translate(-6px, 2px) rotate(1.5deg);
- }
- 74% {
- transform: translate(-2px, 10px) rotate(-1.5deg);
- }
- 76% {
- transform: translate(2px, 8px) rotate(2.5deg);
- }
- 78% {
- transform: translate(6px, -2px) rotate(-0.5deg);
- }
- 80% {
- transform: translate(6px, 8px) rotate(0.5deg);
- }
- 82% {
- transform: translate(10px, 9px) rotate(3.5deg);
- }
- 84% {
- transform: translate(-3px, -1px) rotate(3.5deg);
- }
- 86% {
- transform: translate(1px, 8px) rotate(-2.5deg);
- }
- 88% {
- transform: translate(-5px, -9px) rotate(2.5deg);
- }
- 90% {
- transform: translate(2px, 8px) rotate(0.5deg);
- }
- 92% {
- transform: translate(0px, -1px) rotate(1.5deg);
- }
- 94% {
- transform: translate(-8px, -1px) rotate(0.5deg);
- }
- 96% {
- transform: translate(-3px, 8px) rotate(-1.5deg);
- }
- 98% {
- transform: translate(4px, 8px) rotate(0.5deg);
- }
- 0%,
- 100% {
- transform: translate(0, 0) rotate(0);
- }
- }
- @keyframes buzz-out {
- 0% {
- transform: translateX(3px) rotate(2deg);
- }
- 10% {
- transform: translateX(-3px) rotate(-2deg);
- }
- 20% {
- transform: translateX(3px) rotate(2deg);
- }
- 30% {
- transform: translateX(-3px) rotate(-2deg);
- }
- 40% {
- transform: translateX(3px) rotate(2deg);
- }
- 50% {
- transform: translateX(-3px) rotate(-2deg);
- }
- 60% {
- transform: translateX(3px) rotate(2deg);
- }
- 70% {
- transform: translateX(-3px) rotate(-2deg);
- }
- 80% {
- transform: translateX(3px) rotate(2deg);
- }
- 90% {
- transform: translateX(-3px) rotate(-2deg);
- }
- 100% {
- transform: translateX(3px) rotate(2deg);
- }
- }
- .doudong {
- animation: buzz-out 2s 1 ease-in-out;
- }
- .shakeSlow {
- animation: shake-slow 2s 1 ease-in-out;
- }
- }
- </style>
|