uni-app封装组件实现下方滑动弹出模态框效果

 更新时间:2024年08月03日 10:41:40   作者:专职  
这篇文章主要介绍了uni-app封装组件实现下方滑动弹出模态框效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

子组件

<template>
    <div class="bottom-modal" :class="{'show': showModal}">
      <div class="modal-content" :class="{'show': showModal}">
        <!-- 内容区域 -->
        <slot></slot>
      </div>
    </div>
  </template>
  <script>
  export default {
    name: 'BottomModal',
    props: {
      showModal: {
        type: Boolean,
        default: false
      }
    },
    methods: {
    }
  }
  </script>
  <style lang="scss">
  .bottom-modal {
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 0;
    background-color: rgba(0, 0, 0, 0.5);
    overflow: hidden;
    transition: height 0.2s ease-out;
    z-index: 99;
  }
  .bottom-modal.show {
    height: 100%;
  }
  .modal-content {
    background-color: #fff;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
    box-shadow: 0px -2px 10px rgba(0, 0, 0, 0.1);
    padding: 16px;
    // 内容显示在底部
    position: absolute;
    left: 0;
    bottom: 0;
    box-sizing: border-box;
    width: 100%;
    z-index: 999;
    height: 0;
    transition: all 0.5s linear;
  }
  .modal-content.show {
    height: 60vh;
  }
  .modal-mask {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
  </style>

父组件

<script>
import BottomModal from "@/components/BottomModal.vue"
export default {
    components: {
        BottomModal
    },
    data() {
		return {
		    showModal: false
		}
	},
	methods: {
        radioChange(e) {
            console.log("radioChange", e.detail.value)
        }
	}
}
</script>
<template>
    <bottom-modal :showModal="showModal">
        <view class="my-modal">
            <text class="title">订单取消</text>
            <text>请选择取消订单的原因:</text>
            <radio-group @change="radioChange">
                <view>
                    <label class="item">
                        <text>商品无货</text>
                        <radio :value="1" style="transform: scale(0.6)" />
                    </label>
                </view>
                <view>
                    <label class="item">
                        <text>不想要了</text>
                        <radio :value="2" style="transform: scale(0.6)" />
                    </label>
                </view>
                <view>
                    <label class="item">
                        <text>商品信息填错了</text>
                        <radio :value="3" style="transform: scale(0.6)" />
                    </label>
                </view>
                <view>
                    <label class="item">
                        <text>地址信息填写错误</text>
                        <radio :value="4" style="transform: scale(0.6)" />
                    </label>
                </view>
                <view>
                    <label class="item">
                        <text>商品降价</text>
                        <radio :value="5" style="transform: scale(0.6)" />
                    </label>
                </view>
                <view>
                    <label class="item">
                        <text>其它</text>
                        <radio :value="6" style="transform: scale(0.6)" />
                    </label>
                </view>
            </radio-group>
            <view class="cancel-confirm">
                <text @click="handleCancel">取消</text>
                <text @click="handleConfirm" class="confirm">确认</text>
            </view>
        </view>
    </bottom-modal>
</template>
<style lang="scss">
.my-modal {
    display: flex;
    flex-direction: column;
    font-size: 26rpx;
    .item {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 30rpx;
        padding-right: 30rpx;
    }
    .title {
        margin-top: 15rpx;
        font-size: 30rpx;
        text-align: center;
    }
    .cancel-confirm {
        display: flex;
        justify-content: space-around;
        margin-top: 30rpx;
        text {
            width: 300rpx;
            height: 60rpx;
            line-height: 60rpx;
            text-align: center;
            border: 1px solid #e6e2e2;
            border-radius: 30rpx;
        }
        .confirm {
            background-color: #27BA9B;
            border: none;
            color: #fff;
        }
    }
}
</style>

效果图

到此这篇关于uni-app封装组件实现下方滑动弹出模态框的文章就介绍到这了,更多相关uni-app滑动弹出模态框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析JavaScript事件和方法

    浅析JavaScript事件和方法

    本文通过示例向大家简单分析了javascript的事件和方法,文章简洁而不简单,是篇非常不错的基础文章,这里推荐给大家。
    2015-02-02
  • es6函数之严格模式用法实例分析

    es6函数之严格模式用法实例分析

    这篇文章主要介绍了es6函数之严格模式用法,结合实例形式分析了es6函数严格模式的定义、用法及操作注意事项,需要的朋友可以参考下
    2020-03-03
  • JavaScript动态修改弹出窗口大小的方法

    JavaScript动态修改弹出窗口大小的方法

    这篇文章主要介绍了JavaScript动态修改弹出窗口大小的方法,涉及javascript中window.open方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 不错的asp中显示新闻的功能

    不错的asp中显示新闻的功能

    不错的asp中显示新闻的功能...
    2006-10-10
  • 浅析如何利用JavaScript进行语音识别

    浅析如何利用JavaScript进行语音识别

    所谓语音识别就是将你所说的转化成文字。Chrome 浏览器在版本25之后开始对这一特性的支持。这篇文章将会详细的介绍如何使用JavaScript进行语音识别,感兴趣的朋友们可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • javascript制作的网页侧边弹出框思路及实现代码

    javascript制作的网页侧边弹出框思路及实现代码

    这篇文章主要介绍了javascript制作的网页侧边弹出框思路及实现代码,需要的朋友可以参考下
    2014-05-05
  • window.location 对象所包含的属性

    window.location 对象所包含的属性

    这篇文章主要介绍了window.location 对象所包含的属性,这些熟悉都是工作中经常会用到的,很实用,需要的朋友可以参考下
    2014-10-10
  • 全面解析Bootstrap中nav、collapse的使用方法

    全面解析Bootstrap中nav、collapse的使用方法

    这篇文章主要为大家详细解析了Bootstrap中nav、collapse的使用方法,感兴趣的朋友可以参考一下
    2016-05-05
  • JS实现玩转风车

    JS实现玩转风车

    这篇文章主要为大家详细介绍了JS实现玩转风车,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 初识javascript 文档碎片

    初识javascript 文档碎片

    今天遇到一个问题: 我通过 ajax 取回另一个页面的 Html 。但这些 HTML 我不想直接输出,想通过 getElementsByName 处理后再输出相应的内容。用原生的 javascript怎样可以处理呢?
    2010-07-07

最新评论