12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <template>
- <view class="grace-alert" v-if="showIn" :style="{top : topReal + 'px'}">
- <view class="grace-alert-body" ref="gracealert"
- :style="{'background-color':background, width:width+'rpx'}">
- <slot></slot>
- </view>
- </view>
- </template>
- <script>
- export default {
- name: "graceHeaderAlert",
- props: {
- show : { type : Boolean, default : false },
- background : { type : String, default : '#F1F2F3' },
- top : { type : Number, default : 20 },
- width : { type : Number, default : 580},
- duration : { type : Number, default : 2500}
- },
- data() {
- return {
- showIn : false,
- topReal : 0
- }
- },
- created:function(){
- this.topReal = this.top;
- this.showIn = this.show;
- },
- watch: {
- show : function(n , o){
- if(n){
- this.showIn = n;
- this.animation();
- }
- }
- },
- methods:{
- open:function(){
- this.showIn = true;
- this.animation();
- },
- close:function(){
- this.showIn = false;
- },
- animation : function(){
- setTimeout(()=>{
- var animation = weex.requireModule('animation');
- animation.transition(this.$refs.gracealert, {
- styles : {opacity:0, transform:'scale(0.1,0.1)'},
- duration : 1,
- timingFunction : 'linear',
- needLayout : false,
- delay : 0 ,
- }, ()=>{
- animation.transition(this.$refs.gracealert, {
- styles : {opacity:1, transform:'scale(1,1)'},
- duration : 150,
- timingFunction : 'linear',
- needLayout : false,
- delay : 0 ,
- });
- });
- }, 200);
- setTimeout(()=>{this.showIn = false;}, this.duration);
- }
- }
-
- }
- </script>
- <style scoped>
- .grace-alert{width:750rpx; flex-direction:row; flex-wrap:nowrap; justify-content:center; align-items:center; position:fixed; left:0rpx; top:20rpx;}
- .grace-alert-body{padding:25rpx; border-radius:10rpx; flex-direction:row; flex-wrap:nowrap; justify-content:center; align-items:center; opacity:0;}
- </style>
|