支付宝小程序实现自定义底部弹窗popup组件 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

支付宝小程序实现自定义底部弹窗popup组件

发表时间:2020-9-21

发布人:葵宇科技

浏览次数:86

支付宝小程序实现自定义底部弹窗popup组件

view

<view class="am-popup {{className}} {{show ? 'am-popup-show' : ''}} {{ animation ? 'animation': '' }}" disable-scroll="{{disableScroll}}">
  <view class="am-popup-mask" a:if="{{mask}}" onTap="onMaskTap" style="z-index: {{zIndex}}"></view>
  <view class="am-popup-content am-popup-{{position}}" style="z-index: {{zIndex}}"><slot /></view>
</view>

js

Component({
  mixins: [],
  data: {
    
  },
  props: {
    className: '',
    show: false,
    position: 'bottom',
    mask: true,
    animation: true,
    disableScroll: true,
  },
  didMount() {},
  didUpdate() {},
  didUnmount() {},
  methods: {
    onMaskTap() {
      const { onClose, animation } = this.props;

      if (onClose) {
        if (animation) {
          onClose();
        } else {
          setTimeout(() => {
            onClose();
          }, 200);
        }
      }
    },
  },
});

css

.am-popup-content {
  position: fixed;
  z-index: 9999
}

.am-popup-mask {
  visibility: hidden;
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: rgba(0, 0, 0, 0.75);
  opacity: 0;
   z-index: 9999;
}

.am-popup-left {
  transform: translateX(-100%);
  left: 0;
  top: 0;
  bottom: 0;
}

.am-popup-right {
  transform: translateX(100%);
  right: 0;
  top: 0;
  bottom: 0;
}

.am-popup-top {
  top: 0;
  width: 100vw;
  transform: translateY(-100%);
}

.am-popup-bottom {
  bottom: 0;
  width: 100vw;
  transform: translateY(100%);
}

.am-popup-show .am-popup-content {
  transform: none;
  background: white;
}

.am-popup-show .am-popup-mask {
  visibility: visible;
  opacity: 1;
}

.am-popup.animation .am-popup-content {
  transition: all 200ms linear;
}

.am-popup.animation .am-popup-mask {
  transition: all 200ms linear;
}

相关案例查看更多