├── .gitignore
├── .eslintignore
├── .babelrc
├── src
├── main.js
├── components
│ ├── footer
│ │ └── footer.vue
│ └── datepickerMobile
│ │ ├── pickerMobile.scss
│ │ └── pickerMobile.vue
└── view
│ └── pickerMobile
│ └── mobilePickerDemo.vue
├── .editorconfig
├── .eslintrc.js
├── config
└── index.js
├── README.md
├── LICENSE
├── static
└── style
│ └── coreCss
│ ├── px2rem.scss
│ └── reset.scss
├── package.json
└── index.html
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | node_modules
3 | dist
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-2"],
3 | "plugins": ["transform-runtime"],
4 | "comments": false
5 | }
6 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import picker from './view/pickerMobile/mobilePickerDemo'
3 |
4 | new Vue({
5 | render (h) {
6 | return h(picker)
7 | }
8 | }).$mount('#app')
9 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/src/components/footer/footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // http://eslint.org/docs/user-guide/configuring
2 | module.exports = {
3 | root: true,
4 | parser: 'babel-eslint',
5 | parserOptions: {
6 | sourceType: 'module'
7 | },
8 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
9 | extends: 'standard',
10 | // required to lint *.vue files
11 | plugins: [
12 | 'html'
13 | ],
14 | // add your custom rules here
15 | 'rules': {
16 | // allow paren-less arrow functions
17 | 'arrow-parens': 0,
18 | // allow async-await
19 | 'generator-star-spacing': 0,
20 | // allow debugger during development
21 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | const path=require('path');
2 |
3 | module.exports={
4 | build:{
5 | env:{
6 | NODE_ENV:'"production"'
7 | },
8 | indexHtml:path.resolve(__dirname,'../dist/index.html'),
9 | staticRoot:path.resolve(__dirname,'../dist'),
10 | staticSubDirectory:'static',
11 | staticPublishPath:'',
12 | productionSourceMap:false,
13 | },
14 | dev:{
15 | env:{
16 | NODE_ENV:'"development"'
17 | },
18 | port:8080,
19 | autoOpenBrowser:true,
20 | staticSubDirectory:'static',
21 | staticPublishPath:'/',
22 | proxyTable: {},
23 | cssSourceMap: true
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # do no use this in your production environment!!!
2 | ## this project is no longer updated ,please use [this](https://github.com/k186/iosSelect) instead
3 |
4 |
5 | ### vue deatePicker for mobile component
6 |
7 | ### [demo](http://k186studio.com/demos/vue/mobilePicker/)
8 |
9 |
10 | ###Build Setup
11 | ```$xslt
12 | # install dependencies
13 | npm install
14 |
15 | # serve with hot reload at localhost:8080
16 | npm run dev
17 |
18 | # build for production with minification
19 | npm run build
20 | ```
21 | ### props config
22 | ```$xslt
23 | valueStr: {
24 | type: String,
25 | default: ''
26 | },
27 | visible: {
28 | type: Boolean,
29 | default: false,
30 | required: true
31 | },
32 | options: {
33 | type: Object
34 | }
35 | ```
36 |
37 | >`valueStr`: the init date value like 2017-3-7 14:50
38 |
39 | >`visible`: without use vuex ,so you need control picker visible by yourself
40 |
41 | >`selectDay`:callback function
42 |
43 | #[example](https://github.com/k186/vue-wheel-scroll-datepikcer/blob/master/src/view/pickerMobile/mobilePickerDemo.vue)
44 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "vue-wheel-scroll-datepikcer"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/static/style/coreCss/px2rem.scss:
--------------------------------------------------------------------------------
1 | //function way
2 | @function px2rem($px, $base-font-size: 75px) {
3 | @if (unitless($px)) {
4 | @warn "Assuming #{$px} to be in pixels, attempting to convert it into pixels for you";
5 | @return px2rem($px + 0px); // That may fail.
6 | } @else if (unit($px) == rem) {
7 | @return $px;
8 | }
9 | @return ($px / $base-font-size) * 1rem;
10 | }
11 | //mixin way
12 | @mixin px2rem($property,$px-values,$baseline-px:75px,$support-for-ie:false){
13 | //Conver the baseline into rems
14 | $baseline-rem: $baseline-px / 1rem * 1;
15 | //Print the first line in pixel values
16 | @if $support-for-ie {
17 | #{$property}: $px-values;
18 | }
19 | //if there is only one (numeric) value, return the property/value line for it.
20 | @if type-of($px-values) == "number"{
21 | #{$property}: $px-values / $baseline-rem;
22 | }
23 | @else {
24 | //Create an empty list that we can dump values into
25 | $rem-values:();
26 | @each $value in $px-values{
27 | // If the value is zero or not a number, return it
28 | @if $value == 0 or type-of($value) != "number"{
29 | $rem-values: append($rem-values, $value / $baseline-rem);
30 | }
31 | }
32 | // Return the property and its list of converted values
33 | #{$property}: $rem-values;
34 | }
35 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-wheel-scroll-datepikcer",
3 | "version": "1.0.0",
4 | "description": "vue v2.0 , mobile datePicker",
5 | "main": "index.js",
6 | "scripts": {
7 | "build": "node build/build.js",
8 | "dev": "node build/dev-server.js"
9 | },
10 | "keywords": ["vue","datepicker"],
11 | "author": "k186(k1868548@gmail.com)",
12 | "license": "ISC",
13 | "dependencies": {
14 | "vue": "^2.2.1",
15 | "webpack": "^2.2.1"
16 | },
17 | "devDependencies": {
18 | "autoprefixer": "^6.7.6",
19 | "babel-core": "^6.23.1",
20 | "babel-eslint": "^7.1.1",
21 | "babel-loader": "^6.3.2",
22 | "babel-plugin-transform-runtime": "^6.23.0",
23 | "babel-preset-es2015": "^6.22.0",
24 | "babel-preset-stage-2": "^6.22.0",
25 | "babel-register": "^6.23.0",
26 |
27 | "extract-text-webpack-plugin": "^2.0.0",
28 | "optimize-css-assets-webpack-plugin": "^1.3.0",
29 |
30 | "eslint": "^3.14.1",
31 | "eslint-friendly-formatter": "^2.0.7",
32 | "eslint-loader": "^1.6.1",
33 | "eslint-plugin-html": "^2.0.0",
34 | "eslint-config-standard": "^6.2.1",
35 | "eslint-plugin-promise": "^3.4.0",
36 | "eslint-plugin-standard": "^2.0.1",
37 |
38 | "html-webpack-plugin": "^2.28.0",
39 |
40 | "shelljs": "^0.7.6",
41 | "file-loader": "^0.10.1",
42 | "style-loader": "^0.13.2",
43 | "css-loader": "^0.26.2",
44 | "url-loader": "^0.5.8",
45 | "vue-loader": "^11.1.4",
46 | "vue-template-compiler": "^2.2.1",
47 | "node-sass": "^4.5.0",
48 | "sass-loader": "^6.0.2",
49 |
50 | "express": "^4.15.0",
51 | "webpack-dev-middleware": "^1.10.1",
52 | "webpack-hot-middleware": "^2.17.1",
53 | "friendly-errors-webpack-plugin": "^1.6.1",
54 | "opn": "^4.0.2",
55 | "ora": "^1.1.0",
56 | "chalk": "^1.1.3",
57 | "webpack-merge": "^3.0.0",
58 | "connect-history-api-fallback": "^1.3.0"
59 | },
60 | "browserlist": [
61 | "> 1%",
62 | "last 2 versions",
63 | "not ie <= 8"
64 | ]
65 | }
66 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | mobile date picker
6 |
7 |
8 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/static/style/coreCss/reset.scss:
--------------------------------------------------------------------------------
1 | html, body, div, span, object, iframe,
2 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3 | abbr, address, cite, code,
4 | del, dfn, em, img, ins, kbd, q, samp,
5 | small, strong, sub, sup, var,
6 | b, i,
7 | dl, dt, dd, ol, ul, li,
8 | fieldset, form, label, legend,
9 | table, caption, tbody, tfoot, thead, tr, th, td,
10 | article, aside, canvas, details, figcaption, figure,
11 | footer, header, hgroup, menu, nav, section, summary,
12 | time, mark, audio, video {
13 | margin: 0;
14 | padding: 0;
15 | border: 0;
16 | outline: 0;
17 | vertical-align: baseline;
18 | }
19 |
20 | body {
21 | line-height: 1;
22 | -webkit-user-select: none;
23 | -moz-user-select: none;
24 | -ms-user-select: none;
25 | user-select: none;
26 | }
27 |
28 | article, aside, details, figcaption, figure,
29 | footer, header, hgroup, menu, nav, section {
30 | display: block;
31 | }
32 |
33 | ul {
34 | list-style: none;
35 | }
36 |
37 | blockquote, q {
38 | quotes: none;
39 | }
40 |
41 | blockquote:before, blockquote:after,
42 | q:before, q:after {
43 | content: '';
44 | content: none;
45 | }
46 |
47 | a {
48 | margin: 0;
49 | padding: 0;
50 | font-size: 1rem;
51 | vertical-align: baseline;
52 | background: transparent;
53 | }
54 |
55 | /* change colours to suit your needs */
56 | ins {
57 | background-color: #ff9;
58 | color: #000;
59 | text-decoration: none;
60 | }
61 |
62 | /* change colours to suit your needs */
63 | mark {
64 | background-color: #ff9;
65 | color: #000;
66 | font-style: italic;
67 | font-weight: bold;
68 | }
69 |
70 | del {
71 | text-decoration: line-through;
72 | }
73 |
74 | abbr[title], dfn[title] {
75 | border-bottom: 1px dotted;
76 | cursor: help;
77 | }
78 |
79 | table {
80 | border-collapse: collapse;
81 | border-spacing: 0;
82 | }
83 |
84 | /* change border colour to suit your needs */
85 | hr {
86 | display: block;
87 | height: 1px;
88 | border: 0;
89 | border-top: 1px solid #cccccc;
90 | margin: 1em 0;
91 | padding: 0;
92 | }
93 |
94 | input, select {
95 | vertical-align: middle;
96 | }
97 | input{
98 | border: none;
99 | &:focus{
100 | outline: none;
101 | }
102 | }
103 | a {
104 | text-decoration: none;
105 | outline: 0;
106 | outline: none;
107 | }
108 |
109 | body {
110 | margin: 0;
111 | }
112 | * {
113 | -webkit-box-sizing: border-box;
114 | -moz-box-sizing: border-box;
115 | box-sizing: border-box;
116 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
117 | -webkit-tap-highlight-color: transparent;
118 | }
119 | /*set fontFamily you need*/
120 | html[lang=en] body {
121 | font-family: 'PingFang SC', 'Helvetica Neue', 'Helvetica', 'STHeitiSC-Light', 'Arial', sans-serif;
122 | line-height: 1.8;
123 | background: #efeff4;
124 | }
125 | .scroller{
126 | position: absolute;
127 | z-index: 1;
128 | -webkit-tap-highlight-color: rgba(0,0,0,0);
129 | width: 100%;
130 | -webkit-transform: translateZ(0);
131 | -moz-transform: translateZ(0);
132 | -ms-transform: translateZ(0);
133 | -o-transform: translateZ(0);
134 | transform: translateZ(0);
135 | -webkit-touch-callout: none;
136 | -webkit-user-select: none;
137 | -moz-user-select: none;
138 | -ms-user-select: none;
139 | user-select: none;
140 | -webkit-text-size-adjust: none;
141 | -moz-text-size-adjust: none;
142 | -ms-text-size-adjust: none;
143 | -o-text-size-adjust: none;
144 | text-size-adjust: none;
145 | }
146 |
--------------------------------------------------------------------------------
/src/view/pickerMobile/mobilePickerDemo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
10 |
时间格式设置说明:
11 |
* d without 0 * yy 2016 16
12 |
* dd with 01 * yyyy 2016
13 |
* M without 0 * h 12am 12pm 1 2
14 |
* MM with 03 * hh 12am 12pm 01 02
15 |
* m minute 1
16 |
* mm minute 01 * H 24h 1 2 3 * HH 24 01 02
17 |
年月日分隔符只能 是 '/' 或者 '- ' 小时分钟 英文冒号':'
18 |
时间12小时制暂未实现,年份取最后2位暂未实现
19 |
20 |
21 |
22 |
23 |
24 |
90 |
122 |
--------------------------------------------------------------------------------
/src/components/datepickerMobile/pickerMobile.scss:
--------------------------------------------------------------------------------
1 | @import "../../../static/style/coreCss/px2rem.scss";
2 | $control-btn:#2c97f1;
3 | $checked-date:#333;
4 | $unchecked-date:#a8a8a8;
5 | $border-color:#e1e1e1;
6 | $picker-bg:#fff;
7 | $checked-font-size:px2rem(48px);
8 | $unchecked-font-size:px2rem(40px);
9 | $panel-bg:#eeeeee;
10 |
11 |
12 | /*use this should set position relative*/
13 | @mixin border2pxBT{
14 | &:before{
15 | content: '';
16 | position: absolute;
17 | left: 0;
18 | background: $border-color;
19 | width: 100%;
20 | height: 2px;
21 | -webkit-transform: scaleY(0.5);
22 | transform: scaleY(0.5);
23 | -webkit-transform-origin: 0 0;
24 | transform-origin: 0 0;
25 | }
26 | &:after{
27 | content: '';
28 | position: absolute;
29 | left: 0;
30 | background: $border-color;
31 | width: 100%;
32 | height: 2px;
33 | -webkit-transform: scaleY(0.5);
34 | transform: scaleY(0.5);
35 | -webkit-transform-origin: 0 0;
36 | transform-origin: 0 0;
37 | }
38 | }
39 | @mixin border1pxBT{
40 | &:before{
41 | content: '';
42 | position: absolute;
43 | left: 0;
44 | background: $border-color;
45 | width: 100%;
46 | height: 1px;
47 | -webkit-transform: scaleY(0.5);
48 | transform: scaleY(0.5);
49 | -webkit-transform-origin: 0 0;
50 | transform-origin: 0 0;
51 | }
52 | &:after{
53 | content: '';
54 | position: absolute;
55 | left: 0;
56 | background: $border-color;
57 | width: 100%;
58 | height: 1px;
59 | -webkit-transform: scaleY(0.5);
60 | transform: scaleY(0.5);
61 | -webkit-transform-origin: 0 0;
62 | transform-origin: 0 0;
63 | }
64 | }
65 | @mixin border2pxT{
66 | &:before{
67 | content: '';
68 | position: absolute;
69 | left: 0;
70 | background: $border-color;
71 | width: 100%;
72 | height: 2px;
73 | -webkit-transform: scaleY(0.5);
74 | transform: scaleY(0.5);
75 | -webkit-transform-origin: 0 0;
76 | transform-origin: 0 0;
77 | }
78 | }
79 | @mixin border2pxB{
80 | &:after{
81 | content: '';
82 | position: absolute;
83 | left: 0;
84 | background: $border-color;
85 | width: 100%;
86 | height: 2px;
87 | -webkit-transform: scaleY(0.5);
88 | transform: scaleY(0.5);
89 | -webkit-transform-origin: 0 0;
90 | transform-origin: 0 0;
91 | }
92 | }
93 | @mixin border1pxT{
94 | &:before{
95 | content: '';
96 | position: absolute;
97 | left: 0;
98 | background: $border-color;
99 | width: 100%;
100 | height: 1px;
101 | -webkit-transform: scaleY(0.5);
102 | transform: scaleY(0.5);
103 | -webkit-transform-origin: 0 0;
104 | transform-origin: 0 0;
105 | }
106 | }
107 | @mixin border1pxB{
108 | &:after{
109 | content: '';
110 | position: absolute;
111 | left: 0;
112 | background: $border-color;
113 | width: 100%;
114 | height: 1px;
115 | -webkit-transform: scaleY(0.5);
116 | transform: scaleY(0.5);
117 | -webkit-transform-origin: 0 0;
118 | transform-origin: 0 0;
119 | }
120 | }
121 | .mobile-mask{
122 | position: absolute;
123 | top: 0;
124 | bottom: 0;
125 | left: 0;
126 | right: 0;
127 | overflow: hidden;
128 | .mobile-picker{
129 | position: absolute;
130 | overflow: hidden;
131 | bottom: 0;
132 | height: px2rem(520px);
133 | width: 100%;
134 | .picker-control{
135 | width: 100%;
136 | @include border1pxB;
137 | height: px2rem(90px);
138 | display: flex;
139 | flex-wrap: nowrap;
140 | justify-content: space-between;
141 | background: $picker-bg;
142 | .control-cancel,.control-ok,.control-date{
143 | line-height:px2rem(90px);
144 | color: $control-btn;
145 | width: px2rem(160px);
146 | padding:0 px2rem(20px);
147 | font-size: px2rem(30px);
148 | text-align: center;
149 | }
150 | .control-date{
151 | padding:0;
152 | width:px2rem(480px);
153 | text-align: center;
154 | font-size: px2rem(34px);
155 | display: flex;
156 | flex-wrap: nowrap;
157 | justify-content: center;
158 | }
159 | }
160 | .picker-panel{
161 | height: px2rem(430px);
162 | overflow: hidden;
163 | @include border1pxT;
164 | background: $picker-bg;
165 | .panel-box{
166 | height: inherit;
167 | overflow: hidden;
168 | padding: px2rem(20px) px2rem(55px);
169 | box-shadow: inset 0px 0px 43px #fff;
170 | display: -webkit-box;
171 | display: -ms-flexbox;
172 | display: flex;
173 | -ms-flex-wrap: nowrap;
174 | flex-wrap: nowrap;
175 | -ms-flex-pack: distribute;
176 | justify-content: space-around;
177 | font-size: px2rem(40px);
178 | text-align: center;
179 | }
180 | .box-year,.box-month,.box-day,.box-hour,.box-minute{
181 | overflow: hidden;
182 | width: 100%;
183 | text-align: center;
184 | position: relative;
185 | height: px2rem(400px);
186 | }
187 | .year-list,.month-list,.day-list,.minute-list,.hour-list{
188 | position: absolute;
189 | top:-1px;
190 | z-index: 1;
191 | overflow: visible;
192 | left: 0;
193 | right: 0;
194 | color: $checked-date;
195 | font-size: px2rem(38px);
196 | -webkit-transform-style: preserve-3d;
197 | transform-style: preserve-3d;
198 | .list-div{
199 | text-shadow: 0 1px 1px rgba(102, 102, 102, 0.6);
200 | height: px2rem(68px);
201 | line-height: px2rem(68px);
202 | top:0;
203 | width: 100%;
204 | text-align: center;
205 | background: $picker-bg;
206 | white-space: nowrap;
207 | overflow: hidden;
208 | text-overflow: ellipsis;
209 | }
210 | .canNotChoose{
211 | color: $unchecked-date;
212 | text-shadow: none;
213 | }
214 | }
215 | .check-line{
216 | position: absolute;
217 | left: 0;
218 | right: 0;
219 | top:px2rem(180px);
220 | height: px2rem(68px);
221 | &:before{
222 | content: '';
223 | position: absolute;
224 | left: 0;
225 | background: $control-btn;
226 | width: 100%;
227 | height: 2px;
228 | -webkit-transform: scaleY(0.5);
229 | transform: scaleY(0.5);
230 | -webkit-transform-origin: 0 0;
231 | transform-origin: 0 0;
232 | z-index: 3;
233 | }
234 | &:after{
235 | content: '';
236 | position: absolute;
237 | top:px2rem(68);
238 | left: 0;
239 | background: $control-btn;
240 | width: 100%;
241 | height: 2px;
242 | -webkit-transform: scaleY(0.5);
243 | transform: scaleY(0.5);
244 | -webkit-transform-origin: 0 0;
245 | transform-origin: 0 0;
246 | z-index:3;
247 | }
248 | }
249 | .year-checked,.month-checked,.day-checked,.hour-checked,.minute-checked{
250 | height: px2rem(68px);
251 | line-height:px2rem(68px);
252 | overflow: hidden;
253 | position: absolute;
254 | top:px2rem(180px);
255 | left: 0;
256 | right: 0;
257 | /* border-top: 1px solid $control-btn ;
258 | border-bottom: 1px solid $control-btn;*/
259 | z-index: 2;
260 | font-size: px2rem(48px);
261 | -webkit-transform: translate3d(0px, 0px, 88px);
262 | transform: translate3d(0px, 0px, 88px);
263 | }
264 | .year-wheel,.month-wheel,.day-wheel,.hour-wheel,.minute-wheel{
265 | position: absolute;
266 | overflow: visible;
267 | height: px2rem(68px);
268 | font-size: px2rem(36px);
269 | top:px2rem(180px);
270 | left: 0;
271 | right: 0;
272 | color:$unchecked-date;
273 | -webkit-transform-style: preserve-3d;
274 | transform-style: preserve-3d;
275 | .wheel-div{
276 | height: px2rem(68px);
277 | line-height: px2rem(68px);
278 | position: absolute;
279 | top:0;
280 | width: 100%;
281 | text-align: center;
282 | -webkit-backface-visibility: hidden;
283 | backface-visibility: hidden;
284 | white-space: nowrap;
285 | overflow: hidden;
286 | text-overflow: ellipsis;
287 | }
288 | }
289 | }
290 | }
291 | }
292 |
293 |
294 | .picker-Toggle-enter-active,.picker-Toggle-leave-active {
295 | -webkit-transition: all .75s cubic-bezier(0.190, 1.000, 0.220, 1.000);
296 | transition: all .75s cubic-bezier(0.190, 1.000, 0.220, 1.000)
297 | }
298 | .picker-Toggle-enter {
299 | -webkit-transform: translateY(100%);
300 | transform: translateY(100%);
301 | opacity: 0;
302 | }
303 |
304 | .picker-Toggle-leave-active {
305 | -webkit-transform: translateY(100%);
306 | transform: translateY(100%);
307 | opacity: 0;
308 | }
309 | /*-----*/
310 | .toggle-mask-enter-active,.toggle-mask-leave-active {
311 | -webkit-transition: all .75s cubic-bezier(0.190, 1.000, 0.220, 1.000);
312 | transition: all .75s cubic-bezier(0.190, 1.000, 0.220, 1.000)
313 | }
314 | .toggle-mask-enter {
315 | opacity: 1;
316 | }
317 |
318 | .toggle-mask-leave-active {
319 | opacity: 1;
320 | }
321 | /*------*/
322 |
--------------------------------------------------------------------------------
/src/components/datepickerMobile/pickerMobile.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{{'Cancel'|btnF(language)}}
8 |
9 | {{tmpYear}}
10 | -
11 | {{Format.month=='MM'&&(tmpMonth+1)<10?0:''}}{{tmpMonth+1}}
12 | -
13 | {{Format.day=='dd'&&tmpDay<10?0:''}}{{tmpDay}}
14 |
15 |
{{'Confirm'|btnF(language)}}
16 |
17 |
18 |
{{'Cancel'|btnF(language)}}
19 |
20 | {{tmpYear}}
21 | -
22 | {{Format.month=='MM'&&(tmpMonth+1)<10?0:''}}{{tmpMonth+1}}
23 | -
24 | {{Format.day=='dd'&&tmpDay<10?0:''}}{{tmpDay}}
25 |
26 | {{tmpHour}}
27 | :
28 | {{tmpMinute}}
29 |
30 |
{{'Next'|btnF(language)}}
31 |
32 |
33 |
{{'Previous'|btnF(language)}}
34 |
35 | {{tmpYear}}
36 | -
37 | {{Format.month=='MM'&&(tmpMonth+1)<10?0:''}}{{tmpMonth+1}}
38 | -
39 | {{Format.day=='dd'&&tmpDay<10?0:''}}{{tmpDay}}
40 |
41 | {{tmpHour}}
42 | :
43 | {{tmpMinute}}
44 |
45 |
{{'Confirm'|btnF(language)}}
46 |
47 |
48 |
49 |
51 |
52 |
53 |
54 |
{{year.value}}{{language=='cn'?'年':''}}
55 |
56 |
57 |
58 |
59 |
{{year.value}}{{language=='cn'?'年':''}}
61 |
62 |
63 |
64 |
66 |
67 |
68 |
69 |
{{month.value|monthF(language)}}
70 |
71 |
72 |
73 |
74 |
{{month.value|monthF(language)}}
76 |
77 |
78 |
79 |
81 |
82 |
83 |
84 |
85 | {{Format.day=='dd'&&day.value<10?'0':''}}{{day.value}}{{day.value|weekF(tmpYear,tmpMonth,language)}}
86 |
87 |
88 |
89 |
90 |
92 | {{Format.day=='dd'&&day.value<10?'0':''}}{{day.value}}{{day.value|weekF(tmpYear,tmpMonth,language)}}
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
{{Format.hour=='HH'&&hour.value<10?'0':''}}{{hour.value}}
101 |
102 |
103 |
104 |
{{Format.hour=='HH'&&hour.value<10?'0':''}}{{hour.value}}
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
{{Format.minute=='mm'&&minute.value<10?'0':''}}{{minute.value}}
114 |
115 |
116 |
117 |
{{Format.minute=='mm'&&minute.value<10?'0':''}}{{minute.value}}
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
922 |
923 |
924 |
--------------------------------------------------------------------------------