产品详情
Showing
20 changed files
with
258 additions
and
0 deletions
src/assets/images/product/banner.jpg
0 → 100644
76.4 KB
910 Bytes
src/assets/images/product/icon-problem.png
0 → 100644
702 Bytes
1.29 KB
src/assets/images/product/icon-process.png
0 → 100644
904 Bytes
1.33 KB
src/assets/images/product/icon-product.png
0 → 100644
977 Bytes
src/assets/images/product/process.jpg
0 → 100644
47.7 KB
src/assets/images/product/product.jpg
0 → 100644
609 KB
src/assets/images/product/product1.jpg
0 → 100644
378 KB
src/assets/images/product/product2.jpg
0 → 100644
493 KB
src/assets/images/product/product3.jpg
0 → 100644
437 KB
src/assets/images/product/question.jpg
0 → 100644
134 KB
... | @@ -10,5 +10,11 @@ module.exports = { | ... | @@ -10,5 +10,11 @@ module.exports = { |
10 | }, | 10 | }, |
11 | nav: { | 11 | nav: { |
12 | ttt: "2" | 12 | ttt: "2" |
13 | }, | ||
14 | product : { | ||
15 | btnPosition : "Booking service", | ||
16 | iconProblem : "Common problem", | ||
17 | iconProcess : "Insurance process", | ||
18 | iconProduct : "Product details" | ||
13 | } | 19 | } |
14 | } | 20 | } | ... | ... |
src/pages/product/product.js
0 → 100644
1 | |||
2 | import api from '@/api/api' | ||
3 | import { | ||
4 | httpGet, | ||
5 | httpPost | ||
6 | } from '@/api/fetch-api.js' | ||
7 | |||
8 | export default { | ||
9 | data() { | ||
10 | return { | ||
11 | isFixTop: false, | ||
12 | activity: "product" | ||
13 | } | ||
14 | }, | ||
15 | components: {}, | ||
16 | methods: { | ||
17 | initData() { }, | ||
18 | checkBtnGroupFixed() { | ||
19 | let top = this.$refs.ruleBtnGroup.getBoundingClientRect().top; | ||
20 | this.isFixTop = top < 0; | ||
21 | } | ||
22 | }, | ||
23 | computed: { | ||
24 | fixTop() { | ||
25 | return this.isFixTop; | ||
26 | } | ||
27 | }, | ||
28 | mounted() { | ||
29 | window.addEventListener("scroll", () => { | ||
30 | this.checkBtnGroupFixed(); | ||
31 | }); | ||
32 | }, | ||
33 | created() { } | ||
34 | } |
src/pages/product/product.scss
0 → 100644
1 | |||
2 | .content { | ||
3 | background-color: #f5f5f5; | ||
4 | } | ||
5 | |||
6 | .fix { | ||
7 | position: fixed; | ||
8 | max-width: 950px; | ||
9 | width: 100%; | ||
10 | top: 0; | ||
11 | } | ||
12 | |||
13 | .banner { | ||
14 | margin-bottom: 3.333333rem; | ||
15 | position: relative; | ||
16 | .btn-position { | ||
17 | position: absolute; | ||
18 | top: 23.333333rem; | ||
19 | left: 2.833333rem ; | ||
20 | } | ||
21 | .btn { | ||
22 | background: #FF5700; | ||
23 | border: 0; | ||
24 | color: #fff; | ||
25 | margin-left: 0; | ||
26 | width: 160px; | ||
27 | height: 4.166667rem; | ||
28 | display: inline-block; | ||
29 | line-height: 4.166667rem; | ||
30 | text-align: center; | ||
31 | border-radius: .416667rem; | ||
32 | font-size: 1.666667rem; | ||
33 | } | ||
34 | } | ||
35 | |||
36 | .fix .rule-btn { | ||
37 | width: 33.33333% !important; | ||
38 | } | ||
39 | |||
40 | .blank-pannel { | ||
41 | height: 2.5rem; | ||
42 | } | ||
43 | |||
44 | .rule-btn-out-group { | ||
45 | height: 3rem; | ||
46 | } | ||
47 | |||
48 | .rule-btn-group { | ||
49 | display: flex; | ||
50 | width: 100%; | ||
51 | justify-content: space-around; | ||
52 | .rule-btn { | ||
53 | width: 33%; | ||
54 | height: 3rem ; | ||
55 | line-height: 3rem ; | ||
56 | text-align: center; | ||
57 | font-size: 1.166667rem ; | ||
58 | color: #666666; | ||
59 | background: #ffffff; | ||
60 | cursor: pointer; | ||
61 | } | ||
62 | |||
63 | .rule-btn.activity{ | ||
64 | background: #FF5700; | ||
65 | color: #ffffff; | ||
66 | |||
67 | .triangle { | ||
68 | width: 0; | ||
69 | height: 0; | ||
70 | margin: auto; | ||
71 | border: .833333rem solid #FF5700; | ||
72 | border-bottom-color: transparent; | ||
73 | border-left-color: transparent; | ||
74 | border-right-color: transparent; | ||
75 | } | ||
76 | } | ||
77 | |||
78 | i { | ||
79 | display: inline-block; | ||
80 | width: 1.666667rem ; | ||
81 | height: 1.666667rem ; | ||
82 | margin-right: .666667rem; | ||
83 | vertical-align: middle; | ||
84 | } | ||
85 | |||
86 | |||
87 | .icon-product { | ||
88 | background: url("~@/assets/images/product/icon-product-unselect.png") no-repeat center center; | ||
89 | background-size: 75% 60%; | ||
90 | } | ||
91 | |||
92 | .activity .icon-product { | ||
93 | background: url("~@/assets/images/product/icon-product.png") no-repeat center center; | ||
94 | background-size: 75% 60%; | ||
95 | } | ||
96 | |||
97 | .icon-process { | ||
98 | background: url("~@/assets/images/product/icon-process-unselect.png") no-repeat center center; | ||
99 | background-size: 75% 60%; | ||
100 | } | ||
101 | |||
102 | .activity .icon-process { | ||
103 | background: url("~@/assets/images/product/icon-process.png") no-repeat center center; | ||
104 | background-size: 75% 60%; | ||
105 | } | ||
106 | |||
107 | .icon-problem { | ||
108 | background: url("~@/assets/images/product/icon-problem-unselect.png") no-repeat center center; | ||
109 | background-size: 75% 60%; | ||
110 | } | ||
111 | |||
112 | .activity .icon-problem { | ||
113 | background: url("~@/assets/images/product/icon-problem.png") no-repeat center center; | ||
114 | background-size: 75% 60%; | ||
115 | } | ||
116 | |||
117 | } | ||
118 | |||
119 | .rule-container { | ||
120 | display: none; | ||
121 | } | ||
122 | |||
123 | .rule-container.activity { | ||
124 | display: block; | ||
125 | img { | ||
126 | width: 100%; | ||
127 | display: block; | ||
128 | height: auto; | ||
129 | margin: 0 auto; | ||
130 | } | ||
131 | } | ||
132 | |||
133 | .bottom-space { | ||
134 | padding-bottom: 5rem; | ||
135 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
src/pages/product/product.vue
0 → 100644
1 | |||
2 | <template> | ||
3 | <div class="content"> | ||
4 | <div class="banner"> | ||
5 | <div class="btn btn-position">{{$t('product.btnPosition')}}</div> | ||
6 | <img src="@/assets/images/product/banner.jpg" /> | ||
7 | </div> | ||
8 | |||
9 | <div class="box bottom-space"> | ||
10 | <div class="rule-btn-out-group" ref="ruleBtnGroup"> | ||
11 | <div class="rule-btn-group" :class="{fix : fixTop}"> | ||
12 | <div | ||
13 | class="rule-btn" | ||
14 | :class="{activity : activity == 'product'}" | ||
15 | @click="activity = 'product'" | ||
16 | > | ||
17 | <div> | ||
18 | <i class="icon-product"></i> {{$t('product.iconProduct')}} | ||
19 | </div> | ||
20 | <div class="triangle"></div> | ||
21 | </div> | ||
22 | <div | ||
23 | class="rule-btn" | ||
24 | :class="{activity : activity == 'process'}" | ||
25 | @click="activity = 'process'" | ||
26 | > | ||
27 | <div> | ||
28 | <i class="icon-process"></i> {{$t('product.iconProcess')}} | ||
29 | </div> | ||
30 | <div class="triangle"></div> | ||
31 | </div> | ||
32 | <div | ||
33 | class="rule-btn" | ||
34 | :class="{activity : activity == 'problem'}" | ||
35 | @click="activity = 'problem'" | ||
36 | > | ||
37 | <div> | ||
38 | <i class="icon-problem"></i> {{$t('product.iconProblem')}} | ||
39 | </div> | ||
40 | <div class="triangle"></div> | ||
41 | </div> | ||
42 | </div> | ||
43 | </div> | ||
44 | <div class="blank-pannel"></div> | ||
45 | <div class="rule-container" :class="{activity : activity == 'product'}"> | ||
46 | <img src="@/assets/images/product/product1.jpg" /> | ||
47 | <img src="@/assets/images/product/product2.jpg" /> | ||
48 | <img src="@/assets/images/product/product3.jpg" /> | ||
49 | </div> | ||
50 | <div class="rule-container" :class="{activity : activity == 'process'}"> | ||
51 | <img src="@/assets/images/product/process.jpg" /> | ||
52 | </div> | ||
53 | <div class="rule-container" :class="{activity : activity == 'problem'}"> | ||
54 | <img src="@/assets/images/product/question.jpg" /> | ||
55 | </div> | ||
56 | </div> | ||
57 | </div> | ||
58 | </template> | ||
59 | |||
60 | <script src="./product.js"></script> | ||
61 | <style lang="scss" scoped> | ||
62 | @import "./product.scss"; | ||
63 | </style> |
... | @@ -80,6 +80,14 @@ const routes = [ | ... | @@ -80,6 +80,14 @@ const routes = [ |
80 | } | 80 | } |
81 | }, | 81 | }, |
82 | 82 | ||
83 | { | ||
84 | path: '/product', | ||
85 | name: 'product', | ||
86 | component: () => import('./pages/product/product.vue'), | ||
87 | meta: { | ||
88 | title: '' | ||
89 | } | ||
90 | }, | ||
83 | 91 | ||
84 | { | 92 | { |
85 | path: '/demo', | 93 | path: '/demo', | ... | ... |
-
Please register or sign in to post a comment