许成详 6 年之前
父節點
當前提交
7c0c784694

+ 30
- 3
package-lock.json 查看文件

@@ -1949,6 +1949,11 @@
1949 1949
         }
1950 1950
       }
1951 1951
     },
1952
+    "base64-arraybuffer": {
1953
+      "version": "0.1.5",
1954
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
1955
+      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
1956
+    },
1952 1957
     "base64-js": {
1953 1958
       "version": "1.3.0",
1954 1959
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
@@ -2579,9 +2584,9 @@
2579 2584
       "dev": true
2580 2585
     },
2581 2586
     "chromedriver": {
2582
-      "version": "2.44.0",
2583
-      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.44.0.tgz",
2584
-      "integrity": "sha512-/lDFxpSc3mJG/+RF657qDVa3XbfwG8+X2x0Y3kVkvZe6u6aZg+zTMHeGoQziUQGPaDQ9sj8sFYv4duv/AS6y7A==",
2587
+      "version": "2.45.0",
2588
+      "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.45.0.tgz",
2589
+      "integrity": "sha512-Qwmcr+2mU3INeR6mVsQ8gO00vZpL8ZeTJLclX44C0dcs88jrSDgckPqbG+qkVX+m2L/aOPnF0lYgPdOiOiLt5w==",
2585 2590
       "dev": true,
2586 2591
       "requires": {
2587 2592
         "del": "3.0.0",
@@ -3234,6 +3239,14 @@
3234 3239
       "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
3235 3240
       "dev": true
3236 3241
     },
3242
+    "css-line-break": {
3243
+      "version": "1.0.1",
3244
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz",
3245
+      "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=",
3246
+      "requires": {
3247
+        "base64-arraybuffer": "0.1.5"
3248
+      }
3249
+    },
3237 3250
     "css-loader": {
3238 3251
       "version": "0.28.11",
3239 3252
       "resolved": "http://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
@@ -6339,6 +6352,14 @@
6339 6352
         }
6340 6353
       }
6341 6354
     },
6355
+    "html2canvas": {
6356
+      "version": "1.0.0-alpha.12",
6357
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz",
6358
+      "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=",
6359
+      "requires": {
6360
+        "css-line-break": "1.0.1"
6361
+      }
6362
+    },
6342 6363
     "htmlparser2": {
6343 6364
       "version": "3.3.0",
6344 6365
       "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
@@ -15412,6 +15433,12 @@
15412 15433
       "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
15413 15434
       "dev": true
15414 15435
     },
15436
+    "weixin-jsapi": {
15437
+      "version": "1.1.0",
15438
+      "resolved": "https://registry.npmjs.org/weixin-jsapi/-/weixin-jsapi-1.1.0.tgz",
15439
+      "integrity": "sha1-UalaIiTFnR2PAv3bxt5S2hazRLM=",
15440
+      "dev": true
15441
+    },
15415 15442
     "whatwg-encoding": {
15416 15443
       "version": "1.0.5",
15417 15444
       "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",

+ 2
- 1
package.json 查看文件

@@ -15,6 +15,7 @@
15 15
   },
16 16
   "dependencies": {
17 17
     "axios": "^0.18.0",
18
+    "html2canvas": "^1.0.0-alpha.12",
18 19
     "mescroll.js": "^1.3.8",
19 20
     "vant": "^1.4.5",
20 21
     "vue": "^2.5.2",
@@ -38,7 +39,7 @@
38 39
     "babel-preset-stage-2": "^6.22.0",
39 40
     "babel-register": "^6.22.0",
40 41
     "chalk": "^2.0.1",
41
-    "chromedriver": "^2.27.2",
42
+    "chromedriver": "^2.45.0",
42 43
     "copy-webpack-plugin": "^4.0.1",
43 44
     "cross-spawn": "^5.0.1",
44 45
     "css-loader": "^0.28.0",

+ 2
- 2
src/App.vue 查看文件

@@ -13,12 +13,12 @@ export default {
13 13
   name: 'App',
14 14
   data () {
15 15
     return {
16
-      showPage: false,
16
+      showPage: true,
17 17
       code: ''
18 18
     }
19 19
   },
20 20
   created () {
21
-    this.init()
21
+    // this.init()
22 22
     this.getAppId().then(() => {
23 23
       console.log(this.appid)
24 24
     })

+ 122
- 95
src/pages/home/index.vue 查看文件

@@ -1,38 +1,39 @@
1 1
 <template>
2
-  <div class="mainPage">
2
+  <div class="mainPage" id="canvasPage">
3 3
     <div class="imgArr" :hidden="true">
4 4
       <img
5 5
         v-for="item in imgTotal"
6 6
         :key="item"
7
-        :src="'https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-' + item + '.png'"
7
+        :src="'http://wx.jinchengjiaye.com/h5-2019/static/images/icon-' + item + '.png'"
8 8
         @load="imgLoad"
9 9
         alt
10 10
       >
11 11
     </div>
12 12
     <div class="subPage" v-if="showPage">
13 13
       <img
14
-        src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-12.png"
14
+        src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-12.png"
15 15
         style="z-index: 3;"
16 16
         class="centerLabel cover"
17 17
         alt
18 18
       >
19 19
       <img
20
-        src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-10.png"
20
+        src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-10.png"
21 21
         class="icon10"
22 22
         style="position: absolute;left:9vw;top:3.7vh;z-index:100;width: 31.2vw;"
23
+        v-if="imgSrc === null"
23 24
         :class="{'active': currentPage !== 0}"
24 25
         alt
25 26
       >
26
-      <div class="page1" :class="{'show': currentPage === 1}">
27
+      <div class="page1" :class="{'show': currentPage === 1 && imgSrc === null}">
27 28
         <img
28
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-3.png"
29
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-3.png"
29 30
           class="icon3"
30 31
           style="position: absolute;left:0;top:0;z-index:2;width: 87.5vw;"
31 32
           :class="{'active': currentPage === 1}"
32 33
           alt
33 34
         >
34 35
         <img
35
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-4.png"
36
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-4.png"
36 37
           class="icon4"
37 38
           style="position: absolute;right:0;bottom:0;z-index:2;width: 77vw;"
38 39
           :class="{'active': currentPage === 1}"
@@ -40,7 +41,7 @@
40 41
         >
41 42
         <div class="centerLabel" style="z-index: 3">
42 43
           <img
43
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-11.png"
44
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-11.png"
44 45
             class="icon11"
45 46
             style="width: 36.5vw;"
46 47
             :class="{'active': currentPage === 1}"
@@ -51,7 +52,7 @@
51 52
             style="overflow: visible;position: relative;-webkit-transform-style: preserve-3d !important;transform-style: preserve-3d !important;"
52 53
           >
53 54
             <img
54
-              src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-2.png"
55
+              src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-2.png"
55 56
               class="icon2"
56 57
               style="width:68vw;transform: translateY(.2rem);-webkit-transform: translateY(.2rem);"
57 58
               :class="{'active': currentPage === 1}"
@@ -61,14 +62,14 @@
61 62
             <div class="circle circle2 centerLabel" :class="{'active': currentPage === 1}"></div>
62 63
           </div>
63 64
           <img
64
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-13.png"
65
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-13.png"
65 66
             class="icon13"
66 67
             style="width:56vw;display:inline-block;margin-top: .4rem;"
67 68
             :class="{'active': currentPage === 1}"
68 69
             alt
69 70
           >
70 71
           <img
71
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-1.png"
72
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-1.png"
72 73
             class="icon1"
73 74
             style="width: 35.7vw;margin-top: .2rem;"
74 75
             :class="{'active': currentPage === 1}"
@@ -77,154 +78,121 @@
77 78
           >
78 79
         </div>
79 80
       </div>
80
-      <div class="page2" :class="{'show': currentPage === 2}">
81
+      <div class="page2" :class="{'show': currentPage === 2 && imgSrc === null}">
81 82
         <img
82
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-7.png"
83
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-7.png"
83 84
           class="icon7"
84 85
           style="position: absolute;left:0;top:0;z-index:2;width: 100vw;"
85 86
           :class="{'active': currentPage === 2}"
86 87
           alt
87 88
         >
88 89
         <img
89
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-6.png"
90
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-6.png"
90 91
           class="icon6"
91 92
           style="position: absolute;right:0;bottom:0;z-index:2;width: 100vw;"
92 93
           :class="{'active': currentPage === 2}"
93 94
           alt
94 95
         >
95 96
         <img
96
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-5.png"
97
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-5.png"
97 98
           class="icon5"
98 99
           style="position: absolute;right:9vw;bottom:3.5vh;z-index:11;width: 43.7vw;"
99 100
           :class="{'active': currentPage === 2}"
100 101
           alt
101 102
         >
103
+        <div class="nextStep" v-if="userSelectFlag.length" @click="nextStep">
104
+          <span>下一步</span>
105
+        </div>
102 106
         <div class="centerLabel">
103 107
           <img
104
-            src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-13.png"
108
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-13.png"
105 109
             class="icon13"
106 110
             style="width:66vw;display:inline-block;margin-top: .4rem;"
107 111
             :class="{'active': currentPage === 2}"
108 112
             alt
109 113
           >
110 114
           <div class="content">
111
-            <span class="flagItem flagItem1" :class="{'active': currentPage === 2}">努力的目标</span>
112
-            <span class="flagItem flagItem2" :class="{'active': currentPage === 2}">努力的目标</span>
113
-            <span class="flagItem flagItem3" :class="{'active': currentPage === 2}">努力的目标</span>
114
-            <span class="flagItem flagItem4" :class="{'active': currentPage === 2}">努力的目标</span>
115
-            <span class="flagItem flagItem5" :class="{'active': currentPage === 2}">努力的目标</span>
116
-            <span class="flagItem flagItem6" :class="{'active': currentPage === 2}">努力的目标</span>
117
-            <span class="flagItem flagItem7" :class="{'active': currentPage === 2}">努力的目标</span>
118
-            <span class="flagItem flagItem8" :class="{'active': currentPage === 2}">努力的目标</span>
119
-            <span class="flagItem flagItem9" :class="{'active': currentPage === 2}">努力的目标</span>
120
-            <span class="flagItem flagItem10" :class="{'active': currentPage === 2}">努力的目标</span>
115
+            <span
116
+              v-for="(item, index) in selectFlag"
117
+              :key="index"
118
+              class="flagItem"
119
+              :class="{'active': currentPage === 2, [`flagItem${index+1}`]: true, 'selected': item.select}"
120
+              @click="selectFlagItem(item, index)"
121
+            >{{item.value}}</span>
121 122
           </div>
122 123
         </div>
123 124
       </div>
124
-      <div class="page3" :hidden="currentPage !== 3">
125
-        <img
126
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-8.png"
127
-          class="icon8"
128
-          style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
129
-          alt
130
-        >
131
-        <img
132
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-9.png"
133
-          class="icon9"
134
-          style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
135
-          alt
136
-        >
137
-        <div class="centerLabel">
138
-          <span>亲爱的你,新年好</span>
139
-          <span>亲爱的你,新年好</span>
140
-          <span>亲爱的你,新年好</span>
141
-          <span>亲爱的你,新年好</span>
142
-          <span>亲爱的你,新年好</span>
143
-          <span>亲爱的你,新年好</span>
144
-          <span>亲爱的你,新年好</span>
145
-          <span>亲爱的你,新年好</span>
146
-          <span>亲爱的你,新年好</span>
147
-          <span>亲爱的你,新年好</span>
148
-        </div>
149
-      </div>
150
-      <div class="page4" :hidden="currentPage !== 4">
125
+      <div class="page3" :class="{'show': currentPage === 3 && imgSrc === null}">
151 126
         <img
152
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-8.png"
127
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-8.png"
153 128
           class="icon8"
154 129
           style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
155 130
           alt
156 131
         >
157 132
         <img
158
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-9.png"
133
+          src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-9.png"
159 134
           class="icon9"
160 135
           style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
161 136
           alt
162 137
         >
163
-        <div class="centerLabel">
164
-          <span>亲爱的你,新年好</span>
165
-          <span>亲爱的你,新年好</span>
166
-          <span>亲爱的你,新年好</span>
167
-          <span></span>
168
-          <span>亲爱的你,新年好</span>
169
-          <span>亲爱的你,新年好</span>
170
-          <span>亲爱的你,新年好</span>
171
-          <span>亲爱的你,新年好</span>
172
-          <span>亲爱的你,新年好</span>
173
-          <span>亲爱的你,新年好</span>
174
-        </div>
175
-      </div>
176
-      <div class="page5" :hidden="currentPage !== 5">
177
-        <img
178
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-8.png"
179
-          class="icon8"
180
-          style="position: absolute;left:0;bottom:0;z-index:2;width: 100vw;"
181
-          alt
182
-        >
183
-        <img
184
-          src="https://jingcheng-h5temp.oss-cn-shanghai.aliyuncs.com/20181229-images/icon-9.png"
185
-          class="icon9"
186
-          style="position: absolute;left:0;bottom:0;z-index:3;width: 100vw;"
187
-          alt
188
-        >
189
-        <div class="userIcon">
138
+        <div class="userIcon" style="z-index: 20;">
190 139
           <a>
191 140
             <img :src="userIcon" class="centerLabel cover" alt>
192 141
           </a>
193 142
         </div>
194
-        <div class="centerLabel">
195
-          <span>亲爱的你,新年好</span>
196
-          <span>亲爱的你,新年好</span>
197
-          <span>亲爱的你,新年好</span>
143
+        <div class="centerLabel" style="z-index: 20">
144
+          <img
145
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-15.png"
146
+            width="100%"
147
+            alt
148
+          >
198 149
           <span></span>
199
-          <span>亲爱的你,新年好</span>
200
-          <span>亲爱的你,新年好</span>
201
-          <span>亲爱的你,新年好</span>
202
-          <span>亲爱的你,新年好</span>
203
-          <span>亲爱的你,新年好</span>
204
-          <span>亲爱的你,新年好</span>
150
+          <img
151
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-16.png"
152
+            v-if="showEndTextIndex === 0"
153
+            width="100%"
154
+            alt
155
+          >
156
+          <img
157
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-17.png"
158
+            v-if="showEndTextIndex === 1"
159
+            width="100%"
160
+            alt
161
+          >
162
+          <img
163
+            src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-18.png"
164
+            v-if="showEndTextIndex === 2"
165
+            width="100%"
166
+            alt
167
+          >
205 168
         </div>
206 169
         <div class="bottomText">
207 170
           <div class="qrCode">
208 171
             <a>
209
-              <img :src="qrCode" class="centerLabel cover" alt>
172
+              <img src="http://wx.jinchengjiaye.com/h5-2019/static/images/icon-19.png" class="centerLabel cover" alt>
210 173
             </a>
211 174
           </div>
212 175
           <span>长按二维码</span>
213 176
           <span>祝福你的2019</span>
214 177
         </div>
215 178
       </div>
179
+      <div class="page4" :class="{'show': currentPage === 4 && imgSrc !== null}">
180
+        <img :src="imgSrc" width="100%" class="cover" alt>
181
+      </div>
216 182
     </div>
217 183
   </div>
218 184
 </template>
219 185
 
220 186
 <script>
187
+import html2canvas from 'html2canvas'
188
+import musicPlay from '../../util/music'
221 189
 export default {
222 190
   name: '',
223 191
   data () {
224 192
     return {
225 193
       showPage: false,
226 194
       imgNum: 0,
227
-      imgTotal: 18,
195
+      imgTotal: 19,
228 196
       currentPage: 0,
229 197
       userIcon: '',
230 198
       qrCode: '',
@@ -255,7 +223,11 @@ export default {
255 223
         '实现财务自由',
256 224
         '方案一次过',
257 225
         '男(女)神回复我信息'
258
-      ]
226
+      ],
227
+      selectFlag: [],
228
+      userSelectFlag: [],
229
+      showEndTextIndex: Math.floor(Math.random() * 3),
230
+      imgSrc: null
259 231
     }
260 232
   },
261 233
   computed: {
@@ -263,12 +235,40 @@ export default {
263 235
   components: {
264 236
   },
265 237
   created () {
238
+    '*********'.split('*').forEach(x => {
239
+      while (true) {
240
+        const inx = Math.floor(Math.random() * this.flagList.length)
241
+        const res = this.flagList[inx]
242
+        if (this.selectFlag.indexOf(res) === -1) {
243
+          this.selectFlag.push({
244
+            select: false,
245
+            value: res
246
+          })
247
+          break
248
+        }
249
+      }
250
+    })
266 251
   },
267 252
   mounted () {
268 253
     this.$nextTick(() => {
254
+      musicPlay('http://wx.jinchengjiaye.com/h5-2019/static/images/Thomas%20Greenberg.mp3')
269 255
     })
270 256
   },
271 257
   methods: {
258
+    nextStep () { // 下一步
259
+      this.currentPage = this.userSelectFlag.length ? 3 : 2
260
+      window.setTimeout(() => {
261
+        this.convert2canvas(document.getElementById('canvasPage')).then((res) => {
262
+          this.imgSrc = res
263
+          this.currentPage = 4
264
+        })
265
+      }, 300)
266
+    },
267
+    selectFlagItem (item, index) {
268
+      document.getElementsByClassName('flagItem')[index].style = 'transition: all .3s ease;-webkit-transition: all .3s ease;'
269
+      item.select = true
270
+      this.userSelectFlag.push(item)
271
+    },
272 272
     imgLoad () { // 图片加载进度存储
273 273
       this.imgNum += 1
274 274
       if (this.imgNum === this.imgTotal) {
@@ -280,6 +280,33 @@ export default {
280 280
     },
281 281
     returnImgNum () { // 图片加载进度读取
282 282
       return Math.floor((this.imgNum / this.imgTotal) * 100)
283
+    },
284
+    convert2canvas (dom) {
285
+      return new Promise((resolve, reject) => {
286
+        var shareContent = dom
287
+        var width = shareContent.offsetWidth // 获取dom 宽度
288
+        var height = shareContent.offsetHeight // 获取dom 高度
289
+        var canvas = document.createElement('canvas') // 创建一个canvas节点
290
+        var scale = 1 // 定义任意放大倍数 支持小数
291
+        canvas.width = width * scale // 定义canvas 宽度 * 缩放
292
+        canvas.height = height * scale // 定义canvas高度 *缩放
293
+        canvas.getContext('2d').scale(scale, scale) // 获取context,设置scale
294
+        var opts = {
295
+          scale: scale, // 添加的scale 参数
296
+          canvas: canvas, // 自定义 canvas
297
+          width: width, // dom 原始宽度
298
+          height: height,
299
+          useCORS: true // 【重要】开启跨域配置
300
+        }
301
+        html2canvas(shareContent, opts).then(function (canvas) {
302
+          var context = canvas.getContext('2d') // 【重要】关闭抗锯齿
303
+          context.mozImageSmoothingEnabled = false
304
+          context.webkitImageSmoothingEnabled = false
305
+          context.msImageSmoothingEnabled = false
306
+          context.imageSmoothingEnabled = false
307
+          resolve(canvas.toDataURL('image/jpeg'))
308
+        })
309
+      })
283 310
     }
284 311
   }
285 312
 }

+ 58
- 10
src/pages/home/page.scss 查看文件

@@ -59,6 +59,23 @@
59 59
         }
60 60
       }
61 61
       &.page2{
62
+        .nextStep{
63
+          padding: .02rem;
64
+          border: 2px solid #fff;
65
+          position: absolute;
66
+          right: 12vw;
67
+          bottom: 4.5vh;
68
+          z-index: 200;
69
+          display: inline-block;
70
+          span{
71
+            background: #de7ba2;
72
+            color: #fff;
73
+            font-size: .18rem;
74
+            display: inline-block;
75
+            line-height: .3rem;
76
+            padding: 0 .1rem;
77
+          }
78
+        }
62 79
         >.centerLabel{
63 80
           width: 100%;
64 81
           z-index: 11;
@@ -80,6 +97,7 @@
80 97
               display: inline-block;
81 98
               position: absolute;
82 99
               padding: 0 .1rem;
100
+              white-space: nowrap;
83 101
               z-index: 11;
84 102
               &:nth-child(2n){
85 103
                 transform: translateX(-1rem);
@@ -117,12 +135,15 @@
117 135
               background: #5bcff1;
118 136
               border-radius: .1rem;
119 137
               overflow: visible;
138
+              &.selected{
139
+                opacity: 0;
140
+              }
120 141
               &::after{
121 142
                 content: '';
122 143
                 border-color: #5bcff1 transparent transparent transparent;
123 144
                 border-width: .15rem;
124 145
                 bottom: -.24rem;
125
-                right: 50%;
146
+                right: 30%;
126 147
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
127 148
                 transform: rotateY(60deg) rotateZ(-20deg);
128 149
               }
@@ -136,12 +157,15 @@
136 157
               background: #f8b551;
137 158
               border-radius: .1rem;
138 159
               overflow: visible;
160
+              &.selected{
161
+                opacity: 0;
162
+              }
139 163
               &::after{
140 164
                 content: '';
141 165
                 border-color: #f8b551 transparent transparent transparent;
142 166
                 border-width: .15rem;
143 167
                 bottom: -.24rem;
144
-                left: 50%;
168
+                left: 30%;
145 169
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
146 170
                 transform: rotateY(60deg) rotateZ(20deg);
147 171
               }
@@ -155,12 +179,15 @@
155 179
               background: #de7ba2;
156 180
               border-radius: .1rem;
157 181
               overflow: visible;
182
+              &.selected{
183
+                opacity: 0;
184
+              }
158 185
               &::after{
159 186
                 content: '';
160 187
                 border-color: #de7ba2 transparent transparent transparent;
161 188
                 border-width: .15rem;
162 189
                 bottom: -.24rem;
163
-                left: 50%;
190
+                left: 30%;
164 191
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
165 192
                 transform: rotateY(60deg) rotateZ(-20deg);
166 193
               }
@@ -174,12 +201,15 @@
174 201
               background: #fdc17a;
175 202
               border-radius: .1rem;
176 203
               overflow: visible;
204
+              &.selected{
205
+                opacity: 0;
206
+              }
177 207
               &::after{
178 208
                 content: '';
179 209
                 border-color: #fdc17a transparent transparent transparent;
180 210
                 border-width: .15rem;
181 211
                 bottom: -.24rem;
182
-                right: 50%;
212
+                right: 30%;
183 213
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
184 214
                 transform: rotateY(60deg) rotateZ(20deg);
185 215
               }
@@ -193,12 +223,15 @@
193 223
               background: #f8b551;
194 224
               border-radius: .1rem;
195 225
               overflow: visible;
226
+              &.selected{
227
+                opacity: 0;
228
+              }
196 229
               &::after{
197 230
                 content: '';
198 231
                 border-color: #f8b551 transparent transparent transparent;
199 232
                 border-width: .15rem;
200 233
                 bottom: -.24rem;
201
-                left: 60%;
234
+                left: 30%;
202 235
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
203 236
                 transform: rotateY(60deg) rotateZ(-20deg);
204 237
               }
@@ -212,12 +245,15 @@
212 245
               background: #f8b551;
213 246
               border-radius: .1rem;
214 247
               overflow: visible;
248
+              &.selected{
249
+                opacity: 0;
250
+              }
215 251
               &::after{
216 252
                 content: '';
217 253
                 border-color: #f8b551 transparent transparent transparent;
218 254
                 border-width: .15rem;
219 255
                 bottom: -.24rem;
220
-                left: 50%;
256
+                left: 30%;
221 257
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
222 258
                 transform: rotateY(60deg) rotateZ(20deg);
223 259
               }
@@ -233,12 +269,15 @@
233 269
               overflow: visible;
234 270
               transform: translateX(-50%);
235 271
               -webkit-transform: translateX(-50%);
272
+              &.selected{
273
+                opacity: 0;
274
+              }
236 275
               &::after{
237 276
                 content: '';
238 277
                 border-color: #a57dd1 transparent transparent transparent;
239 278
                 border-width: .15rem;
240 279
                 bottom: -.24rem;
241
-                left: 60%;
280
+                left: 30%;
242 281
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
243 282
                 transform: rotateY(60deg) rotateZ(-20deg);
244 283
               }
@@ -252,12 +291,15 @@
252 291
               background: #f8b551;
253 292
               border-radius: .1rem;
254 293
               overflow: visible;
294
+              &.selected{
295
+                opacity: 0;
296
+              }
255 297
               &::after{
256 298
                 content: '';
257 299
                 border-color: #f8b551 transparent transparent transparent;
258 300
                 border-width: .15rem;
259 301
                 bottom: -.24rem;
260
-                left: 60%;
302
+                left: 30%;
261 303
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
262 304
                 transform: rotateY(60deg) rotateZ(-20deg);
263 305
               }
@@ -271,12 +313,15 @@
271 313
               background: #fdc17a;
272 314
               border-radius: .1rem;
273 315
               overflow: visible;
316
+              &.selected{
317
+                opacity: 0;
318
+              }
274 319
               &::after{
275 320
                 content: '';
276 321
                 border-color: #fdc17a transparent transparent transparent;
277 322
                 border-width: .15rem;
278 323
                 bottom: -.24rem;
279
-                left: 60%;
324
+                left: 30%;
280 325
                 -webkit-transform: rotateY(60deg) rotateZ(-20deg);
281 326
                 transform: rotateY(60deg) rotateZ(-20deg);
282 327
               }
@@ -290,12 +335,15 @@
290 335
               background: #f8b551;
291 336
               border-radius: .1rem;
292 337
               overflow: visible;
338
+              &.selected{
339
+                opacity: 0;
340
+              }
293 341
               &::after{
294 342
                 content: '';
295 343
                 border-color: #f8b551 transparent transparent transparent;
296 344
                 border-width: .15rem;
297 345
                 bottom: -.24rem;
298
-                left: 50%;
346
+                left: 30%;
299 347
                 -webkit-transform: rotateY(60deg) rotateZ(20deg);
300 348
                 transform: rotateY(60deg) rotateZ(20deg);
301 349
               }

+ 51
- 0
src/util/music.js 查看文件

@@ -0,0 +1,51 @@
1
+/* eslint-disable */
2
+export default function musicPlay (src) {
3
+  var className = 'play'
4
+  var trigger = 'ontouchend' in document ? 'touchstart' : 'click'
5
+  var $musci = document.createElement('div')
6
+  var $audio = document.createElement('audio')
7
+
8
+  function start () {
9
+    document.removeEventListener(trigger, start, false)
10
+    if (!$audio.paused) return
11
+    $audio.play()
12
+  }
13
+
14
+  function toggle () {
15
+    if (!$audio.paused) return $audio.pause()
16
+
17
+    $audio.currentTime = 0
18
+    $audio.play()
19
+  }
20
+
21
+  function play (e) {
22
+    $musci.classList.add(className)
23
+  }
24
+
25
+  function pause (e) {
26
+    $musci.classList.remove(className)
27
+  }
28
+
29
+  $musci.className = 'music-icon'
30
+  $musci.classList.add('paused')
31
+  $audio.src = src
32
+  $audio.id = "audio"
33
+  $audio.loop = true
34
+  $audio.volume = 0.5
35
+  document.body.appendChild($musci)
36
+  document.body.appendChild($audio)
37
+
38
+  $audio.addEventListener('play', play, false)
39
+  $audio.addEventListener('pause', pause, false)
40
+  $audio.addEventListener('ended', pause, false)
41
+  $musci.addEventListener('click', toggle, false)
42
+  try {
43
+    $audio.play()
44
+  } catch (err) {
45
+  }
46
+  document.addEventListener("WeixinJSBridgeReady", function () {
47
+    $audio.play()
48
+  }, false)
49
+
50
+  document.addEventListener(trigger, start, false)
51
+}

二進制
static/images/icon-1.png 查看文件


二進制
static/images/icon-10.png 查看文件


二進制
static/images/icon-11.png 查看文件


二進制
static/images/icon-12.png 查看文件


二進制
static/images/icon-13.png 查看文件


二進制
static/images/icon-14.png 查看文件


二進制
static/images/icon-15.png 查看文件


二進制
static/images/icon-16.png 查看文件


二進制
static/images/icon-17.png 查看文件


二進制
static/images/icon-18.png 查看文件


二進制
static/images/icon-19.png 查看文件


二進制
static/images/icon-2.png 查看文件


二進制
static/images/icon-3.png 查看文件


二進制
static/images/icon-4.png 查看文件


二進制
static/images/icon-5.png 查看文件


二進制
static/images/icon-6.png 查看文件


二進制
static/images/icon-7.png 查看文件


二進制
static/images/icon-8.png 查看文件


二進制
static/images/icon-9.png 查看文件