├── .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 | 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 | 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 | 129 | 922 | 923 | 924 | --------------------------------------------------------------------------------