BambooBookScene2.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <script setup>
  2. import { ref, onMounted } from 'vue'
  3. import useSizeAdapt from "@/useFunctions/useSizeAdapt"
  4. // 竹子的三个部分图片
  5. import ganImg from '@/assets/images/gan.png'
  6. import zhiImg from '@/assets/images/zhi.png'
  7. import yeImg from '@/assets/images/ye.png'
  8. // 第二屏
  9. // 杆-1 枝-2 叶-3
  10. const curPart = ref(1)
  11. const emit = defineEmits(['next', 'close'])
  12. // 叶子图片适应
  13. const x = window.innerWidth / window.innerHeight
  14. onMounted(() => {
  15. console.log('比例', x)
  16. })
  17. const {
  18. windowSizeInCssForRef,
  19. windowSizeWhenDesignForRef,
  20. } = useSizeAdapt()
  21. </script>
  22. <template>
  23. <div class="screen-box">
  24. <transition name="fade-in-out">
  25. <div class="screen-box2">
  26. <div class="title-disc">
  27. 当前展示内容
  28. </div>
  29. <img
  30. class="detail-img"
  31. :style="{width: x > 0.5 ? '100%' :''}"
  32. :src="curPart == 1 ? ganImg : curPart == 2 ? zhiImg : yeImg"
  33. alt=""
  34. >
  35. <!-- 竹子部分选择 -->
  36. <div class="options-box">
  37. <div
  38. :class="{ 'active': curPart == 1 }"
  39. @click="() => { curPart = 1 }"
  40. >
  41. </div>
  42. <div
  43. :class="{ 'active': curPart == 2 }"
  44. @click="() => { curPart = 2 }"
  45. >
  46. </div>
  47. <div
  48. :class="{ 'active': curPart == 3 }"
  49. @click="() => { curPart = 3 }"
  50. >
  51. </div>
  52. </div>
  53. <div
  54. class="index3-income"
  55. @click="emit('next',curPart)"
  56. >
  57. 查看画法
  58. </div>
  59. <div class="system-btns">
  60. <BtnBack
  61. :color="`green`"
  62. @click="emit('close')"
  63. />
  64. </div>
  65. </div>
  66. </transition>
  67. </div>
  68. </template>
  69. <style lang='less' scoped>
  70. .screen-box {
  71. width: 100%;
  72. height: 100%;
  73. position: relative;
  74. .screen-box2 {
  75. width: 100%;
  76. height: 100%;
  77. display: flex;
  78. flex-direction: column;
  79. justify-content: center;
  80. align-items: center;
  81. background-image: url(@/assets/images/screen-box2.png);
  82. background-size: 100% 100%;
  83. // background: linear-gradient(180deg, #233E16 -100%, rgba(156, 171, 148, 0.5) 100%);
  84. // backdrop-filter: blur(15px);
  85. // padding-top: calc(71 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  86. .title-disc {
  87. width: 100%;
  88. color: #ffffffa6;
  89. text-align: center;
  90. // position: absolute;
  91. font-size: calc(20 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  92. line-height: calc(23 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  93. font-family: 'KaiTi';
  94. // top: calc(50 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  95. }
  96. .detail-img {
  97. width: calc(428 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  98. height: calc(506 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  99. object-fit: cover;
  100. object-position: left;
  101. // @media screen and (max-width: 350px) {
  102. // width: 100%;
  103. // }
  104. }
  105. .options-box {
  106. width: 100%;
  107. display: flex;
  108. justify-content: space-evenly;
  109. align-items: center;
  110. color: #474747;
  111. font-size: calc(28 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  112. line-height: calc(32 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  113. font-family: 'KingHwa_OldSong';
  114. margin: calc(58 / v-bind(windowSizeWhenDesignForRef)*v-bind(windowSizeInCssForRef)) auto;
  115. >.active {
  116. width: calc(55 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  117. height: calc(55 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  118. background-image: url(@/assets/images/btn_active.png);
  119. // padding: calc(8 / v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeInCssForRef));
  120. background-size: 100% 100%;
  121. transform: scale(1.2);
  122. color: #ffffff;
  123. display: flex;
  124. justify-content: center;
  125. align-items: center;
  126. text-shadow: 2px 4px 4px rgba(71,100,70,0.5);
  127. font-size: calc(36 / v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeWhenDesignForRef));
  128. font-family: calc(42 / v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeWhenDesignForRef));
  129. }
  130. }
  131. .index3-income {
  132. width: calc(132 /v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeInCssForRef));
  133. height: calc(48 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  134. display: flex;
  135. justify-content: center;
  136. align-items: center;
  137. font-size: calc(20 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  138. line-height: calc(23 /v-bind(windowSizeWhenDesignForRef)* v-bind(windowSizeInCssForRef));
  139. color: #476446;
  140. background-image: url(@/assets/images/btn_more.png);
  141. background-size: 100% 100%;
  142. font-family: 'KaiTi';
  143. }
  144. .system-btns {
  145. width: 100%;
  146. padding: 0 calc(20 / v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeInCssForRef));
  147. display: flex;
  148. justify-content: space-between;
  149. position: absolute;
  150. bottom: calc(20 /v-bind(windowSizeWhenDesignForRef) * v-bind(windowSizeInCssForRef));
  151. z-index: 2;
  152. }
  153. }
  154. }
  155. </style>