UNPKG

79.1 kBtext/lessView Raw
1// 尺寸
2@px-scale:1;
3@1px:1px * @px-scale;
4@2px:2px * @px-scale;
5@3px:3px * @px-scale;
6@4px:4px * @px-scale;
7@5px:5px * @px-scale;
8@6px:6px * @px-scale;
9@7px:7px * @px-scale;
10@8px:8px * @px-scale;
11@9px:9px * @px-scale;
12@10px:10px * @px-scale;
13@11px:11px * @px-scale;
14@12px:12px * @px-scale;
15@13px:13px * @px-scale;
16@14px:14px * @px-scale;
17@15px:15px * @px-scale;
18@16px:16px * @px-scale;
19@17px:17px * @px-scale;
20@18px:18px * @px-scale;
21@19px:19px * @px-scale;
22@20px:20px * @px-scale;
23@21px:21px * @px-scale;
24@22px:22px * @px-scale;
25@23px:23px * @px-scale;
26@24px:24px * @px-scale;
27@25px:25px * @px-scale;
28@26px:26px * @px-scale;
29@27px:27px * @px-scale;
30@28px:28px * @px-scale;
31@29px:29px * @px-scale;
32@30px:30px * @px-scale;
33@31px:31px * @px-scale;
34@32px:32px * @px-scale;
35@33px:33px * @px-scale;
36@34px:34px * @px-scale;
37@35px:35px * @px-scale;
38@36px:36px * @px-scale;
39@37px:37px * @px-scale;
40@38px:38px * @px-scale;
41@39px:39px * @px-scale;
42@40px:40px * @px-scale;
43@41px:41px * @px-scale;
44@42px:42px * @px-scale;
45@43px:43px * @px-scale;
46@44px:44px * @px-scale;
47@45px:45px * @px-scale;
48@46px:46px * @px-scale;
49@47px:47px * @px-scale;
50@48px:48px * @px-scale;
51@49px:49px * @px-scale;
52@50px:50px * @px-scale;
53@51px:51px * @px-scale;
54@52px:52px * @px-scale;
55@53px:53px * @px-scale;
56@54px:54px * @px-scale;
57@55px:55px * @px-scale;
58@56px:56px * @px-scale;
59@57px:57px * @px-scale;
60@58px:58px * @px-scale;
61@59px:59px * @px-scale;
62@60px:60px * @px-scale;
63@61px:61px * @px-scale;
64@62px:62px * @px-scale;
65@63px:63px * @px-scale;
66@64px:64px * @px-scale;
67@65px:65px * @px-scale;
68@66px:66px * @px-scale;
69@67px:67px * @px-scale;
70@68px:68px * @px-scale;
71@69px:69px * @px-scale;
72@70px:70px * @px-scale;
73@71px:71px * @px-scale;
74@72px:72px * @px-scale;
75@73px:73px * @px-scale;
76@74px:74px * @px-scale;
77@75px:75px * @px-scale;
78@76px:76px * @px-scale;
79@77px:77px * @px-scale;
80@78px:78px * @px-scale;
81@79px:79px * @px-scale;
82@80px:80px * @px-scale;
83@81px:81px * @px-scale;
84@82px:82px * @px-scale;
85@83px:83px * @px-scale;
86@84px:84px * @px-scale;
87@85px:85px * @px-scale;
88@86px:86px * @px-scale;
89@87px:87px * @px-scale;
90@88px:88px * @px-scale;
91@89px:89px * @px-scale;
92@90px:90px * @px-scale;
93@91px:91px * @px-scale;
94@92px:92px * @px-scale;
95@93px:93px * @px-scale;
96@94px:94px * @px-scale;
97@95px:95px * @px-scale;
98@96px:96px * @px-scale;
99@97px:97px * @px-scale;
100@98px:98px * @px-scale;
101@99px:99px * @px-scale;
102@100px:100px * @px-scale;
103@120px:120px * @px-scale;
104@150px:150px * @px-scale;
105@170px:170px * @px-scale;
106@200px:200px * @px-scale;
107@215px:215px * @px-scale;
108@250px:250px * @px-scale;
109@264px:264px * @px-scale;
110@270px:270px * @px-scale;
111@300px:300px * @px-scale;
112@750px:750px * @px-scale;
113@960px:960px * @px-scale;
114@1122px:1122px * @px-scale;
115@1136px:1136px * @px-scale;
116
117@animation-duration: 300ms;
118
119// 文字尺寸
120@font-size-xl:@20px;
121@font-size-lg:@16px;
122@font-size-md:@14px;
123@font-size-sm:@12px;
124
125// Layout间距
126@wingblank-xl: @24px;
127@wingblank-lg: @20px;
128@wingblank-md: @12px;
129@wingblank-sm: @8px;
130@wingblank-xs: @4px;
131
132@whitespace-xl: @20px;
133@whitespace-lg: @16px;
134@whitespace-md: @10px;
135@whitespace-sm: @6px;
136@whitespace-xs: @2px;
137
138// 兼容样式设置
139::selection{
140 background:@primary-bg;
141 color:@primary-color;
142}
143::-webkit-input-placeholder{
144 color:@placeholder;
145}
146
147.setHorizontalTb(){
148 -webkit-writing-mode:horizontal-tb;
149}
150.setHorizontalBt(){
151 -webkit-writing-mode:horizontal-bt;
152}
153.setVerticalRl(){
154 -webkit-writing-mode:vertical-rl;
155}
156.setVerticalLr(){
157 -webkit-writing-mode:vertical-lr;
158}
159.setNoselect(){
160 -webkit-touch-callout:none;
161 -webkit-user-select:none;
162 user-select:none;
163}
164
165// 设置body样式
166*{
167 margin:0;
168 padding:0;
169}
170html,body {
171 position: absolute;
172 top: 0;
173 right: 0;
174 bottom: 0;
175 left: 0;
176 overflow: hidden;
177}
178// 键盘弹出后防止高度太小而使界面挤在一起
179// body{
180// min-height: 440px;
181// }
182// @media (max-height: 450px) {
183// html,body{
184// position: fixed;
185// }
186// }
187/*
188// 也可以在页面内使用
189@media (max-height: 576px) {
190 display: none;
191}
192*/
193body{
194 font-size:@font-size-md;
195 font-family:@font-family;
196
197 color:@body-color;
198 word-break: break-all;
199 word-wrap: break-word;
200
201 max-width: 540px;
202 margin: 0 auto;
203
204 -webkit-touch-action: manipulation; // 移动端快速点击,代替FastClick
205 -webkit-tap-highlight-color: rgba(0,0,0,0); // ios点击时的半透明背景,设置它为透明色
206 -webkit-text-size-adjust: none; // 禁止文字自适应大小
207 -webkit-touch-callout: none; // 禁用系统菜单
208 -webkit-overflow-scrolling:touch; // 平滑滚动
209 -webkit-transform: translate3d(0,0,0); // 据说可以解决ios弹性短暂白屏的问题
210 -webkit-backface-visibility:hidden;
211}
212
213// 一个像素的线
214.setContentLine(@b:@border){
215 content: '';
216 display: block;
217 position: absolute;
218 background-color: @b;
219 // 兼容UC线条不显示的BUG
220 z-index:1;
221 overflow: hidden;
222 -webkit-backface-visibility:hidden;
223}
224
225// Pages
226// @safe-bottom: calc(~"constant(safe-area-inset-bottom) - 49px"); // ios11安全区域: 向刘海再移动49px
227@safe-bottom: constant(safe-area-inset-bottom); // ios11安全区域: 刘海留白,内容只显示在安全区域
228.setPages(){
229 display: block;
230 box-sizing: border-box;
231 overflow: hidden;
232
233 position: absolute;
234 top: 0;
235 right: 0;
236 bottom: 0;
237 left: 0;
238 z-index:0;
239
240 // iphoneX、iphoneXs、iphoneXR, 微信头部高度88, 小程序头部高度87, 减掉头部高度为实际高度
241 @media only screen and (device-width: 375px) and (height: 724px) and (-webkit-device-pixel-ratio: 3) {
242 bottom: 34px;
243 }
244 @media only screen and (device-width: 375px) and (height: 725px) and (-webkit-device-pixel-ratio: 3) {
245 bottom: 34px;
246 }
247 @media only screen and (device-width: 414px) and (height: 808px) and (-webkit-device-pixel-ratio: 3) {
248 bottom: 34px;
249 }
250 @media only screen and (device-width: 414px) and (height: 807px) and (-webkit-device-pixel-ratio: 3) {
251 bottom: 34px;
252 }
253 @media only screen and (device-width: 414px) and (height: 808px) and (-webkit-device-pixel-ratio:2) {
254 bottom: 34px;
255 }
256 @media only screen and (device-width: 414px) and (height: 807px) and (-webkit-device-pixel-ratio:2) {
257 bottom: 34px;
258 }
259}
260
261// Page
262.setPage(){
263 // flex布局
264 .flex;
265 .flex-vertical;
266
267 // 共用
268 position: absolute;
269 top: 0;
270 bottom: 0;
271 left: 0;
272 right: 0;
273 z-index: 1;
274 box-sizing: border-box;
275 overflow: hidden;
276 background-color: @body-bg;
277 &:extend(.popup-animation all);
278}
279
280// Header
281.setHeader(){
282 // 绝对定布局
283 // position:absolute;
284 // top:0;
285 // left: 0;
286 // right: 0;
287 // z-index:1;
288 // &+.container{
289 // top:@44px;
290 // }
291
292 // flex布局
293 position: relative;
294}
295
296// Container
297.setContainer(){
298 // 绝对定布局
299 // position:absolute;
300 // top: 0;
301 // bottom: 0;
302 // left: 0;
303 // right: 0;
304 // overflow: auto;
305
306 // flex布局
307 position: relative;
308 .flex-1;
309 overflow: auto;
310}
311
312// Footer
313.setFooter(){
314 // 绝对定布局
315 // position:absolute;
316 // left: 0;
317 // right: 0;
318 // z-index:1;
319 // bottom:0;
320
321 // flex布局
322 position: relative;
323}
324
325
326// 基础
327@font-family:Arial,"Microsoft Yahei";
328@body-bg:#f5f5f9;
329@body-color:#333;
330
331@sub:#9e9e9e;
332@placeholder:#b6b6b6;
333@border:#e5e5e5;
334@dpborder:#e5e5e5;
335
336a {
337 color: #459df5;
338 &:active{
339 opacity: 0.5;
340 }
341}
342
343@mask-bg:rgba(0,0,0,.4);
344
345// 常用颜色
346@primary-color:white;
347@primary-bg:#EB464A;
348@primary-border:#EB464A;
349@primary-property: none;
350@primary-value: none;
351@primary-color-active:white;
352@primary-bg-active:#EB464A;
353@primary-border-active:#EB464A;
354@primary-property-active: none;
355@primary-value-active: none;
356
357@submit-color:white;
358@submit-bg:#68c75f;
359@submit-border:#68c75f;
360@submit-property: none;
361@submit-value: none;
362@submit-color-active:white;
363@submit-bg-active:lighten(@submit-bg,20%);
364@submit-border-active:lighten(@submit-bg,20%);
365@submit-property-active: none;
366@submit-value-active: none;
367
368@cancel-color:white;
369@cancel-bg:#F86868;
370@cancel-border:#F86868;
371@cancel-property: none;
372@cancel-value: none;
373@cancel-color-active:white;
374@cancel-bg-active:lighten(@cancel-bg,20%);
375@cancel-border-active:lighten(@cancel-bg,20%);
376@cancel-property-active: none;
377@cancel-value-active: none;
378
379@success-color:white;
380@success-bg:#4DDB63;
381@success-border:#4DDB63;
382@success-property: none;
383@success-value: none;
384@success-color-active:white;
385@success-bg-active:lighten(@success-bg,20%);
386@success-border-active:lighten(@success-bg,20%);
387@success-property-active: none;
388@success-value-active: none;
389
390@info-color:white;
391@info-bg:#39ABF2;
392@info-border:#39ABF2;
393@info-property: none;
394@info-value: none;
395@info-color-active:white;
396@info-bg-active:lighten(@info-bg,20%);
397@info-border-active:lighten(@info-bg,20%);
398@info-property-active: none;
399@info-value-active: none;
400
401@link-color:white;
402@link-bg:#0076FF;
403@link-border:#0076FF;
404@link-property: none;
405@link-value: none;
406@link-color-active:white;
407@link-bg-active:lighten(@link-bg,20%);
408@link-border-active:lighten(@link-bg,20%);
409@link-property-active: none;
410@link-value-active: none;
411
412@warn-color:white;
413@warn-bg:#f4984e;
414@warn-border:#f4984e;
415@warn-property: none;
416@warn-value: none;
417@warn-color-active:white;
418@warn-bg-active:lighten(@warn-bg,20%);
419@warn-border-active:lighten(@warn-bg,20%);
420@warn-property-active: none;
421@warn-value-active: none;
422
423@hint-color:white;
424@hint-bg:#D29BCE;
425@hint-border:#D29BCE;
426@hint-value: none;
427@hint-color-active:white;
428@hint-bg-active:lighten(@hint-bg,20%);
429@hint-border-active:lighten(@hint-bg,20%);
430@hint-value-active: none;
431
432@disabled-color:#adadad;
433@disabled-bg:#838792;
434@disabled-border:#838792;
435@disabled-property: none;
436@disabled-value: none;
437@disabled-color-active:#adadad;
438@disabled-bg-active:#838792;
439@disabled-border-active:#838792;
440@disabled-property-active: none;
441@disabled-value-active: none;
442
443@badge-bg:#ff5656;
444@badge-color:white;
445
446@random1-bg:#53c6fd;
447@random2-bg:#ffae02;
448@random3-bg:#3ae3ea;
449@random4-bg:#ff6f36;
450@random5-bg:#cf7af3;
451@random6-bg:#4cd32e;
452@random7-bg:#4587f7;
453@random8-bg:#00c2eb;
454@random9-bg:#ff618f;
455@random10-bg:#21d9a1;
456
457// Bg背景
458.setBgNoImg(){
459 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKoAAACqCAMAAAAKqCSwAAAATlBMVEXw8PDZ2dnr6+u2trb////d3d3n5+fh4eHq6url5eXW1tbR0dHGxsbv7+/CwsLj4+Pu7u7IyMi+vr7Ly8u7u7vY2NjOzs7f39+4uLj19fVfdL0JAAADP0lEQVR42u3ZYW+jMAyAYceuQ0IoJIEB+/9/9BZYOtox7XS3ckHnR2rVj2+R3UQqCCGEEEIIIYQQQgghhBBCPLCs/hJbOIRVP+CYVlY/gOEI6kfADkmVVEmVVEn9TR16M50hVV8Wr1PxqXDJusJT8fJhKjqVLxuvRaeayxaXnPp62bLnSdXnSS36qeJ5ZnU6zy+Agk1qVXbqZlpN4aeVUte8U8XfAZRiA69gz3CzOtV9VVL/99RO80lSLaLhU6RqTKbyU9ngqio9dTKY2bJTJ9ywJad2eEdzsakWHxguNFXjJ2YqMZUN7qnKS2X8Qlda6oRf0v8i1fI3q7/P8OGpGnH6dvX3W+EID2vTqR0Gv2HgCI8npt1b/W/BEdSqwkx/Li0qtds7gvJ3KCrVYrLX2mFZqXr3CEosFpXKZvcISjQWlbq/NnZdqKJSK9ynU2lZqfgVg3iWVJTUP+fxB3jYU2KrByGEEEIIIf530wQfEP6EZwNPp60dgn2D4C2Pw4Cpt7oDb7B+gJBwe4U3hhieLtI7VkRD6+wSQHdSjabYbkTSkLzQcaloh94kXg0G3nmd9FGvYEmt0nvQsKiOTk3C4LsZAUANcG+MkOXUhuoE/0mqpdg31Pe9rqlJeshC+5jqqB/HsZ23qZhYUoh4hae6Oud6Gp0z4+Bc+/aCrGnuU31DsUHgud4OwIaCp6sIAaEZAcZ27V/E/vpuTeXY+TA4crBN5Q8Gnor70EQaiCxxTg30oF8HwAO+zDQof79WR+F+dCOxNePgc2qlkpqcol4l3ZJa1c0ca+3mOXBOrQkO1UVMfQDgGripZw9Ub2Z1bF1VTwCoQsipbuYM4ek6t8Fw0/Zwn7os4RBf/GZWe7qx8HQ1NTdDgMwQP6Ymvo7btWoDrviYVA9Ze0v17ew/pYaeEa6bp+pJwao6+qnOt9SRFORU5d5TuR+odd1HKpM5NrV+yWLIBwM5uKWO7ccAdHVL8ZbaRDg2Fa9ZG9aeSD0ka3DsUyqbd/btE5Ne+tTBqRtLqqOBYdHMTQiROKXeS6k4NHBwatVlMayz6WGlXQhhnCClKruhltRg7lLPQv4MEEIIIYQQQgghhBBCCCGEECf1C/gmN8hELxs9AAAAAElFTkSuQmCC');
460}
461.setBgNoAvatar(){
462 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAAOVBMVEXDzNb5+/z3+vv2+Pr19/nT2uLK0tvX3eTM1N3Hz9ny9fjv8vXi5+ze4+nq7/Ln6/DP19/k6e7Z4OZ/ZsYlAAACPElEQVRYw+2X63aDIBCE5SJGEG/v/7CNLHQ3BKwu/enUSvYk+c4AybDpHj169OjRoxO9er9t027+BTbuTiQ534wzmzxIUsK/sEMbr9dv0PsvCB7OYwNvSqB4Bc18nkcSjHDb2PMFDNAQK8TKBDpgRRqypWMaRArcse5ZwBncyeMWRqx5q6gESooPadbXDRcPkLQ2rCUMHNxbWq+8PYmeoita9ywgKlJRPXcNJTFI61fHkAjCXaE1IyDMFN0gitSTuT1hjRuMeYi1vetxQUdgK6/vBu0sP6cq8trfjVYgICmv95vAATEwZPX9TNT4XqB91ooR/6KWh8xjwMl6HgrL+WTbeh5aw2oZJlXJQ88+lst5yD+Y13IeNnQjrpSHuqWNK+Vh3zVo+M5D39h+qSwP9+YGcaZ56NauXYrk4atr10Dz0HftcjQPbTvPf+Rhu8U+z8O+cQFVnodyaMCZqZSHk+HRxn6p5eEymNu0fRZn/aFw+3gnE0K01vtDIC/r5aTO+8FavZjrZwntB+u1umLS5flXqy+eflupH4wq9IvLtSgICiAliVJJJz78lfm//aAsSSE0brgyl9oFUWKpNARFh+eTjt+NbxRc8rhHrgLmeeu5J29AiKBcuLAqvF6P54cmcVaVRKgQ9U7M4sZSmj4u/b7CgMyk6g+1JdiLMwKUTqQoiiQmbXkBZfSHxgINRbBJkenLC5im+2vuGAo84jLpVfr9rtAfoiqiW364mL946/FEclfg2dLMdYLSk+YHgF8TNU/EqwEAAAAASUVORK5CYII=');
463}
464.setBgTel(){
465 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAXVBMVEUAAABv0Tp11UCK2U5v0Tpw0Ttv0Ttw0Dtw0Txv0Tpw0jtv0D1y0z1v0Dr////x+uzq+OOC1lK055mb33Z500j1/PHI7bS66aGU3G3Z8st81Ex00UHQ77/B6qqK2F+9wBsfAAAADXRSTlMA8xgG49nHv5aVgkct8zFIpgAAAPBJREFUOMuFk9kSwiAMRaGUUkqB7otV//8zBVk1OtynzOSQhSQoiQjOKMaUcUEQVNViGYXb6stNOudOSEc+njcSqMmC9LX8obqP750fEj4GCfFhFldHJ/+qeyfw9e96BgC2SVpnP5VSByBaU4EPsBlguEAIgoQ3tTKCSQTi3rJ+vQCAI5ZFmCQQQ1SmGnYIUBSGNBpgHWGjEZCTbeMGARrtExI2BYv2MlhiNMZ8ZUXyRI/a1rFPWg1HalPIjBhU0Bw/iuCMWM4A6PDVYVipF6eHH1Ycd0qzabXejzDu0sIUV660tMW1Lx9O+fTKx1s8/xcLZSlX4fSWEwAAAABJRU5ErkJggg==');
466}
467.bg-no-img{
468 .setBgNoImg();
469}
470.bg-no-avatar{
471 .setBgNoAvatar();
472}
473.bg-tel{
474 .setBgTel();
475}
476
477
478
479
480
481// Icon 图标
482.icon{
483 position:relative;
484 font-style:normal;
485 background-size: contain;
486 background-repeat: no-repeat;
487 background-position:center;
488 .inline-flex;
489 .flex-middle;
490 .flex-center;
491
492 font-size:@24px;
493 width:@24px;
494 height:@24px;
495
496 &:before{
497 position: absolute;
498 top: 50%;
499 left: 50%;
500 transform:translate3d(-50%,-50%,0);
501 }
502}
503
504
505
506
507// ImgMark
508.setImgmark(){
509 position: relative;
510 overflow: hidden;
511 background-color: #F2F2F2;
512}
513.setImgmarkWrapper(){
514 position: absolute;
515 left: 50%;
516 top: 50%;
517 transform: translate(-50%, -50%);
518 display: none;
519 background-size: cover;
520 background-position: center;
521 background-repeat: no-repeat;
522 &.active{
523 display: block;
524 }
525}
526// 加载中
527@-webkit-keyframes rotateIn {
528 0% {
529 -webkit-transform-origin: center center;
530 -webkit-transform: rotate(0);
531 }
532
533 100% {
534 -webkit-transform-origin: center center;
535 -webkit-transform: rotate(360deg);
536 }
537}
538.setImgmarkLoading(){
539 position: absolute;
540 left: 50%;
541 top: 50%;
542 transform: translate(-50%, -50%);
543 display: none;
544 &.active{
545 display: block;
546 }
547}
548.setImgmarkLoadingIcon(){
549 background-image: url(//res.waiqin365.com/d/seedsui/icon/loading.png);
550 background-size: contain;
551 background-position: center;
552 background-repeat: no-repeat;
553 width: @24px;
554 height: @24px;
555 animation: rotateIn 1s linear infinite;
556}
557// 加载错误
558.setImgmarkError(){
559 .flex;
560 .flex-middle;
561 .flex-center;
562 .flex-vertical;
563 height: 100%;
564 display: none;
565 &.active{
566 .flex;
567 }
568}
569.setImgmarkErrorIcon(){
570 font-family: iconfont;
571 width: 60px;
572 height: 60px;
573 font-size: 60px;
574 &:extend(.icon-pic-error all);
575 color: #D8D8D8;
576}
577.setImgmarkErrorCaption(){
578 margin-top: 4px;
579 &:extend(.font-size-sm);
580 color: #D8D8D8;
581}
582
583
584
585
586
587
588
589// Actionsheet
590// Actionsheet遮罩, 基于.setMask()
591.setActionsheetMask(){
592}
593.setActionsheet(){
594 position:absolute;
595
596 padding:0 @6px;
597 box-sizing:border-box;
598 width:100%;
599 bottom:0;
600 &:extend(.popup-animation all);
601
602 .actionsheet-option,.actionsheet-cancel{
603 padding:@12px;
604 display: block;
605 text-align:center;
606 box-sizing:border-box;
607 &:active{
608 background-color:@border;
609 }
610 }
611 .actionsheet-option{
612 position: relative;
613 }
614
615 .actionsheet-cancel{
616 border-radius:@4px;
617 margin:@6px 0;
618
619 background-color: rgba(255, 255, 255, 0.9);
620 }
621}
622.setActionsheetGroup(){
623 border-radius:@4px;
624 overflow:hidden;
625
626 background-color: rgba(255, 255, 255, 0.9);
627}
628
629
630
631
632// Preview预览
633// Preivew遮罩, 不基于.setMask()
634.setPreviewMask(){
635 visibility:hidden;
636 overflow: hidden;
637 opacity:0;
638 transition-property:opacity;
639 transition-duration:@animation-duration;
640
641 position: absolute;
642 z-index:10;
643 left:0;
644 right:0;
645 top:0;
646 bottom:0;
647 z-index: 10;
648
649 background-color: #000;
650 &.active{
651 visibility:visible;
652 opacity:1;
653 }
654 .pinch-zoom-container{
655 left: 0;
656 right: 0;
657 width: 100%;
658 background-color: #000;
659 }
660}
661// 头
662.setPreviewHeader(){
663 position:absolute;
664 top:0;
665 left: 0;
666 right: 0;
667 z-index:1;
668 background-color: rgba(0,0,0,.2);
669 height: 44px;
670 .flex;
671 .flex-middle;
672}
673.setPreviewHeaderBack(){
674 width: 24px;
675 height: 24px;
676 margin-left: 12px;
677 &:extend(.shape-arrow-left all);
678 border-color: white;
679}
680// 主体
681.setPreviewContainer(){
682 position: relative;
683}
684.setPreviewLayer(){
685 position: absolute;
686 top: 0;
687 left: 0;
688 width: 100%;
689 height: 100%;
690 background-size: contain;
691 background-position: center;
692 background-repeat: no-repeat;
693}
694
695
696
697
698
699
700
701// Card卡片
702.setCard(){
703 background-color:white;
704 border: 1px solid @dpborder;
705 margin: 10px;
706 border-radius: 4px;
707}
708
709
710
711
712
713
714// Dialog弹框
715// Dialog遮罩, 基于.setMask()
716.setDialogMask(){
717 &.active{
718 z-index:2;
719 }
720}
721.setDialog(){
722 position:absolute;
723 box-sizing: border-box;
724 max-width: 100%;
725 max-height: 100%;
726 overflow: auto;
727 &:extend(.popup-animation all);
728}
729
730
731
732
733
734
735
736
737// PagePull侧边栏控件
738@page-bg:@body-bg;
739.setPageSideLeft(){
740 width:@264px;
741}
742.setPageSideRight(){
743 width:@264px;
744}
745
746
747
748
749
750
751
752
753
754// PDFView文件预览
755.setPdfContainer(){
756 position: absolute;
757 top: 0;
758 bottom: 0;
759 left: 0;
760 right: 0;
761 background: #ccc;
762 overflow: hidden;
763}
764.setPdfWrapper(){
765 padding-bottom: 10px;
766}
767.setPdfPage(){
768 position: relative;
769 top: 0;
770 left: 0;
771 line-height: 0;
772 margin-top: 10px;
773 transition: all .3s;
774 z-index: 10;
775 box-shadow: 0 2px 10px 0 rgba(0,0,0,.1);
776 border-radius: 4px;
777 min-height: 100px;
778 background-color: white;
779 .pdf-page-canvas{
780 display: none;
781 }
782 .pdf-page-img{
783 width: 100%;
784 }
785 .pdf-page-load{
786 position: absolute;
787 top: 0;
788 bottom: 0;
789 width: 100%;
790 .flex;
791 .flex-middle;
792 .flex-center;
793 color: @sub;
794 }
795 .pdf-page-error{
796 position: absolute;
797 top: 0;
798 bottom: 0;
799 width: 100%;
800 .flex;
801 .flex-middle;
802 .flex-center;
803 color: @sub;
804 }
805 .hide{
806 .hide;
807 }
808}
809
810
811
812
813
814
815
816// BI-Clock时钟
817@bi-clock-line-width:@2px;
818@bi-clock-color:@primary-bg;
819@bi-clock-hour-height: 35%;
820@bi-clock-minute-height: 43%;
821.setBiClockTransition(){
822 transition-timing-function:ease;
823 transition-duration:500ms;
824 transition-delay:0ms;
825}
826
827// BI-Doughnut环形
828@bi-doughtut-size:50px;
829@bi-doughtut-line-width:3px;
830
831// BI-Gauge仪表盘
832@bi-gauge-bgs: #1693ce, #19a4e5, #14ba91, #16c447, #2fcf1f, #7cce16, #c0ac05, #c26900, #c02e00, #bf1200, #760403;
833
834
835// InputText文本框控件
836@input-text-padding: @10px 0;
837@input-text-height: @22px;
838.setInputTextBox(){
839 .flex;
840 .flex-middle;
841 .flex-1;
842}
843.setInputText(){
844 &:extend(.appearance);
845 position: relative; // 为了解决ios输入时白屏的BUG
846 box-sizing:border-box;
847 min-height:@input-text-height;
848 line-height:@input-text-height;
849 padding:@input-text-padding;
850 text-align: left;
851 -webkit-transform: translate3d(0,0,0); // 据说可以解决输入不显示文字的问题
852 -webkit-backface-visibility:hidden;
853 &[disabled] {
854 opacity: 1; // 解决iosdisabled颜色变淡的问题
855 -webkit-text-fill-color:#666; // 解决iosdisabled颜色变淡的问题
856 color: #666;
857 }
858}
859.setInputTextLicon(){
860 margin-right: 4px;
861}
862.setInputTextRicon(){
863 margin-left: 4px;
864 color:rgba(0,0,0,.2);
865}
866
867// InputRange范围拖动控件
868@input-range-height: 35px;
869@input-range-border: @dpborder;
870.setInputRangeToolTip(){
871 top:-@60px;
872 width:@48px;
873 height:@48px;
874 font-size:@20px;
875 line-height:@48px;
876 text-align:center;
877 border-radius:@6px;
878 border-width:@1px;
879 border-style:solid;
880 border-color:@dpborder;
881 text-shadow:0 @1px 0 #f3f3f3;
882 background-color:white;
883 opacity:.8;
884 transition-property: visibility;
885 transition-duration: 300ms;
886}
887.setInputRangeSliderThumb(){
888 width:@28px;
889 height:@28px;
890 border-width:0;
891 background-clip:padding-box;
892 border-radius:50%;
893
894 background-color:@primary-bg;
895}
896
897// InputSafe安全等级
898@input-safe-color:white;
899@input-safe-height: 30px;
900@input-safe-wing: 1px;
901@input-safe-bg:@placeholder;
902@input-safe-bg1:@cancel-bg;
903@input-safe-bg2:@warn-bg;
904@input-safe-bg3:@submit-bg;
905
906// Indexbar索引栏
907@indexbar-color: @placeholder;
908@indexbar-color-active: @body-color;
909@indexbar-font-size: @font-size-sm;
910.setIndexbar(){
911 position:fixed;
912 top:0;
913 right:0;
914 bottom:0;
915 font-size: @indexbar-font-size;
916 font-weight:bold;
917}
918.setIndexbarButton(){
919 padding: 0 @6px;
920 color: @indexbar-color;
921 transform: scale(0.8);
922}
923.setIndexbarButtonActive(){
924 color: @indexbar-color-active;
925}
926.setIndexbarTooltip(){
927 display:none;
928 position: fixed;
929 width: @80px;
930 height: @80px;
931 left: 50%;
932 top: 50%;
933 margin-left: -@40px;
934 margin-top: -@40px;
935 border-radius: @40px;
936 text-align: center;
937 line-height: @80px;
938 font-size: @35px;
939 color: #fff;
940 transition: 200ms;
941
942 background-color:@mask-bg;
943}
944.setIndexbarTooltipActive(){
945 display:block;
946}
947
948
949
950
951
952
953
954
955
956// ListPull列表
957.setListPullLi(){
958 position: relative;
959 overflow: hidden;
960}
961.setListPullHandler(){
962 position: relative;
963 z-index: 1;
964 background-color: white;
965 * {
966 pointer-events: none;
967 }
968}
969.setListPullLeft(){
970 .inline-flex;
971 position: absolute;
972 height: 100%;
973 top:0;
974 z-index:0;
975
976 left:0;
977}
978.setListPullRight(){
979 .inline-flex;
980 position: absolute;
981 height: 100%;
982 top:0;
983 z-index:0;
984
985 right:0;
986}
987.setListPullButton(){
988 height: 100%;
989}
990
991
992
993
994
995
996// Loading
997// Loading遮罩, 基于.setMask()
998.setLoadingMask(){
999 &.active{
1000 .flex;
1001 .flex-middle;
1002 .flex-center;
1003 }
1004}
1005
1006.setLoadingFilling(){
1007 .flex;
1008 .flex-middle;
1009 .flex-center;
1010 .flex-vertical;
1011 background-color: white;
1012 margin-top: -50px;
1013}
1014.setLoadingFillingIcon(){
1015 .flex;
1016 box-shadow:inset 0 0 0 @4px @primary-bg;
1017}
1018.setLoadingFillingCaption(){
1019 font-size: @font-size-sm;
1020 text-align: center;
1021 margin-top: 15px;
1022}
1023
1024.setLoadingFloating(){
1025 .flex;
1026 .flex-middle;
1027 .flex-center;
1028 .flex-vertical;
1029 margin-top: -50px;
1030 padding: 0 12px;
1031 min-width: 80px;
1032 max-width: 90%;
1033 height: @80px;
1034 color: #fff;
1035 border-radius: @12px;
1036 background-color: rgba(0, 0, 0, .5);
1037}
1038.setLoadingFloatingIcon(){
1039 margin: @10px auto @10px;
1040}
1041.setLoadingFloatingBlade(){
1042 background-color: white;
1043 // background-color: #8C8C8C;
1044}
1045.setLoadingFloatingCaption(){
1046 font-size: @font-size-sm;
1047 text-align: center;
1048}
1049
1050.setLoadingCustom(){
1051 .flex;
1052 .flex-middle;
1053 .flex-center;
1054 .flex-vertical;
1055}
1056.setLoadingCustomIcon(){
1057 background-image: url(//res.waiqin365.com/d/dinghuo365/loading.gif);
1058 background-size: contain;
1059 background-position: center;
1060 background-repeat: no-repeat;
1061 width: @24px;
1062 height: @24px;
1063}
1064.setLoadingCustomCaption(){
1065 margin-top: @10px;
1066 font-size: @font-size-sm;
1067 color: #aaa;
1068}
1069
1070
1071
1072
1073
1074
1075
1076// Lotterywheel
1077.setLotterywheelContainer() {
1078 position: relative;
1079 width: 300px;
1080 height: 300px;
1081 overflow: visible;
1082}
1083.setLotterywheelBorder() {
1084 position: absolute;
1085 width: 100%;
1086}
1087.setLotterywheelWrapper() {
1088 position: absolute;
1089 top: 7.5%;
1090 left: 7.5%;
1091 &.animated{
1092 transition: all 4000ms ease-out;
1093 }
1094}
1095.setLotterywheelPointer() {
1096 position: absolute;
1097 top: 50%;
1098 left: 50%;
1099 width: 20%;
1100 transform: translate(-50%, -50%);
1101 z-index: 2;
1102}
1103
1104
1105
1106
1107
1108
1109
1110
1111// Mask遮罩
1112.setMask(){
1113 visibility:hidden;
1114 opacity:0;
1115 transition-property:opacity;
1116 transition-duration:@animation-duration;
1117 // display: none; // 去掉动画
1118
1119 position: absolute;
1120 overflow: hidden;
1121 z-index:10;
1122 left:0;
1123 right:0;
1124 top:0;
1125 bottom:0;
1126 z-index: 10;
1127
1128 background-color: @mask-bg;
1129 &.active{
1130 visibility:visible;
1131 opacity:1;
1132 // display: block; // 去掉动画
1133 }
1134}
1135
1136
1137
1138
1139// Legend
1140.setLegend(){
1141 .flex;
1142 .flex-middle;
1143 position: relative;
1144 &:before, &:after{
1145 content: '';
1146 display: block;
1147 .flex-1;
1148 height: 1px;
1149 background-color: @border;
1150 }
1151}
1152.setLegendCaption(){
1153 display: block;
1154 padding: 0 10px;
1155 color: @sub;
1156}
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169// Titlebar
1170// Titlebar容器
1171.setTitlebar(){
1172 .flex;
1173 .flex-middle;
1174 position:relative;
1175 min-height:@44px;
1176 padding: @6px 0;
1177 box-sizing:border-box;
1178 color: #1A1A1A;
1179 background-color:#fff;
1180}
1181// Titlebar容器(自动拉伸类型)
1182.setTitlebarFlex(){
1183 .titlebar-left,.titlebar-right{
1184 position:relative;
1185 top:initial;
1186 transform:none;
1187 }
1188}
1189// 左右按钮容器
1190.setLeftRight(){
1191 .titlebar-left,.titlebar-right{
1192 position:absolute;
1193 top:50%;
1194 transform: translateY(-50%);
1195 z-index:1;
1196 .flex;
1197 }
1198 .titlebar-left{
1199 left:0;
1200 // 有左右的标题需要留有间距
1201 &+.titlebar-caption{
1202 margin: 0 @80px;
1203 }
1204 }
1205 .titlebar-right{
1206 right:0;
1207 }
1208}
1209// 标题
1210.setTitlebarCaption(){
1211 position:relative;
1212 font-size: @font-size-lg;
1213 font-weight: normal;
1214 &:extend(.flex-1);
1215}
1216// 按钮
1217.setTitlebarButton(){
1218 position:relative;
1219 margin: 0 8px;
1220 padding: 0 4px;
1221 &+.titlebar-button{
1222 margin-left:0px;
1223 }
1224 // titlebar上的箭头图标
1225 .shape-arrow-left{
1226 border-color: #1A1A1A;
1227 }
1228}
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239// Tabbar
1240.setTabCaption(){
1241
1242}
1243.setTabSndCaption(){
1244 font-size: @font-size-sm;
1245}
1246// Tabbar-line
1247@tabbar-line-color:#666;
1248@tabbar-line-bg:#fff;
1249@tabbar-line-border:@border;
1250@tabbar-line-color-active:@primary-bg;
1251@tabbar-line-bg-active:transparent;
1252@tabbar-line-border-active:@primary-bg;
1253
1254@tabbar-line-reverse-color:white;
1255@tabbar-line-reverse-bg:@primary-bg;
1256@tabbar-line-reverse-border:@primary-bg;
1257@tabbar-line-reverse-color-active:white;
1258@tabbar-line-reverse-bg-active:@primary-bg;
1259@tabbar-line-reverse-border-active:white;
1260
1261// Tabbar-rect
1262@tabbar-rect-color:#666;
1263@tabbar-rect-bg:white;
1264@tabbar-rect-border:@border;
1265@tabbar-rect-color-active:white;
1266@tabbar-rect-bg-active:@primary-bg;
1267
1268@tabbar-rect-reverse-color:white;
1269@tabbar-rect-reverse-bg:@primary-bg;
1270@tabbar-rect-reverse-border:@primary-bg;
1271@tabbar-rect-reverse-color-active:@primary-bg;
1272@tabbar-rect-reverse-bg-active:white;
1273
1274// Tabbar-lump
1275@tabbar-lump-radius: @28px;
1276
1277@tabbar-lump-color:#333;
1278@tabbar-lump-bg:white;
1279@tabbar-lump-border:white;
1280@tabbar-lump-color-active:white;
1281@tabbar-lump-bg-active:@primary-bg;
1282@tabbar-lump-border-active:white;
1283
1284@tabbar-lump-reverse-color:white;
1285@tabbar-lump-reverse-bg:@primary-bg;
1286@tabbar-lump-reverse-border:@primary-bg;
1287@tabbar-lump-reverse-color-active:@primary-bg;
1288@tabbar-lump-reverse-bg-active:white;
1289@tabbar-lump-reverse-border-active:@primary-bg;
1290
1291// Tabbar-dropdown
1292@tabbar-dropdown-color:#666;
1293@tabbar-dropdown-bg:white;
1294@tabbar-dropdown-border:@border;
1295@tabbar-dropdown-color-active:@primary-bg;
1296@tabbar-dropdown-bg-active:transparent;
1297
1298@tabbar-dropdown-reverse-color:white;
1299@tabbar-dropdown-reverse-bg:@primary-bg;
1300@tabbar-dropdown-reverse-border:rgba(255,255,255,.7);
1301@tabbar-dropdown-reverse-color-active:white;
1302@tabbar-dropdown-reverse-bg-active:transparent;
1303
1304// Tabbar-footer
1305@tabbar-footer-color:#666;
1306@tabbar-footer-bg:white;
1307@tabbar-footer-color-active:@primary-bg;
1308@tabbar-footer-bg-active:transparent;
1309
1310@tabbar-footer-reverse-color:white;
1311@tabbar-footer-reverse-bg:@primary-bg;
1312@tabbar-footer-reverse-color-active:white;
1313@tabbar-footer-reverse-bg-active:transparent;
1314
1315
1316// InputArea多行文本框
1317@input-area-height: @60px;
1318
1319// Button按钮
1320.setButtonSizeMd(){
1321 height: 32px;
1322}
1323.setButtonSizeSm(){
1324 padding: 0 6px;
1325 height: 26px;
1326 font-size: 12px;
1327}
1328.setButtonSizeLg(){
1329 .flex;
1330 height: 40px;
1331}
1332.setButtonSizeXl(){
1333 .flex;
1334 height: 50px;
1335 border-width: 1px 0 0 0;
1336}
1337// 按钮-默认
1338@button-color: @body-color;
1339@button-bg: transparent;
1340@button-border: @dpborder;
1341@button-property: none;
1342@button-value: none;
1343
1344@button-color-active: @body-color;
1345@button-bg-active: transparent;
1346@button-border-active: @dpborder;
1347@button-property-active: opacity;
1348@button-value-active: 0.5;
1349
1350// 按钮-在bar上
1351@button-bar-color: @body-color;
1352@button-bar-bg: transparent;
1353@button-bar-border: transparent;
1354@button-bar-property: none;
1355@button-bar-value: none;
1356
1357@button-bar-color-active: @body-color;
1358@button-bar-bg-active: transparent;
1359@button-bar-border-active: transparent;
1360@button-bar-property-active: opacity;
1361@button-bar-value-active: 0.5;
1362
1363// 按钮-禁用
1364@button-disabled-color: none;
1365@button-disabled-bg: none;
1366@button-disabled-border: none;
1367@button-disabled-property: opacity;
1368@button-disabled-value: 0.5;
1369
1370@button-disabled-color-active: none;
1371@button-disabled-bg-active: none;
1372@button-disabled-border-active: none;
1373@button-disabled-property-active: opacity;
1374@button-disabled-value-active: 0.5;
1375
1376// Toast
1377// toast遮罩, 透明
1378.setToastMask(){
1379 &.active{
1380 background-color: transparent;
1381 z-index:999;
1382 }
1383}
1384// toast框
1385.setToast(){
1386 position:absolute;
1387 width:100%;
1388 text-align:center;
1389 pointer-events:none;
1390 opacity: 0;
1391
1392 transition-property:transform,opacity,visibility;
1393 transition-duration:150ms;
1394 transition-timing-function:ease;
1395
1396 // 底部类型
1397 &.bottom{
1398 bottom:-@100px;
1399 &.active{
1400 opacity: 1;
1401 transform:translate3d(0,-@150px,0);
1402 }
1403 }
1404 // 头部类型
1405 &.top{
1406 top:@44px;
1407 &.active{
1408 visibility:visible;
1409 opacity: 1;
1410 }
1411 }
1412 &.top, &.bottom{
1413 .toast-wrapper{
1414 .flex-middle;
1415 }
1416 .toast-icon{
1417 width:@16px;
1418 height:@16px;
1419 font-size: @16px;
1420 }
1421 .toast-caption{
1422 .flex-1;
1423 // .nowrap;
1424 // .ellipsis;
1425 // height: @16px; // 上下类型的左图标为16px,所以文字也设置成16px与之匹配
1426 // line-height: @16px;
1427 }
1428 .toast-icon + .toast-caption{
1429 margin-left:@2px;
1430 }
1431 }
1432 // 中间类型
1433 &.middle{
1434 top: 50%;
1435 transform: translateY(-50%);
1436
1437 &.active{
1438 visibility:visible;
1439 opacity: 1;
1440 }
1441 .toast-wrapper{
1442 .flex-vertical;
1443 .flex-middle;
1444 }
1445 .toast-icon{
1446 width:@36px;
1447 height:@36px;
1448 font-size: @36px;
1449 }
1450 .toast-caption{
1451 text-align:center;
1452 }
1453 .toast-icon+.toast-caption{
1454 margin-top: @8px;
1455 }
1456 }
1457}
1458// toast框画布
1459.setToastWrapper(){
1460 .inline-flex;
1461 padding:@12px;
1462 border-radius:@6px;
1463 max-width:50%;
1464 line-height: 0;
1465
1466 color:white;
1467 background-color:rgba(0,0,0,.6);
1468}
1469// toast图标
1470.setToastIcon(){
1471 display:block;
1472 background-size:cover;
1473}
1474.setToastCaption(){
1475 display:block;
1476 font-size:@font-size-md;
1477 line-height:@22px;
1478}
1479
1480// Dialog、Popover、Alert、Page框动画效果
1481.popup-animation {
1482 &[data-animation]{
1483 transition-duration:@animation-duration;
1484 transition-property:transform,opacity,visibility;
1485 visibility:hidden;
1486 &.active{
1487 visibility:visible;
1488 }
1489 }
1490 // 从右往左滑动
1491 &[data-animation="slideLeft"]{
1492 //left:0;
1493 transform:translate3d(100%,0,0);
1494 &.active{
1495 transform:none;
1496 }
1497 }
1498 // 从左往右滑动
1499 &[data-animation="slideRight"]{
1500 //left:0;
1501 transform:translate3d(-100%,0,0);
1502 &.active{
1503 transform:none;
1504 }
1505 }
1506 // 从下向上滑动
1507 &[data-animation="slideUp"]{
1508 //top:0;
1509 transform:translate3d(0,100%,0);
1510 &.active{
1511 transform:none;
1512 }
1513 }
1514 // 从上向下滑动
1515 &[data-animation="slideDown"]{
1516 //top:0;
1517 transform:translate3d(0,-100%,0);
1518 &.active{
1519 transform:none;
1520 }
1521 }
1522 // 放大缩小
1523 &[data-animation="zoom"]{
1524 transform:scale(0,0);
1525 &.active{
1526 transform:scale(1,1);
1527 }
1528 }
1529 // 淡入淡出
1530 &[data-animation="fade"]{
1531 opacity:0;
1532 &.active{
1533 opacity:1;
1534 }
1535 }
1536 // 无动画
1537 &[data-animation="none"]{
1538 display:none;
1539 &.active{
1540 display:block;
1541 }
1542 }
1543
1544 // 正中间弹出
1545 &.middle{
1546 top:50%;
1547 left:50%;
1548 transform-origin:center center;
1549 transform:translate3d(-50%,-50%,0);
1550
1551 &[data-animation="zoom"]{
1552 transform:translate3d(-50%,-50%,0) scale(0,0);
1553 &.active{
1554 transform:translate3d(-50%,-50%,0) scale(1,1);
1555 }
1556 }
1557 }
1558
1559 // 顶部弹出
1560 &.top-left,&.top-center,&.top-right{
1561 top:0;
1562 }
1563 &.top-left{
1564 left:0;
1565 transform-origin:left top;
1566 }
1567 &.top-center{
1568 left:50%;
1569 transform-origin:center top;
1570 transform:translate3d(-50%,0,0);
1571
1572 &[data-animation="slideDown"]{
1573 transform:translate3d(-50%,-100%,0);
1574 &.active{
1575 transform:translate3d(-50%,0,0);
1576 }
1577 }
1578 &[data-animation="zoom"]{
1579 transform:translate3d(-50%,0,0) scale(0,0);
1580 &.active{
1581 transform:translate3d(-50%,0,0) scale(1,1);
1582 }
1583 }
1584 }
1585 &.top-right{
1586 right:0;
1587 transform-origin:right top;
1588 }
1589
1590 // 底部弹出
1591 &.bottom-left,&.bottom-center,&.bottom-right{
1592 bottom:0;
1593 }
1594 &.bottom-left{
1595 left:0;
1596 transform-origin:left bottom;
1597 }
1598 &.bottom-center{
1599 left:50%;
1600 transform-origin:center bottom;
1601 transform:translate3d(-50%,0,0);
1602
1603 &[data-animation="slideUp"]{
1604 transform:translate3d(-50%,100%,0);
1605 &.active{
1606 transform:translate3d(-50%,0,0);
1607 }
1608 }
1609 &[data-animation="zoom"]{
1610 transform:translate3d(-50%,100%,0) scale(0,0);
1611 &.active{
1612 transform:translate3d(-50%,0,0) scale(1,1);
1613 }
1614 }
1615 }
1616 &.bottom-right{
1617 right:0;
1618 transform-origin:right bottom;
1619 }
1620
1621 // 左侧弹出
1622 &.left-top,&.left-middle,&.left-bottom{
1623 left:0;
1624 }
1625 &.left-top{
1626 top:0;
1627 transform-origin:left top;
1628 }
1629 &.left-middle{
1630 top:50%;
1631 transform-origin:left center;
1632 transform:translate3d(0,-50%,0);
1633
1634 &[data-animation="slideRight"]{
1635 transform:translate3d(-100%,-50%,0);
1636 &.active{
1637 transform:translate3d(0,-50%,0);
1638 }
1639 }
1640 &[data-animation="zoom"]{
1641 transform:translate3d(0,-50%,0) scale(0,0);
1642 &.active{
1643 transform:translate3d(0,-50%,0) scale(1,1);
1644 }
1645 }
1646 }
1647 &.left-bottom{
1648 bottom:0;
1649 transform-origin:left bottom;
1650 }
1651
1652 // 右侧弹出
1653 &.right-top,&.right-middle,&.right-bottom{
1654 right:0;
1655 }
1656 &.right-top{
1657 top:0;
1658 transform-origin:right top;
1659 }
1660 &.right-middle{
1661 top:50%;
1662 transform-origin:right center;
1663 transform:translate3d(0,-50%,0);
1664
1665 &[data-animation="slideLeft"]{
1666 transform:translate3d(100%,-50%,0);
1667 &.active{
1668 transform:translate3d(0,-50%,0);
1669 }
1670 }
1671 &[data-animation="zoom"]{
1672 transform:translate3d(0,-50%,0) scale(0,0);
1673 &.active{
1674 transform:translate3d(0,-50%,0) scale(1,1);
1675 }
1676 }
1677 }
1678 &.right-bottom{
1679 bottom:0;
1680 transform-origin:right bottom;
1681 }
1682}
1683
1684
1685
1686
1687// Alert框
1688.setAlertMask(){
1689 &.active{
1690 z-index:10;
1691 .flex;
1692 .flex-middle;
1693 .flex-center;
1694 }
1695}
1696.setAlert(){
1697 border-style:solid;
1698 border-width:0;
1699
1700 width: @270px;
1701 border-radius:@6px;
1702 margin: 0 auto;
1703
1704 background-color:white;
1705 border-color:@border;
1706 overflow: hidden;
1707 &:extend(.popup-animation all);
1708 h1{
1709 text-align: center;
1710 padding: @15px @12px 0 @12px;
1711 font-weight: 500;
1712 font-size: @font-size-md;
1713 color: #333;
1714 text-align: center;
1715 }
1716}
1717// 内容区域
1718.setAlertContent(){
1719 display: block;
1720 padding: @15px @12px @15px @12px;
1721 line-height: 1.2em;
1722 word-wrap: break-word;
1723 max-height: 300px;
1724 overflow: auto;
1725}
1726.setAlertContentIcon(){
1727 width: 40px;
1728 height: 40px;
1729 display: block;
1730 margin: 10px auto 12px auto;
1731}
1732.setAlertHandler(){
1733 .flex;
1734 padding-top: @1px;
1735 .border-t;
1736 // 第二个按钮加个左边框
1737 a:nth-of-type(2){
1738 .border-l;
1739 }
1740}
1741.setAlertButtonSubmit(){
1742 .flex !important;
1743 .flex-1;
1744 border-width: 0 !important;
1745 width: 100%;
1746 height: 40px;
1747}
1748.setAlertButtonCancel(){
1749 .flex !important;
1750 .flex-1;
1751 border-width: 0 !important;
1752 width: 100%;
1753 height: 40px;
1754}
1755
1756
1757
1758
1759
1760// Notice提示页
1761@notice-color: @sub;
1762@notice-bg: @body-bg;
1763.setNotice(){
1764 z-index: 1;
1765}
1766.setNoticeWrapper(){
1767 position: absolute;
1768 width: 100%;
1769 top:40%;
1770 transform: translateY(-50%);
1771 text-align: center;
1772}
1773.setNoticeIcon(){
1774 width:120px;
1775 height:120px;
1776 font-size:120px;
1777}
1778.notice-icon-error{
1779 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAADECAMAAACBQszSAAAAmVBMVEUAAADR3OXM1+LN1+LM1+HM1+LM1+LP2+fO2ObM1uLM1+LN1uLM1+HM1+LN2OPN2OPO2ePN1uLM2OHQ3OPW2+fu///O2ePN1+LN1+HN1+PN2eTN1+HN1+LM1uLO2eT1+PnM1uHi6vP////O2OPS2+Xo7fLe5Oz6+/zd5e7Z4enU3ebQ2uTz9/jk6e/8/f7s8fTq7/Pu8/Xf6PJzV/EOAAAAH3RSTlMAHPzV59qmKhnuarby4nZYTvObJA8DR5K0bDj4u8Mu2IPETQAABVtJREFUeNrtndty2jAQhoWJAwHKKSRteuJvZDBgm9P7P1xlgUcFPAmhVkbW7neT8fjqG6200q6CBcMwDMMwDMMwDEOPRqcbjlAho7DbaQj3aY8DWCAYt4XjDHuwRG8onOYlgDWCF+EwQ20eZbt0WiHpLou0u8Pj3tbRnk0tkOmYd3e+j6HYTq2whWIsHKUR2BlzM+6BqzmuAyCaWiMC0BGfSeP+7u6+Ia6ga2vQzbB3xSfSeIDi4Rr3EMBuao0dgFB8IvfQ3Iv3GQFIp9ZIAYzEJ3IHzZ14HyimFoFCvAGrWwj4ytS3Cc5Iti6qm2WuMvUEFyQuqhfJjaL6EXcDvh+GfWETd5e5AAjEx/BF3YV5wOoG++rPX3Dky7O4Hh/Uc/PCXVwPq9danXDAE17miKu7taVBxdRoI4uKqdHxhdWpqv+pCFZndeEmrM7qrM7qrM7qrF4/9a9PZNXRnZBVR7NBVh1338mq48eArDrQp6uO+yey6neteqh/fapavdmoScCjO6lW/dukLnM9H6Uq1VUUXau+kPgwclGJusnFlakHnQ9saSRuQFakbnJxJaD3LGqmnufiKviil/Y6BbzJxf9J+7ZDKxSvbwJF9cucycUVUEf101WekvpZLiakfpaL6ahf5GIy6pe5mIp6SS6mol6Si6mol8DqrG5fXQJYv2W+BiC9VI8AxMpQogSpXsQAIi/VVwBSZbhCCSv1Is3/eqm+BDBThnOUMFcvZgCWXqrPczNluEEJG/ViCWDupfoeh8m+lrhArg9THXsv1fVkz3Rgn6MnQgZg5XgL4lb1BQAZ68g+Rc+DWAJYeKqu09s8t4xwQhQfV7/I9cbTzeqLIrbj5cmYx8UsWHirrmc7dq+5qcQROcufd1CsnG833q6+T6DQruvNfCXlar5ZvxZjnuxdUO8/hN8rVjchj3n8ekI8R87ChSZzG8CvytWNu8zif8QzeTB3or/eAtC0oJ67J9AsZ2m8XsfpbAlNsnDjaoEldc1+dVBdRYmUSbRKkLPaO3Krwoa6YRElEWBQjwsnLpRMWq3WEEDYUkzsqOMMN9Q7AWAIOrYC3uBMwD/ghAdCy1wTJzQJJbffP5vNZgjgR1PR/U1tS6NXeLsbWYNbG1mtbu/4coZTxxetbu3QeolDh1atbqtUUYY7pQp9fLFVoCrDoQJVfmi1VJYsx++yZFGMLsfrYnTRgijH6xbE0izvpwUqjdeNp6LdqDgrS+Z43W4smszlxWivm8zmasFlC8LzqwXmQsll48nzCyWFemm7kYZ6eZOZhHr51QIS6uUXSkiol5clSaiXXx4joY5SWJ3VPVUndD34tn/x80Jd4gYkq9dbnXDAX1Dj36pgdVZndVZndWvq1XyTyTv167/E5Z369d9f8079+q/usbo/6oQDnvAyRzi5XQ+rszqrszqr89d+WP1AO/z5RFR9ADyyuhtf8fskJoPBV6A/GEzIqTdxpElO/RuOfCOnLh4f+8Dz4yO9uV7hMjdbRlJGyxk59VmEI9GsNurvbGmuYw4Y5nVRN9ymbsyNOx312UF4k6abOXJmZNQjAMl2qtkmACIq6nrQtbl218NORH1ZTG8z8ZdE1CMAG/O4ARARUZcAUvOYApCs7rs64YAnvMwRTm6EtzSUN7KEjy/+HVpHAFJ7pYoUwEi4SQhgZ69AtQMQCjfpAsim1sgAdIWbdHSaskYEoCPcpBHYHPYMQNAQjjIutmkW2EIxFq7S7sHWuGdQ9NrCWYYBFFG2S6vUTndZBEUwFA7zEsAawYtwmmEPlug5PeY57XEACwRjh+e5yXGdbjhChYzCbsfZrMYwDMO4x1+ERsf8xrRmSgAAAABJRU5ErkJggg==');
1780}
1781.notice-icon-nodata{
1782 font-family: 'iconfont';
1783 &:extend(.icon-notice-data all);
1784}
1785.setCaption(){
1786 margin: 10px 20px 0 20px;
1787}
1788.setSndCaption(){
1789 margin: 10px 20px 0 20px;
1790}
1791
1792// Avatar头像
1793@avatar-background-size: cover;
1794@avatar-color:@placeholder;
1795@avatar-bg:#ddd;
1796@avatar-border:0;
1797
1798// Thumbnail缩略图
1799@thumbnail-background-size: contain;
1800@thumbnail-bg: white;
1801@thumbnail-border: 1px solid #e5e5e5;
1802
1803// Turn开关
1804@turn-border:@border;
1805@turn-bg:white;
1806@turn-color:#666;
1807@turn-border-active:#55acee;
1808@turn-bg-active:#55acee;
1809@turn-color-active:white;
1810
1811
1812
1813
1814
1815
1816
1817// Calendar日历
1818.setCalendar(){
1819 position: relative;
1820 width: 100%;
1821 overflow: hidden;
1822 transition-property:height;
1823 background-color:white;
1824}
1825.setCalendarHeader(){
1826 .flex;
1827 .flex-middle;
1828 padding: @6px 0;
1829}
1830// 标题
1831.setCalendarTitle(){
1832 .flex-1;
1833 text-align: center;
1834 padding: @6px 0;
1835}
1836// 左右箭头
1837.setCalendarPrevNext(){
1838 font-size:@16px;
1839 width:15%;
1840 height:@30px;
1841 .flex;
1842 .flex-middle;
1843 .flex-center;
1844
1845 color:@placeholder;
1846}
1847.setCalendarPrev(){
1848}
1849.setCalendarNext(){
1850}
1851// 周
1852.setCalendarDayBox(){
1853 color:@sub;
1854 &:after{
1855 content: '';
1856 display:table;
1857 clear:both;
1858 zoom:1;
1859 }
1860}
1861.setCalendarDay(){
1862 height:@24px;
1863 line-height:@24px;
1864 font-size: @12px;
1865 display: inline-block;
1866 text-align: center;
1867 float: left;
1868 width: 14%;
1869 &:nth-of-type(1),&:nth-last-of-type(1){
1870 width: 15%;
1871 }
1872}
1873// 主体
1874.setCalendarWrapper(){
1875 height: @300px;
1876 overflow:hidden;
1877}
1878// 主体高度
1879.setCalendarWrapperY(){
1880 height:@300px;
1881 transition-property:transform;
1882}
1883// 主体宽度
1884.setCalendarWrapperX(){
1885 width:300%;
1886 transition-property:transform;
1887 &:after{
1888 content: '';
1889 display:table;
1890 zoom:1;
1891 clear:both;
1892 }
1893}
1894// 一月一屏, 共三屏
1895.setCalendarMonth(){
1896 width:33%;
1897 float:left;
1898}
1899// 一行
1900.setCalendarMonthRow(){
1901 content: '';
1902 display: table;
1903 zoom:1;
1904 clear:both;
1905}
1906// 一格
1907.setCalendarDate(){
1908 display: inline-block;
1909 // 由js控制高度与line-height
1910 // height:@40px;
1911 // line-height: @40px;
1912 text-align: center;
1913 float: left;
1914 width: 14%;
1915 &:nth-of-type(1),&:nth-last-of-type(1){
1916 width: 15%;
1917 }
1918}
1919// 一格里的数字
1920.setCalendarDateNum(){
1921 display: inline-block;
1922 width: @28px;
1923 height: @28px;
1924 line-height: @28px;
1925}
1926// 选中效果-今天
1927.setCalendarToday(){
1928 border-radius:100%;
1929 border-width:@1px;
1930 border-style:solid;
1931 border-color:@sub;
1932}
1933// 选中效果-当前月或者当前周
1934.setCalendarCurrent(){
1935 color:@body-color;
1936}
1937.setCalendarNotCurrent(){
1938 color:@sub;
1939}
1940// 选中效果-滑动后
1941.setCalendarActive(){
1942 font-weight:600;
1943 border-radius:100%;
1944
1945 color:@primary-color;
1946 border-color:@primary-bg;
1947 background-color:@primary-bg;
1948}
1949// 选中效果-点击后
1950.setCalendarSelected(){
1951 // font-weight:600;
1952 // border-radius:100%;
1953
1954 // color:@primary-color;
1955 // border-color:@primary-bg;
1956 // background-color:@primary-bg;
1957}
1958.setCalendarDisabled(){
1959 color:@placeholder;
1960 font-weight:normal;
1961 background-color:transparent;
1962 border-color:transparent;
1963}
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975// Progress进度条
1976.setProgress(){
1977 position: relative;
1978 display:block;
1979 overflow:hidden;
1980 // 样式
1981 height:@14px;
1982 border-radius:@6px;
1983 background-color:#f3f3f9;
1984}
1985.setProgressBar(){
1986 position: relative;
1987 .flex;
1988 .flex-middle;
1989 .flex-right;
1990 overflow: hidden;
1991 line-height: 0;
1992 margin: 0;
1993 box-sizing: border-box;
1994 border-width: @1px;
1995 border-style: solid;
1996 // 样式
1997 height:@14px;
1998 border-radius:@6px;
1999 background-color:#3687e3;
2000 border-color: transparent;
2001 // 文字
2002 color: white;
2003 font-size: 12px;
2004 text-align: right;
2005 // 动画
2006 width: 0;
2007 transition: width 1s;
2008 @-webkit-keyframes progresswidth {
2009 0% {
2010 width: 0;
2011 }
2012 }
2013 animation: progresswidth 1s linear;
2014 /*
2015 //3D样式
2016 &.threed {
2017 border-width: 0;
2018 box-shadow: inset 0 @2px @9px rgba(255,255,255,0.3), inset 0 -@2px @6px rgba(0,0,0,0.4);
2019 }
2020 //斑马条
2021 @-webkit-keyframes movestripes {
2022 0% {
2023 background-position: 0 0;
2024 }
2025 100% {
2026 background-position: @50px @50px;
2027 }
2028 }
2029 &.striped{
2030 &:after{
2031 content:"";
2032 position:absolute;
2033 top:0;
2034 left:0;
2035 bottom:0;
2036 right:0;
2037 background-image:linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);
2038 background-size:@50px @50px;
2039 overflow:hidden;
2040 }
2041 &.animated:after{
2042 animation: movestripes 2s linear infinite;
2043 animation: movestripes 2s linear infinite;
2044 }
2045 }
2046 */
2047}
2048.setProgressCaption(){
2049 display: block;
2050 font-size: 12px;
2051 margin-right: 4px;
2052}
2053
2054// Numbox数字框
2055@numbox-button-color:#666;
2056@numbox-button-border:@dpborder;
2057@numbox-button-disabled-color:#ccc;
2058@numbox-width-md: @100px;
2059@numbox-height-md: @26px;
2060@numbox-width-xl: @170px;
2061@numbox-height-xl: @40px;
2062@numbox-width-lg: @120px;
2063@numbox-height-lg: @32px;
2064@numbox-width-sm: @80px;
2065@numbox-height-sm: @22px;
2066.setNumbox(){
2067 &:extend(.flex-middle);
2068 text-align:center;
2069 background-color:white;
2070 border-radius: 4px;
2071 &:extend(.bordered);
2072}
2073.setNumboxInput(){
2074}
2075.setNumboxRicon(){
2076 display: block;
2077 margin-left: 4px;
2078 color:rgba(0,0,0,.2);
2079}
2080.setNumboxButtonMinus(){
2081 border-radius: 0;
2082 border-width:0 @1px 0 0;
2083 border-style: solid;
2084 border-color: @numbox-button-border;
2085}
2086.setNumboxButtonPlus(){
2087 border-radius: 0;
2088 border-width:0 0 0 @1px;
2089 border-style: solid;
2090 border-color: @numbox-button-border;
2091}
2092
2093
2094
2095
2096
2097
2098// Picker选择器
2099@picker-bg:#f5f5f9;
2100@picker-button-color: @primary-bg;
2101@picker-button-disabled-color: #d1d1d1;
2102@picker-header-bg:#fff;
2103@picker-selected-bg:#F5F5F9;
2104// picker遮罩, 基于.setMask()
2105.setPickerMask(){
2106}
2107.setPicker(){
2108 position:absolute;
2109 bottom:0;
2110 width:100%;
2111 z-index:10;
2112 transition-property:transform,opacity,visibility;
2113 transition-duration:@animation-duration;
2114 transform:translate3d(0,100%,0);
2115
2116 background-color: @picker-bg;
2117 &.active{
2118 transform:translate3d(0,0,0);
2119 }
2120}
2121.setPickerHeader(){
2122 &:extend(.border-b);
2123 position:relative;
2124 width:100%;
2125 height:@43px;
2126 background-color:@picker-header-bg;
2127}
2128.setPickerWrapper(){
2129 display:block;
2130 position:relative;
2131 height:@215px;
2132 overflow:hidden;
2133 -webkit-mask-box-image: -webkit-linear-gradient(bottom, transparent, transparent 0%, @picker-bg 40%, @picker-bg 60%, transparent 100%, transparent);
2134}
2135// 槽容器
2136.setPickerSlotbox(){
2137 width:100%;
2138 height: 100%;
2139 display:table;
2140 table-layout:fixed;
2141}
2142// 一槽
2143.setPickerSlot(){
2144 display:table-cell;
2145 overflow:hidden;
2146 padding-top:@86px;
2147 padding-bottom:@86px;
2148 transition-timing-function:cubic-bezier(0,0,0.2,1);
2149 li{
2150 height:@44px;
2151 line-height:@44px;
2152 white-space:nowrap;
2153 text-overflow:ellipsis;
2154 overflow:hidden;
2155 padding:0 @8px;
2156 font-size:@17px;
2157
2158 color:@body-color;
2159 pointer-events: none;
2160 &.active{
2161 color:@body-color;
2162 }
2163 }
2164 &.lock li.active{
2165 color:@placeholder;
2166 }
2167}
2168// 遮皮
2169.setPickerLayer(){
2170 position:absolute;
2171 top:0;
2172 height:100%;
2173 width:100%;
2174 pointer-events: none;
2175 &:before,&:after{
2176 content: '';
2177 display: block;
2178 position: absolute;
2179 width: 100%;
2180 height: @82px;
2181 }
2182 &:before{
2183 top:0;
2184 background: fade(@picker-bg,70%);
2185 }
2186 &:after{
2187 bottom:0;
2188 background: fade(@picker-bg,70%);
2189 }
2190}
2191// 遮皮选中
2192.setPickerLayerFrame(){
2193 &:extend(.border-tb all);
2194 position:absolute;
2195 top:50%;
2196 height:@46px;
2197 width:100%;
2198 pointer-events:none;
2199 transform: translateY(-50%);
2200}
2201// 按钮
2202.setPickerButtonSubmit(){
2203 display:inline-block;
2204 position:absolute;
2205 top:@4px;
2206 height:@32px;
2207 line-height:@32px;
2208 padding:0 @5px;
2209 color: @picker-button-color;
2210 &.disabled{
2211 color: @picker-button-disabled-color;
2212 pointer-events: none;
2213 }
2214
2215 right:@8px;
2216}
2217.setPickerButtonCancel(){
2218 display:inline-block;
2219 position:absolute;
2220 top:@4px;
2221 height:@32px;
2222 line-height:@32px;
2223 padding:0 @5px;
2224 color: @picker-button-color;
2225 &.disabled{
2226 color: @picker-button-disabled-color;
2227 pointer-events: none;
2228 }
2229
2230 left:@8px;
2231}
2232
2233
2234
2235
2236
2237// Player
2238.setPlayerThumbnail(){
2239 video{
2240 width: 100%;
2241 height: 100%;
2242 }
2243}
2244.setPlayerThumbnailPoster(){
2245 background-color: black;
2246}
2247.setPlayerThumbnailButton(){
2248 display: block;
2249 position: absolute;
2250 height: 40px;
2251 width: 40px;
2252 top: 50%;
2253 left: 50%;
2254 transform: translate(-50%, -50%);
2255 border: 1px solid #fff;
2256 background-color: rgba(0, 0, 0, .7);
2257 border-radius: 100%;
2258 // 箭头
2259 &:after{
2260 content: "";
2261 position: absolute;
2262 left: 50%;
2263 top: 50%;
2264 transform: translate(-54%, -50%);
2265 width: 0;
2266 height: 0;
2267 display: block;
2268 border-left: 10px solid white;
2269 border-top: 8px solid transparent;
2270 border-bottom: 8px solid transparent;
2271 }
2272}
2273
2274
2275// Popover
2276// 遮罩
2277.setPopoverMask(){
2278 background-color: transparent;
2279 z-index:2;
2280}
2281// 弹框
2282.setPopover(){
2283 position: absolute;
2284 width:140px;
2285 padding: 1px 0;
2286 border-radius: 6px;
2287 background-color: white;
2288 z-index: 10;
2289 box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.3);
2290 &:extend(.popup-animation all);
2291 &:after {
2292 content: '';
2293 position: absolute;
2294 width: @popover-arrow-width;
2295 height: @popover-arrow-height;
2296 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAICAMAAADKtv/iAAAAM1BMVEUAAAANDQ3h4eHh4eH09PTx8fHr6+vg4ODd3d3T09PBwcGnp6eAgIDa2tra2tr////4+PheEDUZAAAAD3RSTlMABPPp/fr31bxFMSASU1I6UmnJAAAAR0lEQVQI14XKSQ6AMAxDUZx0bsG5/2lBBZQukPjLZ2+/AV92qO7v4lrFTOrtrk2MNGnAql0Dr4L2xTFy5CzmAT+XxKdU5v0EeBUCRPUTlMsAAAAASUVORK5CYII=');
2297 background-size: 100% auto;
2298 background-position: center bottom;
2299 background-repeat: no-repeat;
2300 }
2301}
2302// 弹框箭头
2303@popover-arrow-height: 10px;
2304@popover-arrow-width: 20px;
2305@popover-arrow-corner: 8px; // 箭头角落间距
2306.setPopoverArrow(){
2307 // top
2308 &[class*="top-"]:after{
2309 top:-@popover-arrow-height;
2310 }
2311 &.top-right:after {
2312 right:@popover-arrow-corner;
2313 }
2314 &.top-left:after {
2315 left:@popover-arrow-corner;
2316 }
2317 &.top-center:after {
2318 left:50%;
2319 margin-left: -(@popover-arrow-width / 2);
2320 }
2321 // bottom
2322 &[class*="bottom-"]:after {
2323 transform-origin:center;
2324 transform:rotate(180deg);
2325 bottom:-@popover-arrow-height;
2326 }
2327 &.bottom-right:after {
2328 right:@popover-arrow-corner;
2329 }
2330 &.bottom-left:after {
2331 left:@popover-arrow-corner;
2332 }
2333 &.bottom-center:after {
2334 left:50%;
2335 margin-left: -(@popover-arrow-width / 2);
2336 transform:rotate(180deg);
2337 }
2338 // left
2339 &[class*="left-"]:after {
2340 transform:rotate(-90deg);
2341 }
2342 &.left-top:after {
2343 transform-origin:bottom;
2344 left:-@popover-arrow-height;
2345 top:@popover-arrow-corner;
2346 }
2347 &.left-bottom:after {
2348 transform-origin:left bottom;
2349 left:0;
2350 bottom:@popover-arrow-corner;
2351 }
2352 &.left-middle:after {
2353 top:50%;
2354 transform-origin: bottom;
2355 left: -@popover-arrow-height;
2356 margin-top: -(@popover-arrow-width / 2);
2357 }
2358 // right
2359 &[class*="right-"]:after {
2360 transform:rotate(90deg);
2361 }
2362 &.right-top:after {
2363 transform-origin:bottom;
2364 right:-@popover-arrow-height;
2365 top:@popover-arrow-corner;
2366 }
2367 &.right-bottom:after {
2368 transform-origin:right bottom;
2369 right:0;
2370 bottom:@popover-arrow-corner;
2371 }
2372 &.right-middle:after {
2373 top:50%;
2374 transform-origin: bottom;
2375 right: -@popover-arrow-height;
2376 margin-top: -(@popover-arrow-width / 2);
2377 }
2378}
2379.setPopover-li(){
2380 position: relative;
2381 .flex;
2382 .flex-middle;
2383 .flex-center;
2384 height: 46px;
2385 &:last-child{
2386 border-width: 0;
2387 }
2388 &:last-child:after{
2389 height: 0;
2390 }
2391 &:active{
2392 background-color: #f8f8f8;
2393 }
2394 i{
2395 pointer-events: none;
2396 font-size: 22px;
2397 width: 22px;
2398 height: 22px;
2399 }
2400 label{
2401 pointer-events: none;
2402 .flex-1;
2403 margin: 0 8px 0 8px;
2404 height: 22px;
2405 line-height: 24px;
2406 }
2407}
2408
2409// SelectPicker选择器
2410@selectpicker-color-active: @primary-bg;
2411.setPickerOptionIcon(){
2412 font-family: 'iconfont';
2413 &:extend(.icon-ok-fill all);
2414 font-size: 16px;
2415 width: 16px;
2416 height: 16px;
2417}
2418
2419// Dot小点点
2420@dot-bg:@placeholder;
2421@dot-bg-active:#51BD89;
2422
2423// Timeline时间轴
2424.setTimeline(){
2425 position: relative;
2426 margin-left:@24px;
2427 padding:0 @18px;
2428}
2429.setTimelineLine(){
2430 display: block;
2431 position: absolute;
2432 left:0;
2433 top: 12px;
2434 bottom:0;
2435 width:@1px;
2436 &:extend(.border-l);
2437}
2438.setTimelineCase(){
2439 position: relative;
2440 color: #999;
2441}
2442.setTimelineCaseActive(){
2443 color: #51BD89;
2444}
2445.setTimelineBadge() {
2446 position:absolute;
2447 top:0;
2448 // top: 50%;
2449 // transform: translateY(-50%);
2450 left:-@20px;
2451 z-index: 1;
2452}
2453
2454// Timepart时间轴
2455@timepart-active-bg: @primary-bg;
2456@timepart-disabled-bg: @body-bg;
2457
2458
2459
2460// Checkbox控件
2461@checkbox-color: @placeholder;
2462@checkbox-color-active: @primary-bg;
2463@checkbox-color-disabled: @disabled-bg;
2464.setCheckboxIcon(){
2465 font-family: 'iconfont';
2466 &:extend(.icon-rdo all);
2467}
2468.setCheckboxActiveIcon(){
2469 font-family: 'iconfont';
2470 &:extend(.icon-rdo-ok-fill all);
2471}
2472
2473// Radio控件
2474@radio-color: @placeholder;
2475@radio-color-active: @primary-bg;
2476@radio-color-disabled: @disabled-bg;
2477.setRadioIcon(){
2478 font-family: 'iconfont';
2479 &:extend(.icon-rdo all);
2480}
2481.setRadioActiveIcon(){
2482 font-family: 'iconfont';
2483 &:extend(.icon-rdo-ok-fill all);
2484}
2485
2486
2487// OnOff开关
2488.setOnOff(){
2489 position: relative;
2490 display: inline-block;
2491 height: @30px;
2492 width: @60px;
2493 border-radius: @30px;
2494 transition-duration:200ms;
2495 transition-property: background-color, border;
2496
2497 // 小球风格
2498 // background-color:transparent;
2499 // border:@1px solid @dpborder;
2500
2501 // ios风格
2502 background-color:white;
2503 border:none;
2504 box-shadow: inset 0 0 0 @1px @dpborder;
2505
2506 // 文字
2507 &:after{
2508 content: attr(data-off);
2509 position: absolute;
2510 top:50%;
2511 transform: translateY(-50%);
2512 // ios风格
2513 right: @11px;
2514
2515 // 小球风格
2516 // color: @placeholder;
2517
2518 // ios风格
2519 color:@placeholder;
2520 }
2521 // 圆点
2522 .onoff-handle{
2523 pointer-events:none;
2524 position: absolute;
2525 left:0;
2526 top:50%;
2527 border-radius: @100px;
2528 transition-duration:200ms;
2529 transition-property:transform, border, width;
2530
2531 // 小球风格
2532 // width: @20px;
2533 // height: @20px;
2534 // transform:translate(@4px,-50%);
2535 // background-color:@dpborder;
2536
2537 // ios风格
2538 width: @26px;
2539 height: @26px;
2540 transform: translate(@2px,-50%);
2541 background-color:white;
2542 box-shadow: @2px @2px @2px rgba(0,0,0,.21);
2543 }
2544 &.active {
2545 // 小球风格
2546
2547 // ios风格
2548 background-color:@primary-bg;
2549 box-shadow: none;
2550
2551 &:after{ // 文字
2552 content: attr(data-on);
2553 right: auto;
2554 left: @11px;
2555
2556 // 小球风格
2557 // color: @placeholder;
2558
2559 // ios风格
2560 color:white;
2561 }
2562
2563 .onoff-handle{ // 圆点
2564 left:0;
2565 top:50%;
2566
2567 // 小球风格
2568 // transform: translate(@34px,-50%);
2569 // background-color: @primary-bg;
2570
2571 // ios风格
2572 transform: translate(@32px,-50%);
2573 box-shadow: @2px @2px @4px rgba(0,0,0,.21);
2574 background-color:white;
2575 }
2576 }
2577
2578 &.notext{ // 无文字时宽度应当小一些
2579 width: @50px;
2580 &.active{
2581 .onoff-handle{
2582 // 小球风格
2583 // transform: translate(@24px,-50%);
2584 // ios风格
2585 transform: translate(@22px,-50%);
2586 }
2587 }
2588 &:after{
2589 content:none;
2590 }
2591 }
2592}
2593
2594
2595// InputStar
2596.setInputStar(){
2597 .flex;
2598 .flex-middle;
2599 .star{
2600 margin-right: 18px;
2601 }
2602};
2603
2604// Star星星控件
2605@star-color: @placeholder;
2606@star-color-active: @warn-bg;
2607.setStarIcon(){
2608 font-family: 'iconfont';
2609 &:extend(.icon-fav all);
2610};
2611.setStarActiveIcon(){
2612 font-family: 'iconfont';
2613 &:extend(.icon-fav-fill all);
2614};
2615
2616// Stencil
2617.setStencil(){
2618 background-color: #fff;
2619 background-repeat: repeat-y;
2620 background-position: top;
2621 background-size: contain;
2622 z-index: 20;
2623};
2624.setStencilList(){ // 列表类型
2625 background-image: url(//res.waiqin365.com/d/seedsui/stencil/stencil-list.png);
2626}
2627
2628// Sticker
2629@sticker-color: @badge-color;
2630@sticker-bg: @badge-bg;
2631@sticker-font-size: @font-size-sm;
2632
2633
2634
2635// Dragrefresh下拉刷新控件
2636.setDragrefreshCircleIcon(){
2637 background-image: url(//res.waiqin365.com/d/seedsui/dragrefresh/circle.svg);
2638};
2639.setDragrefreshPullIcon(){
2640 background-image: url(//res.waiqin365.com/d/seedsui/dragrefresh/pull.png);
2641};
2642
2643
2644
2645// Emoji表情控件
2646@emoji-bg: #ffffff;
2647@emoji-edit-bg: #f0f1f1;
2648// Emoji遮罩, 基于.setMask()
2649.setEmojiMask(){
2650 &.active{
2651 transition-duration: 0ms;
2652 z-index:2;
2653 }
2654}
2655.setEmoji(){
2656 position: absolute;
2657 bottom: 0;
2658 width: 100%;
2659 background-color: @emoji-bg;
2660}
2661// 编辑区
2662.setEmojiEdit(){
2663 .flex;
2664 .flex-middle;
2665 .border-b;
2666 background-color: @emoji-edit-bg;
2667 padding: 8px 0px 8px 12px;
2668}
2669.setEmojiEditInput(){
2670 .flex-1;
2671 background-color: white;
2672 border-radius: 4px;
2673 border: 1px solid #e5e5e5;
2674 padding: 6px;
2675
2676 textarea[disabled] {
2677 opacity:1;
2678 }
2679}
2680.setEmojiEditIcon(){
2681 font-family: 'iconfont';
2682 border-right: 1px solid #cecece;
2683 width: 48px;
2684 color: #808080;
2685 &:extend(.icon-rdo-emoji all);
2686 &.active{
2687 &:extend(.icon-rdo-keyboard all);
2688 }
2689}
2690.setEmojiEditSubmit(){
2691 width: 60px;
2692 height: 30px;
2693 border: 0;
2694 color: @primary-bg;
2695}
2696// 表情滚动区
2697.setEmojiCarrousel(){
2698 height: 200px;
2699 .carrousel-pagination{
2700 bottom: 16px;
2701 }
2702 .bullet{
2703 width: 5px;
2704 height: 5px;
2705 background-color: #eaeaea;
2706 &+.bullet{
2707 margin-left: 15px;
2708 }
2709 &.active{
2710 background-color: #979797;
2711 }
2712 }
2713}
2714.setEmojiCarrouselSlide(){
2715 margin: 12px;
2716}
2717// 表情区
2718.setEmojiFace(){
2719 display:inline-block;
2720 width:12.5%;
2721 height: 24px;
2722 margin: 12px 0;
2723 background-size:contain;
2724 background-repeat:no-repeat;
2725 background-position:center center;
2726 vertical-align: middle;
2727}
2728.setEmojiFaceDelete(){
2729 .setEmojiFace();
2730 text-align: center;
2731 line-height: 28px;
2732 background-size: contain;
2733 background-repeat: no-repeat;
2734 background-position: center;
2735 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAgVBMVEUAAACnp6empqapqanZ2dm1tbWnp6fU1NTKysqqqqqmpqalpaWlpaWnp6enp6fCwsKvr6+mpqanp6empqalpaWmpqakpKSkpKSmpqalpaX////6+vqjo6ODg4Pr6+uxsbH09PTn5+eRkZGOjo7v7++1tbXk5OTe3t6Hh4e4uLioqKiJZd0mAAAAG3RSTlMA8+gw/vSu/Pn0l4lpGQv29ODWu597Wkw/JwGd9I2eAAAA7klEQVRIx+2VyRKCQAxEGUDcAPc1gIADov//geLBSgyFVJ+1b1T1g4TJdJy/HMebuUmf3MDr+OdmnFGfrG9C5Z+Ncvomaz6/ES61X8sPpP9oLA3IusIfmZoGlbA/Xo8JAoIFQcBuRBBwmOYQcDIFCVmSyrtAvPKlo0ov/FCUTa2B82ZCUo+UieKapjcNzFXDWdkS7L/rkvbcsCTe/ko37RkeUEWwXwCRyyUqImO/ALbcsCYa9gvA9JxY+/pXWSBQEeEl4U3jvxU4OD5ofDTw4cPHG79A+BXFQwCPGTzI4KiEwxiOe3ihoCsLXoq/qSc9gJ/bMuGIfAAAAABJRU5ErkJggg==');
2736}
2737
2738.setEmojiSrc(){
2739 [data-emoji="[jie]"]{ // 饥饿
2740 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_25.png);
2741 }
2742 [data-emoji="[jiong]"]{ // 囧
2743 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_18.png);
2744 }
2745 [data-emoji="[liuhan]"]{ // 流汗
2746 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_28.png);
2747 }
2748 [data-emoji="[kuangzao]"]{ // 狂燥
2749 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_36.png);
2750 }
2751 [data-emoji="[shuai]"]{ // 衰
2752 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_37.png);
2753 }
2754 [data-emoji="[dao]"]{ // 刀
2755 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_72.png);
2756 }
2757 [data-emoji="[aoman]"]{
2758 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_24.png);
2759 }
2760 [data-emoji="[baibai]"]{
2761 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_40.png);
2762 }
2763 [data-emoji="[baiyan]"]{
2764 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_23.png);
2765 }
2766 [data-emoji="[baobao]"]{
2767 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_79.png);
2768 }
2769 [data-emoji="[baoquan]"]{
2770 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_84.png);
2771 }
2772 [data-emoji="[bishi]"]{
2773 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_49.png);
2774 }
2775 [data-emoji="[bizui]"]{
2776 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_8.png);
2777 }
2778 [data-emoji="[cahan]"]{
2779 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_41.png);
2780 }
2781 [data-emoji="[caidao]"]{
2782 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_56.png);
2783 }
2784 [data-emoji="[chajin]"]{
2785 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_87.png);
2786 }
2787 [data-emoji="[chouyan]"]{
2788 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_30.png);
2789 }
2790 [data-emoji="[cool]"]{
2791 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_5.png);
2792 }
2793 [data-emoji="[dabian]"]{
2794 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_75.png);
2795 }
2796 [data-emoji="[dahaqian]"]{
2797 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_48.png);
2798 }
2799 [data-emoji="[dangao]"]{
2800 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_69.png);
2801 }
2802 [data-emoji="[daxiao]"]{
2803 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_29.png);
2804 }
2805 [data-emoji="[deyi]"]{
2806 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_17.png);
2807 }
2808 [data-emoji="[ku]"]{
2809 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_10.png);
2810 }
2811 [data-emoji="[fadai]"]{
2812 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_4.png);
2813 }
2814 [data-emoji="[fendou]"]{
2815 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_31.png);
2816 }
2817 [data-emoji="[ganga]"]{
2818 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_11.png);
2819 }
2820 [data-emoji="[gongxi]"]{
2821 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_43.png);
2822 }
2823 [data-emoji="[haixiu]"]{
2824 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_7.png);
2825 }
2826 [data-emoji="[hanruyuxia]"]{
2827 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/hanruyuxia.png);
2828 }
2829 [data-emoji="[hongchun]"]{
2830 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_66.png);
2831 }
2832 [data-emoji="[huaixiao]"]{
2833 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_45.png);
2834 }
2835 [data-emoji="[huaxiele]"]{
2836 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_65.png);
2837 }
2838 [data-emoji="[iloveyou]"]{
2839 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_88.png);
2840 }
2841 [data-emoji="[jianxiao]"]{
2842 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_52.png);
2843 }
2844 [data-emoji="[jiayou]"]{
2845 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_86.png);
2846 }
2847 [data-emoji="[jingxia]"]{
2848 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_27.png);
2849 }
2850 [data-emoji="[kafei]"]{
2851 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_61.png);
2852 }
2853 [data-emoji="[kaixin]"]{
2854 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_22.png);
2855 }
2856 [data-emoji="[kelian]"]{
2857 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_55.png);
2858 }
2859 [data-emoji="[daku]"]{
2860 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_6.png);
2861 }
2862 [data-emoji="[kulou]"]{
2863 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_38.png);
2864 }
2865 [data-emoji="[kun]"]{
2866 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_26.png);
2867 }
2868 [data-emoji="[lai]"]{
2869 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_85.png);
2870 }
2871 [data-emoji="[lanqiu]"]{
2872 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_59.png);
2873 }
2874 [data-emoji="[liuhan]"]{
2875 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_11.png);
2876 }
2877 [data-emoji="[liwu]"]{
2878 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_78.png);
2879 }
2880 [data-emoji="[maren]"]{
2881 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_32.png);
2882 }
2883 [data-emoji="[meigui]"]{
2884 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_64.png);
2885 }
2886 [data-emoji="[mifan]"]{
2887 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_62.png);
2888 }
2889 [data-emoji="[nanguo]"]{
2890 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_16.png);
2891 }
2892 [data-emoji="[no]"]{
2893 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_89.png);
2894 }
2895 [data-emoji="[ok]"]{
2896 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_90.png);
2897 }
2898 [data-emoji="[outu]"]{
2899 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_20.png);
2900 }
2901 [data-emoji="[piaochong]"]{
2902 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_74.png);
2903 }
2904 [data-emoji="[pijiu]"]{
2905 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_58.png);
2906 }
2907 [data-emoji="[qiang]"]{
2908 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_80.png);
2909 }
2910 [data-emoji="[qiaotou]"]{
2911 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_39.png);
2912 }
2913 [data-emoji="[qingqing]"]{
2914 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_53.png);
2915 }
2916 [data-emoji="[qiu]"]{
2917 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_44.png);
2918 }
2919 [data-emoji="[ruo]"]{
2920 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_81.png);
2921 }
2922 [data-emoji="[se]"]{
2923 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_3.png);
2924 }
2925 [data-emoji="[shandian]"]{
2926 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_70.png);
2927 }
2928 [data-emoji="[shouweiqu]"]{
2929 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_50.png);
2930 }
2931 [data-emoji="[shuijiao]"]{
2932 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_9.png);
2933 }
2934 [data-emoji="[taiyang]"]{
2935 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_77.png);
2936 }
2937 [data-emoji="[touxiao]"]{
2938 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_21.png);
2939 }
2940 [data-emoji="[jingya]"]{
2941 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_15.png);
2942 }
2943 [data-emoji="[wabikong]"]{
2944 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_42.png);
2945 }
2946 [data-emoji="[weiqu]"]{
2947 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_51.png);
2948 }
2949 [data-emoji="[weixiao]"]{
2950 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_1.png);
2951 }
2952 [data-emoji="[piezui]"]{
2953 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_2.png);
2954 }
2955 [data-emoji="[wen]"]{
2956 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_33.png);
2957 }
2958 [data-emoji="[woshou]"]{
2959 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_82.png);
2960 }
2961 [data-emoji="[xia]"]{
2962 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_54.png);
2963 }
2964 [data-emoji="[xigua]"]{
2965 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_57.png);
2966 }
2967 [data-emoji="[xin]"]{
2968 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_67.png);
2969 }
2970 [data-emoji="[xinsui]"]{
2971 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_68.png);
2972 }
2973 [data-emoji="[xu]"]{
2974 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_34.png);
2975 }
2976 [data-emoji="[yeah]"]{
2977 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_83.png);
2978 }
2979 [data-emoji="[yewan]"]{
2980 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_76.png);
2981 }
2982 [data-emoji="[youhengheng]"]{
2983 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_47.png);
2984 }
2985 [data-emoji="[yun]"]{
2986 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_35.png);
2987 }
2988 [data-emoji="[zhadan]"]{
2989 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_71.png);
2990 }
2991 [data-emoji="[zhayan]"]{
2992 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_13.png);
2993 }
2994 [data-emoji="[fanu]"]{
2995 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_12.png);
2996 }
2997 [data-emoji="[zhuakuang]"]{
2998 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_19.png);
2999 }
3000 [data-emoji="[zhutou]"]{
3001 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_63.png);
3002 }
3003 [data-emoji="[ziya]"]{
3004 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_14.png);
3005 }
3006 [data-emoji="[zuohengheng]"]{
3007 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_46.png);
3008 }
3009 [data-emoji="[zuqiu]"]{
3010 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_73.png);
3011 }
3012 [data-emoji="[pingpangqiu]"]{
3013 background-image:url(//res.waiqin365.com/d/common_mobile/images/emotion/im_ee_60.png);
3014 }
3015}
3016
3017
3018
3019
3020
3021// SearchBoard搜索面板控件
3022.searchBoard(){
3023 background-color: #fff;
3024 position: relative;
3025 padding-bottom: @10px;
3026}
3027.searchBoardCaption(){
3028 .flex;
3029 padding: @12px @12px @5px @12px;
3030 box-sizing: border-box;
3031}
3032.searchBoardCaptionTitle(){
3033 display: block;
3034 &:extend(.flex-1);
3035}
3036.searchBoardIconTrash(){
3037 font-family: 'iconfont';
3038 &:extend(.icon-trash all);
3039
3040 width: @16px;
3041 height: @16px;
3042 font-size: @16px;
3043 margin-right: @3px;
3044 background-size: cover;
3045 background-position: center;
3046 background-repeat: no-repeat;
3047}
3048.searchBoardTag(){
3049 display: inline-block;
3050 background: #F0F2F5;
3051 border-radius: @4px;
3052 font-size: @13px;
3053 color: #1A1A1A;
3054 padding: @2px @10px;
3055 margin: @5px @12px;
3056}
3057
3058// Close
3059.close-icon-clear{
3060 font-family: 'iconfont';
3061 &:extend(.icon-rdo-close-fill all);
3062}
3063
3064// Tree
3065.setTreeBox(){
3066 background-color:white;
3067}
3068.setTree(){
3069 box-sizing:border-box;
3070 color:#333;
3071 ul{
3072 display:none;
3073 padding-left:@10px;
3074 }
3075 &.extend ul{
3076 display:block;
3077 }
3078}
3079// Tree-icon
3080.setTreeIcon(){
3081 .flex;
3082 .flex-middle;
3083 .flex-center;
3084 color:@placeholder;
3085 padding: 0 12px;
3086 &+.tree-icon{
3087 padding-left: 0;
3088 }
3089}
3090.setTreeButtonAdd(){
3091 .flex;
3092 .flex-middle;
3093 .flex-center;
3094 color:@placeholder;
3095 width: 32px;
3096
3097 color: #d1d1d1;
3098 font-family: 'iconfont';
3099 &:extend(.icon-rdo all);
3100 &:extend(.border-b);
3101 font-size: @20px;
3102}
3103.setTreeButtonDel(){
3104 display: none;
3105 .flex-middle;
3106 .flex-center;
3107 color:@placeholder;
3108 width: 32px;
3109
3110 color: #ffae02;
3111 font-family: 'iconfont';
3112 &:extend(.icon-rdo-ok-fill all);
3113 &:extend(.border-b);
3114 font-size: @20px;
3115}
3116// Tree-line
3117.setTreeLine(){
3118 .flex;
3119 position:relative;
3120 min-width: @200px;
3121 &:active{
3122 background-color:#fff;
3123 }
3124 &.extend + ul{
3125 display: block;
3126 }
3127}
3128.setTreeLineActive(){
3129 &, &+ul{
3130 color: #333;
3131 }
3132 .tree-button-add, & + ul .tree-button-add{
3133 display: none;
3134 }
3135 .tree-button-del{
3136 .flex;
3137 }
3138}
3139// Tree-avatar
3140.setTreeAvatar(){
3141 .flex;
3142 .flex-middle;
3143 .flex-center;
3144 width:@42px;
3145 height:@42px;
3146 border-radius:100%;
3147 background-size: cover;
3148 background-position: center;
3149 background-color:@random2-bg;
3150 color:white;
3151 pointer-events: none;
3152}
3153// Tree-title
3154.setTreeTitle(){
3155 .flex;
3156 .flex-middle;
3157 .flex-1;
3158 height: @50px;
3159 &:extend(.border-b);
3160}
3161.setTreeBar(){
3162 display: block;
3163 position: relative;
3164 overflow-x: auto;
3165 white-space: nowrap;
3166 padding: @8px @4px;
3167 height: @24px;
3168 background-color:@border;
3169 &.active{
3170 display: block;
3171 & + .tree-box{
3172 padding-top: @41px;
3173 }
3174 }
3175}
3176// Tree-bar-button
3177.setTreeBarButton(){
3178 .inline-flex;
3179 .flex-middle;
3180 height: @24px;
3181 padding: 0 @8px;
3182 margin: 0 @4px;
3183 font-size: @13px;
3184 border-radius: @4px;
3185 background-color:white;
3186}
3187.setTreeIconCollapse(){
3188 &:extend(.shape-triangle-right);
3189 transition: transform 100ms;
3190}
3191.setTreeIconExtend(){
3192 transform: rotate(90deg);
3193}
3194
3195.setTreeBarButtonDel(){
3196 color: @badge-bg;;
3197 font-family: 'iconfont';
3198 &:extend(.icon-rdo-close-fill all);
3199 font-size: @20px;
3200 margin-left:@4px;
3201}
3202
3203
3204
3205// vott图片标注系统
3206.setVottContainer(){
3207 width: 100%;
3208 height: 300px;
3209}
3210
3211
3212
3213// Shape
3214@shape-arrow-color: @placeholder;
3215@shape-triangle-color: @placeholder;
3216
3217// MenuTree侧边菜单
3218@menutree-bg: #fff;
3219@menutree-tag-color: #666;
3220@menutree-tag-bg: transparent;
3221@menutree-tag-color-active: #666;
3222@menutree-tag-bg-active: transparent;
3223// 菜单容器旁边主体容器
3224.setMenuContainer(){
3225 position: absolute;
3226 top: 0;
3227 bottom: 0;
3228 left: 96px;
3229 right: 0;
3230 overflow: auto;
3231 box-sizing: border-box;
3232 background-color: white;
3233}
3234// 菜单容器
3235.setMenuTree(){
3236 background-color: @menutree-bg;
3237 overflow: auto;
3238 width: 96px;
3239 &:extend(.border-r all);
3240}
3241// 菜单容器-下级容器
3242.setSubMenuTree(){
3243 display: none;
3244 background-color: #f5f5f9;
3245 margin-right: 1px;
3246}
3247.setSubMenuTreeExtend(){
3248 display: block;
3249}
3250// 菜单
3251.setMenuTreeTag(){
3252 .flex;
3253 .flex-middle;
3254 .flex-center;
3255 width: 100%;
3256 min-height: @60px;
3257 font-size: @14px;
3258 text-align: left;
3259 position: relative;
3260 box-sizing: border-box;
3261 padding:0 6px;
3262 color: @menutree-tag-color;
3263 background-color: @menutree-tag-bg;
3264 // 画个底线
3265 &:after{
3266 content: '';
3267 position: absolute;
3268 bottom: 0;
3269 height: @1px;
3270 left:0;
3271 right:0;
3272 background-color: #e5e5e5;
3273 // border-bottom: @1px dotted #bfbfbf;
3274 }
3275 // 二级选中
3276 & + ul .menutree-tag.active{
3277 color: @primary-bg;
3278 &:before{
3279 width:0;
3280 }
3281 }
3282 & > * {
3283 pointer-events: none;
3284 }
3285}
3286// 菜单-选中
3287.setMenuTreeTagActive(){
3288 color: @menutree-tag-color-active;
3289 background-color: @menutree-tag-bg-active;
3290 // 左侧选中块
3291 &:before{
3292 position: absolute;
3293 content: '';
3294 top: 0;
3295 left: 0;
3296 width: 2px;
3297 height: 100%;
3298 background: @primary-bg;
3299 }
3300}
3301// 菜单-文字
3302.setMenuTreeFont(){
3303 &:extend(.flex-1);
3304 padding:0 2px;
3305 &:extend(.nowrap2);
3306}
3307// 菜单-图标
3308.setMenuTreeIcon(){
3309 display: block;
3310 width: 15px;
3311 vertical-align: -2px;
3312}
3313// 菜单-更多箭头
3314.setMenuTreeMore(){
3315 &:extend(.shape-triangle-down);
3316}
3317.setMenuTreeMoreExtend(){
3318 transform-origin:center;
3319 transform: rotate(180deg);
3320}
3321
3322
3323
3324// MenuTiled弹出菜单
3325@menutiled-bg: #fff;
3326@menutiled-slot-max-height: 300px;
3327@menutiled-slot-sub-bg: #f5f5f9;
3328@menutiled-tag-height: @40px;
3329@menutiled-tag-color: #666;
3330@menutiled-tag-bg: transparent;
3331@menutiled-tag-color-active: @primary-bg;
3332@menutiled-tag-bg-active: transparent;
3333.setMenuTiled(){
3334 background-color: @menutiled-bg;
3335 .flex;
3336}
3337// 菜单容器
3338.setMenuTiledSlot(){
3339 width:1%;
3340 &:extend(.flex-1);
3341 overflow-x: hidden;
3342 overflow-y: auto;
3343 max-height: @menutiled-slot-max-height;
3344}
3345// 菜单容器-下级菜单
3346.setMenuTiledSlotSub(){
3347 .setMenuTiledSlot();
3348 background-color: @menutiled-slot-sub-bg;
3349}
3350// 菜单
3351.setMenuTiledTag(){
3352 .flex;
3353 .flex-middle;
3354 .flex-center;
3355 min-height: @menutiled-tag-height;
3356 text-align: left;
3357 position: relative;
3358 box-sizing: border-box;
3359 color: @menutiled-tag-color;
3360 background-color: @menutiled-tag-bg;
3361 margin-left: 12px;
3362 & > * {
3363 pointer-events: none;
3364 }
3365 // 画个底线
3366 &:after{
3367 content: '';
3368 position: absolute;
3369 bottom: 0;
3370 height: @1px;
3371 left:0;
3372 right:0;
3373 background-color: #e5e5e5;
3374 // border-bottom: @1px dotted #bfbfbf;
3375 }
3376}
3377// 菜单-选中
3378.setMenuTiledTagActive(){
3379 color: @menutiled-tag-color-active;
3380 background-color: @menutiled-tag-bg-active;
3381 .menutiled-select {
3382 visibility: visible;
3383 }
3384}
3385// 菜单-文字
3386.setMenuTiledFont(){
3387 &:extend(.flex-1);
3388 padding:0 2px;
3389 &:extend(.nowrap2);
3390}
3391// 菜单-图标
3392.setMenuTiledIcon(){
3393 display: block;
3394 width: 15px;
3395 vertical-align: -2px;
3396}
3397// 菜单-更多箭头
3398.setMenuTiledMore(){
3399 width: 24px;
3400 height: 24px;
3401 &:extend(.shape-arrow-right all);
3402 &:after{
3403 width: 8px;
3404 height: 8px;
3405 border-width: 2px 0 0 2px;
3406 }
3407}
3408// 菜单-更多箭头-展开
3409.setMenuTiledMoreExtend(){
3410 border-color: @primary-bg;
3411}
3412// 菜单-选中图标
3413.setMenuTiledSelect(){
3414 visibility: hidden;
3415 font-family: 'iconfont';
3416 &:extend(.icon-ok-fill all);
3417 width: 18px;
3418 height: 18px;
3419 font-size: 18px;
3420 margin-right: 4px;
3421}
3422
3423
3424// Carrousel轮播
3425.setCarrouselPage(){
3426 // 绝对定布局
3427 position:absolute;
3428 top: 0;
3429 bottom: 0;
3430 left: 0;
3431 right: 0;
3432 overflow: hidden;
3433 .carrousel-wrapper, .carrousel-slide{
3434 height: 100%;
3435 }
3436
3437 // flex布局, flex全屏, 在andriod4.4和苹果部分手机, Carrousel切换会白屏
3438 // position: relative;
3439 // .flex;
3440 // .flex-1;
3441 // overflow: hidden;
3442 // .carrousel-wrapper{
3443 // .flex;
3444 // .flex-1;
3445 // }
3446}
3447.setCarrouselContainer(){
3448 position: relative;
3449 width: 100%;
3450 overflow: hidden;
3451 @media (min-width: 992px) {
3452 &:hover{
3453 .carrousel-prev{
3454 display: block;
3455 }
3456 .carrousel-next{
3457 display: block;
3458 }
3459 }
3460 }
3461}
3462.setCarrouselWrapper(){
3463 position:relative;
3464 width: @1122px;
3465 left:0;
3466 &:after{
3467 display:table;
3468 content:'';
3469 clear: both;
3470 zoom:1;
3471 }
3472}
3473.setCarrouselSlide(){
3474 position: relative;
3475 float:left;
3476 overflow: auto;
3477 background-size:cover;
3478 background-position: center;
3479 background-repeat: no-repeat;
3480 box-sizing: border-box;
3481 // phone
3482 @media (max-width: 576px) {
3483 & {
3484 background-size: cover;
3485 }
3486 }
3487 // phone-lg
3488 @media (min-width: 576px) {
3489 & {
3490 background-size: cover;
3491 }
3492 }
3493 // pad
3494 @media (min-width: 768px) {
3495 & {
3496 background-size: cover;
3497 }
3498 }
3499 // pc
3500 @media (min-width: 992px) {
3501 & {
3502 background-size: cover;
3503 }
3504 }
3505 // pc-lg
3506 @media (min-width: 1200px) {
3507 & {
3508 background-size: cover;
3509 }
3510 }
3511}
3512
3513// Carrousel-图片
3514.setCarrouselSlideImg(){
3515 pointer-events: none;
3516 margin: 0 auto;
3517 display: block;
3518 width: 100%;
3519}
3520// Carrousel-标题
3521.setCarrouselSummary(){
3522 position: absolute;
3523 .flex;
3524 bottom: 0;
3525 width: 100%;
3526 padding:@8px @10px;
3527 background-color: rgba(0,0,0,.5);
3528 text-overflow:nowrap;
3529 box-sizing: border-box;
3530 color:white;
3531 text-align: left;
3532}
3533.setCarrouselSummaryIcon(){
3534 display: block;
3535 font-size: @20px;
3536 width: @20px;
3537 height: @20px;
3538 &+.carrousel-summary-caption{
3539 margin-left: @4px;
3540 }
3541}
3542.setCarrouselSummaryCaption(){
3543 display: block;
3544 &:extend(.flex-1);
3545}
3546// Carrousel-分页
3547.setCarrouselPagination(){
3548 position: absolute;
3549 left:0;
3550 bottom:@10px;
3551 width: 100%;
3552 line-height: 0;
3553 font-size: 0;
3554 text-align: center;
3555}
3556.setCarrouselBullet(){
3557 display: inline-block;
3558 opacity: 1;
3559 width: @5px;
3560 height: @5px;
3561 border-radius: 100%;
3562 line-height: @8px;
3563 font-size: @12px;
3564 bottom: @10px;
3565 width: @8px;
3566 height: @8px;
3567 background-color:#ccc;
3568 &+.bullet{
3569 margin-left:@5px;
3570 }
3571}
3572.setCarrouselBulletActive(){
3573 background-color:@primary-bg;
3574}
3575.setCarrouselPrevNext(){
3576 width: 24px;
3577 height: 40px;
3578 background-color: rgba(0,0,0,.2);
3579 display: none;
3580 &:after{
3581 position:absolute;
3582 content: "";
3583 width: 12px;
3584 height: 12px;
3585 top:50%;
3586 border-style: solid;
3587 border-color: white;
3588 border-width: 1px 0 0 1px;
3589 left:50%;
3590 transform-origin: center;
3591 }
3592}
3593.setCarrouselPrev(){
3594 left:0;
3595 &:after{
3596 transform: translate(-30%, -50%) rotate(315deg);
3597 }
3598}
3599.setCarrouselNext(){
3600 right:0;
3601 &:after{
3602 transform: translate(-80%, -50%) rotate(134deg);
3603 }
3604}
3605// ticket票券
3606@ticket-sawtooth-bg: #E86366;
3607@ticket-disabled-sawtooth-bg: #B9BEC5;
3608.setTicket(){
3609 position: relative;
3610 margin: 12px 14px;
3611 height: 112px;
3612 .flex;
3613 background-color: #fff;
3614 box-shadow: 0 @1px @2px 0 rgba(0,0,0,0.12);
3615 border-radius: @2px;
3616 &:after{
3617 content: '';
3618 position: absolute;
3619 top: 0;
3620 bottom: 0;
3621 left: -@9px;
3622 display: block;
3623 background-position: 100% 35%;
3624 width: @14px;
3625 background-size: @28px @7px;
3626 background-image: linear-gradient(-45deg,@ticket-sawtooth-bg 25%,transparent 25%,transparent),linear-gradient(-135deg,@ticket-sawtooth-bg 25%,transparent 25%,transparent),linear-gradient(-45deg,transparent 75%,@ticket-sawtooth-bg 75%),linear-gradient(-135deg,transparent 75%,@ticket-sawtooth-bg 75%);
3627 }
3628 &.disabled {
3629 &:after{
3630 background-image: linear-gradient(-45deg,@ticket-disabled-sawtooth-bg 25%,transparent 25%,transparent),linear-gradient(-135deg,@ticket-disabled-sawtooth-bg 25%,transparent 25%,transparent),linear-gradient(-45deg,transparent 75%,@ticket-disabled-sawtooth-bg 75%),linear-gradient(-135deg,transparent 75%,@ticket-disabled-sawtooth-bg 75%);
3631 }
3632 .ticket-legend{
3633 color: white;
3634 background-image: linear-gradient(90deg, #B9BEC5 1%, #CDD1D6 100%);
3635 }
3636 }
3637}
3638.setTicketLegend(){
3639 .flex;
3640 .flex-middle;
3641 .flex-center;
3642 width: 100px;
3643 height: 100%;
3644 color: white;
3645 background-image: linear-gradient(90deg, #E86366 1%, #FD905C 100%);;
3646}
3647.setTicketContainer(){
3648 .flex-1;
3649 height: 100%;
3650}
3651
3652
3653
3654
3655// Row
3656.setRow(){
3657 .flex;
3658 // web上用法
3659 // position: relative;
3660 // &:before, &:after {
3661 // display: table;
3662 // content: " ";
3663 // clear: both;
3664 // }
3665}
3666.setRowCol(){
3667 // web上用法
3668 // position: relative;
3669 // min-height: 1px;
3670 // box-sizing: border-box;
3671 // float: left;
3672}