mobile-select
Version:
A multi-function mobile phone scrolling selector, support single to multi-select, support multi-level cascade, provide custom callback function, provide update function redraw, relocation function, compatible pc drag and so on.
181 lines (171 loc) • 3.34 kB
text/less
@color: #1e83d3;
.clearfix() {
&:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
}
.nowrap() {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.ms-mobile-select {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 0;
opacity: 0;
visibility: hidden;
-webkit-transition: opacity 0.4s, z-index 0.4s;
transition: opacity 0.4s, z-index 0.4s;
transform: translate(0, 0);
* {
margin: 0;
padding: 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.ms {
&-gray-layer {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.7);
z-index: 888;
display: block;
}
&-content {
width: 100%;
display: block;
position: fixed;
z-index: 889;
color: black;
-webkit-transition: all 0.4s;
transition: all 0.4s;
bottom: -350px;
left: 0;
background: white;
}
&-fix-width {
.clearfix();
width: 90%;
margin: 0 auto;
position: relative;
}
&-btn-bar {
border-bottom: 1px solid #dcdcdc;
font-size: 15px;
height: 45px;
position: relative;
text-align: center;
line-height: 45px;
}
&-cancel,
&-ensure {
height: 45px;
width: 55px;
cursor: pointer;
position: absolute;
top: 0;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
&-cancel {
left: 0;
color: #666;
}
&-ensure {
right: 0;
color: @color;
}
&-title {
font-size: 15px;
padding: 0 15%;
.nowrap();
}
&-panel {
.clearfix();
}
&-wheels {
width: 100%;
height: 200px;
overflow: hidden;
}
&-wheel {
position: relative;
z-index: 0;
float: left;
width: 50%;
height: 200px;
overflow: hidden;
-webkit-transition: width 0.3s ease;
transition: width 0.3s ease;
}
&-select-container {
display: block;
text-align: center;
li {
font-size: 15px;
display: block;
height: 40px;
line-height: 40px;
cursor: pointer;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
}
&-select-line {
height: 40px;
width: 100%;
position: absolute;
top: 80px;
pointer-events: none;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border-top: 1px solid #dcdcdc;
border-bottom: 1px solid #dcdcdc;
}
&-shadow-mask {
position: absolute;
top: 0;
width: 100%;
height: 200px;
background: linear-gradient(
to bottom,
#fffffff5,
#ffffffcc 25%,
#ffffff00 49%,
#ffffff00 51%,
#ffffffcc 75%,
#fffffff5
);
opacity: 0.9;
pointer-events: none;
}
}
}
.ms-mobile-select.ms-show {
opacity: 1;
z-index: 10000;
visibility: visible;
.ms-content {
bottom: 0;
}
}
.ms-default-trigger {
min-height: 1em;
color: #888;
}
/** Prevent Page Scrolling When a Modal is Open */
body.ms-show {
overflow-y: hidden;
}