1812 lines
32 KiB
Vue
1812 lines
32 KiB
Vue
/**
|
|
* BaseCloud APP更新检测组件
|
|
v1.0.4
|
|
*/
|
|
<template>
|
|
<view class="base-cloud" style="display: inline-block;">
|
|
<view class="father" style="display: flex;align-items: center;" v-if="showVersion" @click.stop.prevent="checkVersion">
|
|
<text class="version-text">版本{{version}}</text>
|
|
<view class="abs top right" v-if="updateData.updated" style="top: -3px;right: -7px;">
|
|
<view class="w7 h7 rds redBg"></view>
|
|
</view>
|
|
</view>
|
|
<view class="fixed z20 wp6 flex ct plr50 pb50 " v-if="show">
|
|
<view class="w100p showIn" :animation="inData" style="max-width: 300px;">
|
|
<view class="rds12" :style="{'background-color':color}">
|
|
<view class="father">
|
|
<view class="h120 father hidden">
|
|
<view class="abs top left50p">
|
|
<image src="./static/cloudRight.png" mode="widthFix" class="w500 h120 animated goAway infinite"></image>
|
|
</view>
|
|
<view class="abs top right50p">
|
|
<image src="./static/cloudLeft.png" mode="widthFix" class="w500 h120 animated goAwayLeft infinite"></image>
|
|
</view>
|
|
<image class="abs top30 left30 w10 h10 animated infinite fadeOut slow" src="./static/star.png" mode="widthFix"></image>
|
|
<image class="abs top60 left80 w10 h10 animated infinite fadeOut slowest delay-1s" src="./static/star.png" mode="widthFix"></image>
|
|
<image class="abs top20 right20 w10 h10 animated infinite fadeOut slower delay-2s" src="./static/star.png" mode="widthFix"></image>
|
|
<image class="abs top20 right50 w30 h30 animated fadeOutRight infinite slowest" src="./static/smallCloud.png"
|
|
mode="widthFix"></image>
|
|
<image class="abs top30 left50 w30 h30 animated fadeOutRight infinite slow8 " src="./static/smallCloud.png" mode="widthFix"></image>
|
|
</view>
|
|
<view class="abs bottom animated bounceUp infinite">
|
|
<view class="animated goUp delay-06s">
|
|
<image src="./static/airship.png" mode="widthFix" class="w80 h75 center-block father z3"></image>
|
|
<view class="father" style="top: -5px;">
|
|
<image src="./static/shipAir.png" mode="widthFix" class="w40 h85 center-block animated infinite splashOut"></image>
|
|
<view class="abs">
|
|
<image src="./static/shipAir.png" mode="widthFix" class="w40 h85 center-block animated infinite splashOut delay-03s"></image>
|
|
</view>
|
|
<view class="abs">
|
|
<image src="./static/shipAir.png" mode="widthFix" class="w40 h85 center-block animated infinite splashOut delay-06s"></image>
|
|
</view>
|
|
<view class="abs bottom" style="bottom: -80upx;">
|
|
<image src="./static/shipGas.png" mode="widthFix" class="w40 h85 center-block animated infinite splash"></image>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class=" whiteBg hidden plr20 father z3 rdsBr12 rdsBl12" :class="{'pb100':progress <= 0 || progress >= 100 || completed}">
|
|
<view class="ptb10 fz16 bold">
|
|
<block v-if="progress == 0">
|
|
{{title}} {{ updateData.version ? 'v' + updateData.version : ''}}
|
|
</block>
|
|
<block v-else-if="progress <=100 && !completed">
|
|
<view>
|
|
<view class="fz30 normal avanti pt15 text-center">
|
|
{{ progress }}
|
|
<text class="fz12 ml2">
|
|
%
|
|
</text>
|
|
</view>
|
|
|
|
<view class="text-center pb40 op8 gray fz14 normal">
|
|
版本更新中,不要离开...
|
|
</view>
|
|
</view>
|
|
</block>
|
|
<view class="text-center pt15" v-else-if="completed">
|
|
版本升级成功
|
|
<view class="pb40 op8 gray fz14 normal pt5">
|
|
更新已完成,请重启应用体验新版
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<scroll-view scroll-y="true" class="scroll-view h60 autoY pb20" v-if="progress == 0">
|
|
<view class="column">
|
|
<text v-if="updateData.description.length === 0">
|
|
{{ defaultContent }}
|
|
</text>
|
|
<text v-for="(item, index) in updateData.description" :key="index">
|
|
{{ index + 1 }}.{{ item }}
|
|
</text>
|
|
</view>
|
|
</scroll-view>
|
|
<view class="pd50 pt25" v-else-if="progress < 100">
|
|
<view class="grayBg bd rds23">
|
|
<view class="grayBg rds23">
|
|
<view class="ptb3 rds23" :style="{width:progress+'%','background-color':color}"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="father">
|
|
<view class="abs top left50p roundBox rds text-center" :style="{'background-color':color}">
|
|
<view class="pt30" v-if="!completed">
|
|
<button hover-class="op9" @tap.stop="download" class="btn bd2 whiteBg line rds23 inline plr50 ptb10 fz16">
|
|
立即升级
|
|
</button>
|
|
</view>
|
|
<view class="pt30" v-else>
|
|
<button hover-class="op8" @tap.stop="restart" class="btn bd2 whiteBg line rds23 inline plr50 ptb10 fz16">
|
|
立即重启
|
|
</button>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="op9 father" v-if="progress == 0">
|
|
<view class="abs">
|
|
<view class="flex ct ">
|
|
<view class="h30 bl3 whiteBd"></view>
|
|
</view>
|
|
<view class="close-btn" @click="hide">
|
|
<text class="mix-icon icon-close"></text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<mix-loading v-if="isLoading"></mix-loading>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: "version-update",
|
|
props: {
|
|
title: {
|
|
default: "发现新版本"
|
|
},
|
|
defaultContent: {
|
|
default: "快来升级,体验最新的功能吧!"
|
|
},
|
|
showVersion: {
|
|
default: true
|
|
},
|
|
autoShow: {
|
|
default: false
|
|
},
|
|
isCache: {
|
|
default: true
|
|
},
|
|
updateUrl: {
|
|
default: "api/base-app-version"
|
|
},
|
|
color: {
|
|
default: "#ff536f"
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
show: false,
|
|
version: "1.0.0",
|
|
updateData: {
|
|
description: []
|
|
},
|
|
progress: 0,
|
|
completed: false,
|
|
inData: null
|
|
};
|
|
},
|
|
created() {
|
|
// #ifdef APP-PLUS
|
|
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
|
|
this.version = widgetInfo.version;
|
|
});
|
|
// #endif
|
|
},
|
|
methods: {
|
|
async checkVersion(e) {
|
|
console.log(e);
|
|
const res = await this.$request('version', 'check', {
|
|
version: this.version
|
|
}, {
|
|
showLoading: true
|
|
})
|
|
if (res.status === 0) {
|
|
this.$util.msg(res.msg);
|
|
} else {
|
|
res.data.description = res.data.description.split(';');
|
|
this.updateData = res.data;
|
|
this.show = true;
|
|
}
|
|
},
|
|
|
|
download(e) {
|
|
if(this.isDownloading){
|
|
return;
|
|
}
|
|
this.isDownloading = true;
|
|
const task = uni.downloadFile({
|
|
url: this.updateData.downloadLink,
|
|
success: (downloadResult) => {
|
|
this.isDownloading =false;
|
|
uni.hideLoading();
|
|
if (downloadResult.statusCode === 200) {
|
|
plus.runtime.install(downloadResult.tempFilePath, {
|
|
force: false
|
|
}, (e) => {
|
|
this.downloadSuccess(e);
|
|
}, (err) => {
|
|
this.downloadError(err);
|
|
});
|
|
}
|
|
},
|
|
fail: err => {
|
|
this.isDownloading =false;
|
|
this.downloadError(err);
|
|
}
|
|
});
|
|
|
|
task.onProgressUpdate((e) => {
|
|
console.log(e.progress);
|
|
this.progress = e.progress;
|
|
});
|
|
},
|
|
downloadError(e) {
|
|
this.show = false;
|
|
this.progress = 0;
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '更新失败,请稍后再试',
|
|
showCancel: false,
|
|
confirmColor: '#414cd9'
|
|
});
|
|
},
|
|
downloadSuccess(e) {
|
|
this.completed = true;
|
|
},
|
|
restart(e) {
|
|
this.show = false;
|
|
this.completed = false;
|
|
this.progress = 0;
|
|
// #ifdef APP-PLUS
|
|
plus.runtime.restart();
|
|
// #endif
|
|
},
|
|
hide(e) {
|
|
var animation = uni.createAnimation({
|
|
duration: 300,
|
|
timingFunction: 'ease',
|
|
});
|
|
animation.scale(0).opacity(0).step();
|
|
this.inData = animation.export();
|
|
setTimeout((e) => {
|
|
this.show = false;
|
|
this.inData = null;
|
|
}, 420);
|
|
},
|
|
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.version-text{
|
|
margin-right: 10rpx;
|
|
font-size: 26rpx;
|
|
color: #999;
|
|
position: relative;
|
|
z-index: -2rpx;
|
|
}
|
|
.close-btn{
|
|
display: flex;
|
|
justify-content: center;
|
|
color: #fff;
|
|
|
|
.mix-icon{
|
|
margin-top: -20rpx;
|
|
padding: 20rpx;
|
|
font-size: 48rpx;
|
|
}
|
|
}
|
|
.scroll-view{
|
|
height: auto !important;
|
|
min-height: 120rpx;
|
|
max-height: 17vh;
|
|
|
|
text{
|
|
margin-bottom: 16rpx;
|
|
line-height: 1.5;
|
|
font-size: 28rpx;
|
|
}
|
|
}
|
|
.roundBox {
|
|
width: 5000upx;
|
|
height: 5000upx;
|
|
margin-left: -2500upx;
|
|
}
|
|
|
|
.animated {
|
|
-webkit-animation-duration: 1s;
|
|
animation-duration: 1s;
|
|
-webkit-animation-fill-mode: both;
|
|
animation-fill-mode: both;
|
|
animation-timing-function: linear;
|
|
}
|
|
|
|
.animated.infinite {
|
|
-webkit-animation-iteration-count: infinite;
|
|
animation-iteration-count: infinite;
|
|
}
|
|
|
|
@keyframes goUp {
|
|
from {
|
|
-webkit-transform: translate3d(0, 70%, 0);
|
|
transform: translate3d(0, 70%, 0);
|
|
}
|
|
|
|
to {
|
|
-webkit-transform: translate3d(0, 0, 0);
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
}
|
|
|
|
.goUp {
|
|
-webkit-animation-name: goUp;
|
|
animation-name: goUp;
|
|
-webkit-animation-duration: 600ms;
|
|
animation-duration: 600ms;
|
|
animation-timing-function: ease-in;
|
|
}
|
|
|
|
@keyframes splash {
|
|
|
|
0,
|
|
100% {
|
|
transform: scaleX(0.9);
|
|
}
|
|
|
|
5%,
|
|
95% {
|
|
transform: scaleX(1.02);
|
|
}
|
|
|
|
10%,
|
|
80% {
|
|
transform: scaleX(1.05);
|
|
}
|
|
|
|
25%,
|
|
75% {
|
|
transform: scaleX(1.08);
|
|
}
|
|
|
|
50% {
|
|
transform: scaleX(1.1);
|
|
}
|
|
}
|
|
|
|
.splash {
|
|
-webkit-animation-name: splash;
|
|
animation-name: splash;
|
|
-webkit-animation-duration: 0.6s;
|
|
animation-duration: 0.6s;
|
|
animation-timing-function: linear;
|
|
}
|
|
|
|
@-webkit-keyframes splashOut {
|
|
from {
|
|
opacity: 1;
|
|
transform: scaleX(0);
|
|
}
|
|
|
|
to {
|
|
opacity: 0;
|
|
transform: scaleX(2);
|
|
}
|
|
}
|
|
|
|
.splashOut {
|
|
-webkit-animation-name: splashOut;
|
|
animation-name: splashOut;
|
|
-webkit-animation-duration: 1s;
|
|
animation-duration: 1s;
|
|
}
|
|
|
|
@keyframes bounceUp {
|
|
0% {
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
50% {
|
|
transform: translate3d(0, -30rpx, 0);
|
|
}
|
|
}
|
|
|
|
.bounceUp {
|
|
-webkit-animation-name: bounceUp;
|
|
animation-name: bounceUp;
|
|
-webkit-animation-duration: 1.6s;
|
|
animation-duration: 1.6s;
|
|
animation-timing-function: linear;
|
|
}
|
|
|
|
@keyframes fadeOut {
|
|
|
|
0,
|
|
100% {
|
|
opacity: 1;
|
|
}
|
|
|
|
50% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
.fadeOut {
|
|
-webkit-animation-name: fadeOut;
|
|
animation-name: fadeOut;
|
|
}
|
|
|
|
@keyframes fadeOutRight {
|
|
0% {
|
|
opacity: 0;
|
|
transform: translate3d(-200%, 0, 0);
|
|
}
|
|
|
|
50% {
|
|
opacity: 1;
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
100% {
|
|
opacity: 0;
|
|
transform: translate3d(200%, 0, 0);
|
|
}
|
|
}
|
|
|
|
.fadeOutRight {
|
|
-webkit-animation-name: fadeOutRight;
|
|
animation-name: fadeOutRight;
|
|
}
|
|
|
|
.animated.delay-03s {
|
|
-webkit-animation-delay: 0.3s;
|
|
animation-delay: 0.3s;
|
|
}
|
|
|
|
.animated.delay-06s {
|
|
-webkit-animation-delay: 0.6s;
|
|
animation-delay: 0.6s;
|
|
}
|
|
|
|
.animated.delay-1s {
|
|
-webkit-animation-delay: 1s;
|
|
animation-delay: 1s;
|
|
}
|
|
|
|
.animated.delay-2s {
|
|
-webkit-animation-delay: 2s;
|
|
animation-delay: 2s;
|
|
}
|
|
|
|
.animated.delay-3s {
|
|
-webkit-animation-delay: 3s;
|
|
animation-delay: 3s;
|
|
}
|
|
|
|
.animated.fast {
|
|
-webkit-animation-duration: 800ms;
|
|
animation-duration: 800ms;
|
|
}
|
|
|
|
.animated.faster {
|
|
-webkit-animation-duration: 500ms;
|
|
animation-duration: 500ms;
|
|
}
|
|
|
|
.animated.fastest {
|
|
-webkit-animation-duration: 200ms;
|
|
animation-duration: 200ms;
|
|
}
|
|
|
|
.animated.slow {
|
|
-webkit-animation-duration: 2s;
|
|
animation-duration: 2s;
|
|
}
|
|
|
|
.animated.slower {
|
|
-webkit-animation-duration: 3s;
|
|
animation-duration: 3s;
|
|
}
|
|
|
|
.animated.slowest {
|
|
-webkit-animation-duration: 10s;
|
|
animation-duration: 10s;
|
|
}
|
|
|
|
.animated.slow4 {
|
|
-webkit-animation-duration: 5s;
|
|
animation-duration: 5s;
|
|
}
|
|
|
|
.animated.slow5 {
|
|
-webkit-animation-duration: 5s;
|
|
animation-duration: 5s;
|
|
}
|
|
|
|
.animated.slow8 {
|
|
-webkit-animation-duration: 8s;
|
|
animation-duration: 8s;
|
|
}
|
|
|
|
.goAway {
|
|
transform: translate3d(-50%, 10%, 0);
|
|
-webkit-animation-name: goAway;
|
|
animation-name: goAway;
|
|
-webkit-animation-duration: 2s;
|
|
animation-duration: 2s;
|
|
}
|
|
|
|
@keyframes goAway {
|
|
from {
|
|
transform: translate3d(-50%, 10%, 0);
|
|
}
|
|
|
|
to {
|
|
transform: translate3d(-1.3%, -17.6%, 0);
|
|
}
|
|
}
|
|
|
|
.goAwayLeft {
|
|
transform: translate3d(50%, 10%, 0);
|
|
-webkit-animation-name: goAwayLeft;
|
|
animation-name: goAwayLeft;
|
|
-webkit-animation-duration: 2s;
|
|
animation-duration: 2s;
|
|
}
|
|
|
|
@keyframes goAwayLeft {
|
|
from {
|
|
transform: translate3d(50%, 10%, 0);
|
|
}
|
|
|
|
to {
|
|
transform: translate3d(2%, -17%, 0);
|
|
}
|
|
}
|
|
|
|
@keyframes showIn {
|
|
|
|
0% {
|
|
opacity: 0;
|
|
transform: scale3d(0.5, 0.5, 0.5);
|
|
}
|
|
|
|
100% {
|
|
opacity: 1;
|
|
transform: scale3d(1, 1, 1);
|
|
}
|
|
}
|
|
|
|
.showIn {
|
|
animation-duration: 0.4s;
|
|
animation-name: showIn;
|
|
}
|
|
|
|
div,a,img,span,page,view,navigator,image,text,input,textarea,button,form{
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
a{
|
|
text-decoration: none;
|
|
color: $main;
|
|
}
|
|
|
|
form{
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
|
|
image{will-change: transform}
|
|
|
|
input,textarea,form{
|
|
width: 100%;
|
|
height: auto;
|
|
min-height: 10px;
|
|
display: block;
|
|
font-size: inherit;
|
|
}
|
|
|
|
button{
|
|
color: inherit;
|
|
line-height: inherit;
|
|
margin: 0;
|
|
background-color: transparent;
|
|
padding: 0;
|
|
-webkit-border-radius: 0;
|
|
-moz-border-radius: 0;
|
|
border-radius: 0;
|
|
&:after{
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
switch .uni-switch-input{
|
|
margin-right: 0;
|
|
}
|
|
.wx-switch-input,.uni-switch-input{width:42px !important;height:22px !important;}
|
|
.wx-switch-input::before,.uni-switch-input::before{width:40px !important;height: 20px !important;}
|
|
.wx-switch-input::after,.uni-switch-input::after{width: 20px !important;height: 20px !important;}
|
|
|
|
|
|
/**背景颜色**/
|
|
.bg{
|
|
background-color: $main;
|
|
color: $mainInverse;
|
|
}
|
|
.gradualBg{
|
|
background-image: $mainGradual;
|
|
color: $mainGradualInverse ;
|
|
}
|
|
.grayBg{
|
|
background-color: #f7f7f7;
|
|
color: #30302f;
|
|
}
|
|
.whiteBg{
|
|
background-color: #fff;
|
|
color: #000;
|
|
}
|
|
.blackBg{
|
|
background-color: #000;
|
|
color: #fff;
|
|
}
|
|
.orangeBg{
|
|
background-color: $orange;
|
|
color: #fff;
|
|
}
|
|
.redBg{
|
|
background-color: $red;
|
|
color: #fff;
|
|
}
|
|
.yellowBg{
|
|
background-color: $yellow;
|
|
color: #000;
|
|
}
|
|
.greenBg{
|
|
background-color: $green;
|
|
color: #fff;
|
|
}
|
|
.brownBg{
|
|
background-color: $brown;
|
|
color: #fff;
|
|
}
|
|
.blueBg{
|
|
background-color: $blue;
|
|
color: #fff;
|
|
}
|
|
.purpleBg{
|
|
background-color: $purple;
|
|
color: #fff;
|
|
}
|
|
|
|
/* 文字颜色 */
|
|
.main{
|
|
color: $main;
|
|
}
|
|
.green{
|
|
color: $green;
|
|
}
|
|
.red{
|
|
color: $red;
|
|
}
|
|
.yellow{
|
|
color: $yellow;
|
|
}
|
|
.black{
|
|
color: $black;
|
|
}
|
|
.white{
|
|
color: $white;
|
|
}
|
|
.gray{
|
|
color: $gray;
|
|
}
|
|
.grey{
|
|
color: $grey;
|
|
}
|
|
.orange{
|
|
color: $orange;
|
|
}
|
|
.brown{
|
|
color: $brown;
|
|
}
|
|
.blue{
|
|
color: $blue;
|
|
}
|
|
.purple{
|
|
color: $purple;
|
|
}
|
|
|
|
.hoverMain{
|
|
&:hover{
|
|
color: $main;
|
|
}
|
|
}
|
|
|
|
.hoverGreen{
|
|
&:hover{
|
|
color: $green;
|
|
}
|
|
}
|
|
|
|
.hoverRed{
|
|
&:hover{
|
|
color: $red;
|
|
}
|
|
}
|
|
|
|
.hoverBlue{
|
|
&:hover{
|
|
color: $blue;
|
|
}
|
|
}
|
|
|
|
.hoverGray{
|
|
&:hover{
|
|
color: $gray;
|
|
}
|
|
}
|
|
|
|
.hoverWhite{
|
|
&:hover{
|
|
color: $white;
|
|
}
|
|
}
|
|
|
|
.hoverBlack{
|
|
&:hover{
|
|
color: $black;
|
|
}
|
|
}
|
|
|
|
.hoverOrange{
|
|
&:hover{
|
|
color: $orange;
|
|
}
|
|
}
|
|
|
|
.hoverYellow{
|
|
&:hover{
|
|
color: $yellow;
|
|
}
|
|
}
|
|
|
|
.hoverBrown{
|
|
&:hover{
|
|
color: $brown;
|
|
}
|
|
}
|
|
|
|
.hoverPurple{
|
|
&:hover{
|
|
color: $purple;
|
|
}
|
|
}
|
|
|
|
/* 宽度 高度 */
|
|
$w:0;
|
|
@while $w <= 500 {
|
|
@if $w <= 100 {
|
|
.w#{$w}p{
|
|
width: $w*1%;
|
|
}
|
|
.h#{$w}p{
|
|
height: $w*1%;
|
|
}
|
|
@if $w == 100 {
|
|
.100p{
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.ww{
|
|
width: 100vw;
|
|
}
|
|
.hh{
|
|
height: 100vh;
|
|
}
|
|
}
|
|
}
|
|
.w#{$w}{
|
|
width: $w*2upx;
|
|
}
|
|
.h#{$w}{
|
|
height: $w*2upx;
|
|
}
|
|
@if $w < 10 {
|
|
$w : $w + 1 ;
|
|
} @else{
|
|
$w : $w + 5 ;
|
|
}
|
|
}
|
|
|
|
|
|
/* 字号 */
|
|
@for $fz from 12 through 100 {
|
|
.fz#{$fz}{
|
|
font-size: $fz*2upx !important;
|
|
}
|
|
}
|
|
|
|
/* 边距 - 覆盖顺序是小的尺寸覆盖大的尺寸 少的方向覆盖多的方向 */
|
|
$s : 0 ;
|
|
@while $s <= 500 {
|
|
.pd#{$s}{
|
|
padding: $s*2upx!important;
|
|
}
|
|
.m#{$s}{
|
|
margin: $s*2upx!important;
|
|
}
|
|
@if $s == 15 {
|
|
.pd{
|
|
padding: 30upx!important;
|
|
}
|
|
.m{
|
|
margin: 30upx!important;
|
|
}
|
|
}
|
|
@if $s < 10 {
|
|
$s : $s + 1 ;
|
|
} @else if($s < 100){
|
|
$s : $s + 5 ;
|
|
} @else if($s < 300){
|
|
$s : $s + 10 ;
|
|
} @else{
|
|
$s : $s + 50 ;
|
|
}
|
|
}
|
|
|
|
$s : 0 ;
|
|
@while $s <= 500 {
|
|
.ptb#{$s}{
|
|
padding-top: $s*2upx!important;
|
|
padding-bottom: $s*2upx!important;
|
|
}
|
|
.plr#{$s}{
|
|
padding-left: $s*2upx!important;
|
|
padding-right: $s*2upx!important;
|
|
}
|
|
.mtb#{$s}{
|
|
margin-top: $s*2upx!important;
|
|
margin-bottom: $s*2upx!important;
|
|
}
|
|
.mlr#{$s}{
|
|
margin-left: $s*2upx!important;
|
|
margin-right: $s*2upx!important;
|
|
}
|
|
@if $s == 15 {
|
|
.ptb{
|
|
padding-top: 30upx!important;
|
|
padding-bottom: 30upx!important;
|
|
}
|
|
.plr{
|
|
padding-left: 30upx!important;
|
|
padding-right: 30upx!important;
|
|
}
|
|
|
|
.mlr{
|
|
margin-left: 30upx!important;
|
|
margin-right: 30upx!important;
|
|
}
|
|
.mtb{
|
|
margin-top: 30upx!important;
|
|
margin-bottom: 30upx!important;
|
|
}
|
|
}
|
|
@if $s < 10 {
|
|
$s : $s + 1 ;
|
|
} @else if($s < 100){
|
|
$s : $s + 5 ;
|
|
} @else if($s < 300){
|
|
$s : $s + 10 ;
|
|
} @else{
|
|
$s : $s + 50 ;
|
|
}
|
|
}
|
|
|
|
$s : 0 ;
|
|
@while $s <= 500 {
|
|
.pl#{$s}{
|
|
padding-left: $s*2upx!important;
|
|
}
|
|
.pr#{$s}{
|
|
padding-right: $s*2upx!important;
|
|
}
|
|
.pt#{$s}{
|
|
padding-top: $s*2upx!important;
|
|
}
|
|
.pb#{$s}{
|
|
padding-bottom: $s*2upx!important;
|
|
}
|
|
.ml#{$s}{
|
|
margin-left: $s*2upx!important;
|
|
}
|
|
.mr#{$s}{
|
|
margin-right: $s*2upx!important;
|
|
}
|
|
.mt#{$s}{
|
|
margin-top: $s*2upx!important;
|
|
}
|
|
.mb#{$s}{
|
|
margin-bottom: $s*2upx!important;
|
|
}
|
|
@if $s == 15 {
|
|
.pt{
|
|
padding-top: 30upx!important;
|
|
}
|
|
.pb{
|
|
padding-bottom: 30upx!important;
|
|
}
|
|
.pl{
|
|
padding-left: 30upx!important;
|
|
}
|
|
.pr{
|
|
padding-right: 30upx!important;
|
|
}
|
|
.mt{
|
|
margin-top: 30upx!important;
|
|
}
|
|
.mr{
|
|
margin-right: 30upx!important;
|
|
}
|
|
.ml{
|
|
margin-left: 30upx!important;
|
|
}
|
|
.mb{
|
|
margin-bottom: 30upx!important;
|
|
}
|
|
}
|
|
@if $s < 10 {
|
|
$s : $s + 1 ;
|
|
} @else if($s < 100){
|
|
$s : $s + 5 ;
|
|
} @else if($s < 300){
|
|
$s : $s + 10 ;
|
|
} @else{
|
|
$s : $s + 50 ;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* 文字溢出隐藏 */
|
|
.clip{
|
|
width: 100%;
|
|
display: -webkit-box;
|
|
overflow: hidden;
|
|
-webkit-line-clamp: 1;
|
|
-webkit-box-orient: vertical;
|
|
@for $i from 2 through 10{
|
|
&.c#{$i}{
|
|
-webkit-line-clamp: $i;
|
|
}
|
|
}
|
|
}
|
|
|
|
.cut{
|
|
display: block;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* 价格 */
|
|
.price{
|
|
font-size: inherit ;
|
|
&:before{
|
|
content: "¥";
|
|
font-size: 70%;
|
|
color: inherit;
|
|
font-weight: normal;
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif ;
|
|
}
|
|
.point{
|
|
display: inline-block;
|
|
font-size: 70%;
|
|
font-weight: inherit;
|
|
letter-spacing: 1px;
|
|
color: inherit;
|
|
}
|
|
&.noPrefix{
|
|
&:before{
|
|
content: '';
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 布局 */
|
|
.grid,.gridNoPd,.gridSmPd,.gridNoMb{
|
|
display: -webkit-box;
|
|
display: -webkit-flex;
|
|
display: -ms-flexbox;
|
|
display: flex;
|
|
-webkit-flex-wrap: wrap;
|
|
-ms-flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
width: 100%;
|
|
padding: 20upx 20upx 0 20upx;
|
|
>.item,>image,>view,>navigator,>text,>button{
|
|
width: 50%;
|
|
padding: 0 10upx;
|
|
margin-bottom: 20upx;
|
|
}
|
|
@for $i from 1 through 50{
|
|
&.g#{$i}{
|
|
>.item,>image,>view,>navigator,>text,>button{
|
|
width: 100%/$i;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.gridNoMb{
|
|
>.item,>image,>view,>navigator,>text,>button{
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
.gridNoPd{
|
|
padding: 0;
|
|
>.item,>image,>view,>navigator,>text,>button{
|
|
padding: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
.gridSmPd{
|
|
padding: 0;
|
|
>.item,>image,>view,>navigator,>text,>button{
|
|
padding-right: 0;
|
|
&:first-child{
|
|
padding-left: 0;
|
|
padding-right: 10upx;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* flex布局 */
|
|
.flex{
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
&.t{
|
|
align-items: flex-start;
|
|
}
|
|
&.b{
|
|
align-items: flex-end;
|
|
}
|
|
&.cv{ //垂直方向铺满
|
|
align-items: stretch;
|
|
}
|
|
&.bk{ //水平方向铺满
|
|
flex-direction: column;
|
|
}
|
|
&.lt{
|
|
justify-content: flex-start;
|
|
}
|
|
&.ct{
|
|
justify-content: center;
|
|
}
|
|
&.rt{
|
|
justify-content: flex-end;
|
|
}
|
|
&.ar{
|
|
justify-content: space-around;
|
|
}
|
|
&.av{
|
|
>.item,view,button,navigator,image,text{
|
|
flex:1;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 定位布局 */
|
|
.father{
|
|
position: relative;
|
|
}
|
|
.abs,.fixed{
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
z-index: 1;
|
|
&image{
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
&.top{
|
|
bottom: auto;
|
|
}
|
|
&.bottom{
|
|
top: auto;
|
|
}
|
|
&.left{
|
|
right: auto;
|
|
}
|
|
&.right{
|
|
left: auto;
|
|
}
|
|
}
|
|
@for $i from 0 through 20 {
|
|
.z#{$i}{
|
|
z-index: $i !important;
|
|
}
|
|
}
|
|
|
|
@for $i from 1 through 200 {
|
|
.top-#{$i}{
|
|
bottom: auto;
|
|
top: $i * -2upx;
|
|
}
|
|
.left-#{$i}{
|
|
right: auto;
|
|
left: $i * -2upx;
|
|
}
|
|
.bottom-#{$i}{
|
|
top: auto;
|
|
bottom: $i * -2upx;
|
|
}
|
|
.right-#{$i}{
|
|
left: auto;
|
|
right: $i * -2upx;
|
|
}
|
|
.top#{$i}{
|
|
bottom: auto;
|
|
top: $i * 2upx;
|
|
}
|
|
.left#{$i}{
|
|
right: auto;
|
|
left: $i * 2upx;
|
|
}
|
|
.bottom#{$i}{
|
|
top: auto;
|
|
bottom: $i * 2upx;
|
|
}
|
|
.right#{$i}{
|
|
left: auto;
|
|
right: $i * 2upx;
|
|
}
|
|
.top-#{$i}p{
|
|
bottom: auto;
|
|
top: $i * -1%;
|
|
}
|
|
.left-#{$i}p{
|
|
right: auto;
|
|
left: $i * -1%;
|
|
}
|
|
.bottom-#{$i}p{
|
|
top: auto;
|
|
bottom: $i * -1%;
|
|
}
|
|
.right-#{$i}p{
|
|
left: auto;
|
|
right: $i * -1%;
|
|
}
|
|
.top#{$i}p{
|
|
bottom: auto;
|
|
top: $i * 1%;
|
|
}
|
|
.left#{$i}p{
|
|
right: auto;
|
|
left: $i * 1%;
|
|
}
|
|
.bottom#{$i}p{
|
|
top: auto;
|
|
bottom: $i * 1%;
|
|
}
|
|
.right#{$i}p{
|
|
left: auto;
|
|
right: $i * 1%;
|
|
}
|
|
}
|
|
|
|
.fixed{
|
|
position: fixed;
|
|
}
|
|
|
|
/* fix-auto布局 */
|
|
.fixAuto,.fixAutoNoPd,.fixAutoSmPd{
|
|
display: table;
|
|
width: 100%;
|
|
padding: 20upx 10upx;
|
|
>.item,>view,>image,>navigator,>text,>button{
|
|
vertical-align: top;
|
|
padding: 0 10upx;
|
|
display: table-cell ;
|
|
}
|
|
&.middle{
|
|
>.item,>view,>image,>navigator,>text{
|
|
vertical-align: middle;
|
|
}
|
|
}
|
|
&.bottom{
|
|
>.item,>view,>image,>navigator,>text{
|
|
vertical-align: bottom;
|
|
}
|
|
}
|
|
}
|
|
.fixAutoSmPd{
|
|
padding: 0;
|
|
>.item,>view,>image,>navigator,>text{
|
|
padding-right: 0;
|
|
&:first-child{
|
|
padding-left: 0;
|
|
padding-right: 10upx;
|
|
}
|
|
}
|
|
}
|
|
.fixAutoNoPd{
|
|
padding: 0;
|
|
>.item,>view,>image,>navigator,>text{
|
|
padding: 0;
|
|
}
|
|
}
|
|
|
|
/* 浮动组件 */
|
|
.clear{
|
|
&:after{
|
|
content: "";
|
|
clear: both;
|
|
height: 0;
|
|
display: block;
|
|
visibility: hidden;
|
|
}
|
|
}
|
|
.fl{
|
|
float: left;
|
|
}
|
|
.fr{
|
|
float: right;
|
|
}
|
|
|
|
/* 按钮样式类 */
|
|
.btn,.roundBtn{
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
text-align: center;
|
|
padding: 8upx 24upx;
|
|
background-color: $main;
|
|
color: $mainInverse ;
|
|
font-size: 28upx;
|
|
border: 1px solid $main;
|
|
-webkit-border-radius: 8upx;
|
|
-moz-border-radius: 8upx;
|
|
border-radius: 8upx;
|
|
transition: 0.4s;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
&.gradualBg{
|
|
border-color: transparent;
|
|
background-image: $mainGradual;
|
|
color: $mainGradualInverse;
|
|
|
|
}
|
|
&.blackBg{
|
|
background-color: $black;
|
|
border-color: $black;
|
|
color: #fff;
|
|
&.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba($black , 0.4);
|
|
}
|
|
}
|
|
&.greenBg{
|
|
background-color: $green;
|
|
border-color: $green;
|
|
color: #fff;
|
|
&.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba($green , 0.4);
|
|
}
|
|
}
|
|
&.grayBg{
|
|
border-color: rgba(#30302f,0.2);
|
|
background-color: #f7f7f7;
|
|
color: #30302f;
|
|
&.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba( #30302f , 0.2);
|
|
}
|
|
}
|
|
&.whiteBg{
|
|
border-color: rgba(#fff,0.2);
|
|
background-color: #fff;
|
|
color: #000;
|
|
}
|
|
|
|
&.orangeBg{
|
|
border-color: $orange;
|
|
background-color: $orange;
|
|
color: #fff;
|
|
&.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba( $orange , 0.4);
|
|
}
|
|
}
|
|
&.redBg{
|
|
border-color: $red;
|
|
background-color: $red;
|
|
color: #fff;
|
|
&.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba( $red , 0.4);
|
|
}
|
|
}
|
|
&.yellowBg{
|
|
border-color: $yellow;
|
|
background-color: $yellow;
|
|
color: #000;
|
|
&.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba( $yellow , 0.4);
|
|
}
|
|
}
|
|
|
|
&.line{
|
|
background-color: transparent;
|
|
background-image: none;
|
|
color: $main;
|
|
&.blackBg{
|
|
color: $black;
|
|
}
|
|
&.greenBg{
|
|
color: $green;
|
|
}
|
|
&.yellowBg{
|
|
color: $yellow;
|
|
}
|
|
&.grayBg{
|
|
color: #30302f;
|
|
}
|
|
&.whiteBg{
|
|
border-color: rgba(#fff,0.7);
|
|
color: #fff;
|
|
}
|
|
&.orangeBg{
|
|
color: $orange;
|
|
}
|
|
&.redBg{
|
|
color: $red;
|
|
}
|
|
}
|
|
&+.btn,&+.roundBtn{
|
|
margin-left: 20upx;
|
|
}
|
|
&.block{
|
|
margin: 0;
|
|
padding: 20upx 24upx;
|
|
display: block;
|
|
width: 100%;
|
|
&+.btn{
|
|
margin-left: 0;
|
|
}
|
|
}
|
|
&:hover{
|
|
-webkit-transform: scale(0.99);
|
|
-moz-transform: scale(0.99);
|
|
-ms-transform: scale(0.99);
|
|
-o-transform: scale(0.99);
|
|
transform: scale(0.99);
|
|
opacity: 0.8;
|
|
}
|
|
&.disabled{
|
|
-webkit-transform: scale(1);
|
|
-moz-transform: scale(1);
|
|
-ms-transform: scale(1);
|
|
-o-transform: scale(1);
|
|
transform: scale(1);
|
|
opacity: 0.4;
|
|
cursor: not-allowed;
|
|
}
|
|
}
|
|
|
|
[class^="tag"] , [class*=" tag"]{
|
|
display: inline-block;
|
|
font-size: 24upx;
|
|
padding: 4upx 14upx;
|
|
border-radius: 4upx;
|
|
margin-right: 6upx;
|
|
margin-left: 6upx;
|
|
}
|
|
.tag{
|
|
background-color: rgba($main,0.2);
|
|
color: $main;
|
|
}
|
|
.tagBlue{
|
|
background-color: rgba($blue,0.2);
|
|
color: $blue;
|
|
}
|
|
.tagGray{
|
|
background-color: rgba($gray,0.2);
|
|
color: $gray;
|
|
}
|
|
|
|
.tagGradual{
|
|
background-image: linear-gradient(to top right,rgba($main,0.2),rgba($main,0.1));
|
|
color: $main;
|
|
}
|
|
|
|
.tagBlack{
|
|
background-color: rgba($black,0.2);
|
|
color: $black;
|
|
}
|
|
.tagGreen{
|
|
background-color: rgba($green,0.2);
|
|
color: $green;
|
|
}
|
|
|
|
.tagWhite{
|
|
background-color: rgba($white,0.2);
|
|
color: $white;
|
|
}
|
|
|
|
.tagOrange{
|
|
background-color: rgba($orange,0.2);
|
|
color: $orange;
|
|
}
|
|
.tagRed{
|
|
background-color: rgba($red,0.2);
|
|
color: $red;
|
|
}
|
|
.tagYellow{
|
|
background-color: rgba($yellow,0.2);
|
|
color: $yellow;
|
|
}
|
|
|
|
/* 边线(实线、虚线) */
|
|
.bdn{
|
|
border: none;
|
|
}
|
|
.bd{
|
|
border: 1px solid $borderColor;
|
|
&.dashed{
|
|
border-style: dashed;
|
|
}
|
|
}
|
|
.bt{
|
|
border-top:1px solid $borderColor;
|
|
&.dashed{
|
|
border-top-style: dashed;
|
|
}
|
|
}
|
|
.bb{
|
|
border-bottom:1px solid $borderColor;
|
|
&.dashed{
|
|
border-bottom-style: dashed;
|
|
}
|
|
}
|
|
.bl{
|
|
border-left:1px solid $borderColor;
|
|
&.dashed{
|
|
border-left-style: dashed;
|
|
}
|
|
}
|
|
.br{
|
|
border-right: 1px solid $borderColor;
|
|
&.dashed{
|
|
border-right-style: dashed;
|
|
}
|
|
}
|
|
|
|
$b:2;
|
|
@while $b <= 10 {
|
|
.bd#{$b}{
|
|
border: #{$b}px solid $borderColor;
|
|
&.dashed{
|
|
border-style: dashed;
|
|
}
|
|
}
|
|
.bt#{$b}{
|
|
border-top:#{$b}px solid $borderColor;
|
|
&.dashed{
|
|
border-top-style: dashed;
|
|
}
|
|
}
|
|
.bb#{$b}{
|
|
border-bottom:#{$b}px solid $borderColor;
|
|
&.dashed{
|
|
border-bottom-style: dashed;
|
|
}
|
|
}
|
|
.bl#{$b}{
|
|
border-left:#{$b}px solid $borderColor;
|
|
&.dashed{
|
|
border-left-style: dashed;
|
|
}
|
|
}
|
|
.br#{$b}{
|
|
border-right: #{$b}px solid $borderColor;
|
|
&.dashed{
|
|
border-right-style: dashed;
|
|
}
|
|
}
|
|
$b : $b + 1 ;
|
|
}
|
|
|
|
/* 边线颜色 */
|
|
.mainBd{
|
|
border-color: $main;
|
|
}
|
|
.greenBd{
|
|
border-color: $green;
|
|
}
|
|
.redBd{
|
|
border-color: $red;
|
|
}
|
|
.yellowBd{
|
|
border-color:$yellow ;
|
|
}
|
|
.blackBd{
|
|
border-color: $black;
|
|
}
|
|
.whiteBd{
|
|
border-color:$white ;
|
|
}
|
|
.grayBd{
|
|
border-color:$gray;
|
|
}
|
|
.greyBd{
|
|
border-color:$grey;
|
|
}
|
|
.orangeBd{
|
|
border-color:$orange;
|
|
}
|
|
|
|
/* 圆角 */
|
|
.radius,.rds{
|
|
-webkit-border-radius: 100%!important;
|
|
-moz-border-radius: 100%!important;
|
|
border-radius: 100%!important;
|
|
}
|
|
|
|
$r:0;
|
|
@while $r <= 50{
|
|
.rds#{$r},&.radius#{$r}{
|
|
-webkit-border-radius:$r*2upx!important;
|
|
-moz-border-radius:$r*2upx!important;
|
|
border-radius:$r*2upx!important;
|
|
}
|
|
$r : $r + 1;
|
|
}
|
|
|
|
.rdsTl,.radiusTopLeft{
|
|
border-top-left-radius:100%!important;
|
|
}
|
|
.rdsTr,.radiusTopRight{
|
|
border-top-right-radius: 100%!important;
|
|
}
|
|
.rdsBl,.radiusBottomLeft{
|
|
border-bottom-left-radius: 100%!important;
|
|
}
|
|
.rdsBr,.radiusBottomRight{
|
|
border-bottom-right-radius: 100%!important;
|
|
}
|
|
|
|
$r:0;
|
|
@while $r <= 50{
|
|
.rdsTl#{$r},.radiusTopLeft#{$r}{
|
|
border-top-left-radius: $r*2upx!important;
|
|
}
|
|
.rdsTr#{$r},.radiusTopRight#{$r}{
|
|
border-top-right-radius: $r*2upx!important;
|
|
}
|
|
.rdsBl#{$r},.radiusBottomLeft#{$r}{
|
|
border-bottom-left-radius: $r*2upx!important;
|
|
}
|
|
.rdsBr#{$r},.radiusBottomRight#{$r}{
|
|
border-bottom-right-radius: $r*2upx!important;
|
|
}
|
|
$r : $r + 1;
|
|
}
|
|
|
|
/* 正方形&长方形 */
|
|
[class^="square"] , [class*=" square"]{
|
|
width: 100%;
|
|
position: relative;
|
|
height: auto;
|
|
>.item,>image,>view,>navigator,>text,>button{
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
$p : 200 ;
|
|
@while $p > 0 {
|
|
.square#{$p}{
|
|
padding-top: $p*1%;
|
|
}
|
|
@if $p == 100 {
|
|
.square{
|
|
padding-top: 100%;
|
|
}
|
|
}
|
|
$p : $p - 5 ;
|
|
}
|
|
|
|
|
|
|
|
/* 阴影 */
|
|
.shadow{
|
|
box-shadow: 0px 2px 9px -1px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
/* 遮罩层 */
|
|
.wrapper-top,.wt{
|
|
background-image: linear-gradient(rgba(0,0,0,0.3) , rgba(0,0,0,0.02));
|
|
}
|
|
.wrapper-bottom,.wb{
|
|
background-image: linear-gradient( rgba(0,0,0,0.02) , rgba(0,0,0,0.3) );
|
|
}
|
|
|
|
[class^="wp"],[class*=" wp"] {
|
|
z-index: 10;
|
|
}
|
|
|
|
/* 透明度 */
|
|
@for $op from 0 through 10 {
|
|
.op#{$op}{
|
|
opacity: $op * 0.1!important;
|
|
}
|
|
.wp#{$op}{
|
|
background-color: rgba(#000,$op*0.1);
|
|
}
|
|
@if $op == 5 {
|
|
.wp{
|
|
background-color: rgba(#000,0.5);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 分割线 */
|
|
[class*=" split"],[class^="split"] {
|
|
position: relative;
|
|
&:before{
|
|
content:"";
|
|
display: block;
|
|
position: absolute;
|
|
left: 0;
|
|
top: 50%;
|
|
border-left: 1px solid $borderColor;
|
|
}
|
|
}
|
|
|
|
$s:10;
|
|
@while $s <= 100 {
|
|
.split#{$s}{
|
|
&:before{
|
|
height: #{$s*2}upx;
|
|
margin-top: -#{$s}upx;
|
|
}
|
|
}
|
|
@if $s == 10 {
|
|
.split{
|
|
&:before{
|
|
height: 20upx;
|
|
margin-top: -10upx;
|
|
}
|
|
}
|
|
}
|
|
$s:$s+2;
|
|
}
|
|
|
|
.hover,[class^="hover"],[class*=" hover"]{
|
|
transition: all 0.4s;
|
|
cursor: pointer;
|
|
&:hover{
|
|
opacity: 0.8 !important;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.statusBar{
|
|
height: var(--status-bar-height);
|
|
}
|
|
|
|
.winBottom{
|
|
height: var(--windown-bottom);
|
|
}
|
|
|
|
.safeBottom{
|
|
padding-bottom: constant(safe-area-inset-bottom);
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
}
|
|
|
|
.disabled{
|
|
opacity:0.8;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
|
|
|
|
.grid,.gridNoMb,.gridNoPd{
|
|
>.btn,>.roundBtn{
|
|
&+.btn,&+.roundBtn{
|
|
margin-left: 0 ;
|
|
}
|
|
}
|
|
}
|
|
|
|
.roundBtn{
|
|
-webkit-border-radius: 100upx;
|
|
-moz-border-radius: 100upx;
|
|
border-radius: 100upx;
|
|
}
|
|
|
|
|
|
|
|
/* 位置 */
|
|
.text-center,.tc{
|
|
text-align: center!important;
|
|
}
|
|
.text-left,.tl{
|
|
text-align: left!important;
|
|
}
|
|
.text-right,.tr{
|
|
text-align: right!important;
|
|
}
|
|
.text-justify,.tj{
|
|
text-align: justify!important;
|
|
}
|
|
.text-bold,.bold{
|
|
font-weight: bold!important;
|
|
}
|
|
.text-normal,.normal{
|
|
font-weight: normal!important;
|
|
}
|
|
.break{
|
|
white-space: normal;
|
|
word-break: break-all;
|
|
}
|
|
.noBreak{
|
|
white-space: nowrap;
|
|
word-break: keep-all;
|
|
}
|
|
.inline{
|
|
display: inline-block;
|
|
}
|
|
.block{
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
.none{
|
|
display: none;
|
|
}
|
|
.center-block{
|
|
margin: 0 auto;
|
|
display: block;
|
|
}
|
|
.hidden{
|
|
overflow: hidden;
|
|
}
|
|
.hiddenX{
|
|
overflow-x: hidden;
|
|
}
|
|
.hiddenY{
|
|
overflow-y: hidden;
|
|
}
|
|
.auto{
|
|
overflow: auto;
|
|
}
|
|
.autoX{
|
|
overflow-x: auto;
|
|
}
|
|
.autoY{
|
|
overflow-y: auto;
|
|
}
|
|
.showInMb{
|
|
display: block;
|
|
}
|
|
.showInPc{
|
|
display: none;
|
|
}
|
|
table{
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
border-spacing: 0;
|
|
border: 1px solid #e6e6e6;
|
|
thead{
|
|
tr{
|
|
background-color: #f2f2f2;
|
|
th{
|
|
color: #8799a3;
|
|
width: 1%;
|
|
}
|
|
}
|
|
}
|
|
tr{
|
|
background-color: #fff;
|
|
transition: all 0.4s;
|
|
td,th{
|
|
border: 1px solid #e6e6e6;
|
|
overflow: hidden;
|
|
-o-text-overflow: ellipsis;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
word-wrap: break-word;
|
|
padding: 5px 10px;
|
|
height: 28px;
|
|
line-height: 28px;
|
|
&.autoWidth{
|
|
width: auto;
|
|
}
|
|
}
|
|
&:hover{
|
|
background-color: #f2f2f2;
|
|
}
|
|
}
|
|
}
|
|
</style>
|