当前位置: 首页 > article >正文

css 布局学习之底部弹窗切换示

 分享下个人平时练习前端的代码。支付h5和pc端,直接上代码看效果。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
    <title>底部弹窗切换示例</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
        body {
            font-family: Arial, sans-serif;
            overflow: hidden; /* 禁用默认滚动 */
        }
        .content {
            width: 100%;
            height: 100vh;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            align-items: center;
            background-color: #ccc;
            position: relative;
        }
        .nav {
            width: 100%;
            height: 50px;
            background-color: #f00;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 18px;
            color: white;
        }
        .main {
            width: 100%;
            flex: 1;
            background-color: #0f0;
            display: flex;
            flex-direction: column;
            overflow-y: auto; /* 允许垂直滚动 */
            padding: 10px;
        }
        .tab {
            width: 100%;
            height: 50px;
            background-color: #00f;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 18px;
            color: white;
            cursor: pointer;
        }
        .item {
            height: 100px;
            background-color: rgba(255, 255, 255, 0.8);
            margin: 5px 0;
            display: flex;
            justify-content: center;
            align-items: center;
            border-radius: 5px;
        }
        .modal {
            display: none; /* 默认隐藏弹窗 */
            width: 100%;
            background-color: white;
            box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.2); /* 边框阴影效果 */
            padding: 20px;
            transition: transform 0.3s ease; /* 添加过渡效果 */
        }
        .modal.active {
            display: block; /* 显示弹窗 */
        }
        .main.active {
            /*transform: translateY(-100px); !* 向上移动主内容 *!*/
            /*padding-bottom: 100px;*/
        }
        .modal-header, .modal-footer {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .modal-header {
            font-weight: bold;
        }
        .close-button {
            cursor: pointer;
            color: #f00;
        }
    </style>
</head>
<body>
<div id="app" class="content">
    <div class="nav">导航栏</div>
    <div class="main"  ref="mainContent">
        <div class="item">内容 1</div>
        <div class="item">内容 2</div>
        <div class="item">内容 3</div>
        <div class="item">内容 4</div>
        <div class="item">内容 5</div>
        <div class="item">内容 6</div>
        <div class="item">内容 7</div>
        <div class="item">内容 8</div>
        <div class="item">内容 9</div>
        <div class="item">内容 10</div>
        <div class="item">内容 11</div>
        <div class="item">内容 12</div>
        <div class="item">内容 13</div>
        <div class="item">内容 14</div>
        <div class="item">内容 15</div>
        <div class="item">内容 16</div>
        <div class="item">内容 17</div>
        <div class="item">内容 18</div>
        <div class="item">内容 19</div>
        <div class="item">内容 20</div>
        <div class="item">内容 21</div>
        <div class="item">内容 22</div>
        <div class="item">内容 23</div>
        <div class="item">内容 24</div>
        <div class="item">内容 25</div>
        <div class="item">内容 26</div>
        <div class="item">内容 27</div>
        <div class="item">内容 28</div>
        <div class="item">内容 29</div>
        <div class="item">内容 30</div>
    </div>
    <div class="tab" @click="toggleModal">底部栏</div>

    <!-- 弹窗 -->
    <div class="modal" :class="{ active: showModal }">
        <div class="modal-header">
            <span>弹窗标题</span>
            <span class="close-button" @click="toggleModal">关闭</span>
        </div>
        <div class="modal-body">
            <p>这是底部弹窗的内容。</p>
        </div>
        <div class="modal-footer">
            <button @click="toggleModal">确认</button>
        </div>
    </div>
</div>

<script>
    const { createApp, ref } = Vue;

    createApp({
        setup() {
            const showModal = ref(false); // 控制弹窗显示状态
            const mainContent = ref(null); // 引用 main 内容区域

            const toggleModal = () => {
                showModal.value = !showModal.value; // 切换弹窗显示状态
                // 在弹窗打开时滚动到最底部
                if (showModal.value && mainContent.value) {
                    mainContent.value.scrollTop = mainContent.value.scrollHeight;
                }
            };

            return { showModal, mainContent, toggleModal };
        }
    }).mount('#app');
</script>
</body>
</html>


http://www.kler.cn/a/398645.html

相关文章:

  • 结构化需求分析与设计
  • 串口DMA接收不定长数据
  • 基于opencv制作GUI界面
  • 【Pikachu】XML外部实体注入实战
  • 物理hack
  • 如何利用WebSockets实现高效的实时通信应用
  • GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析
  • Stable Diffusion Web UI - Checkpoint、Lora、Hypernetworks
  • 【案例】---Hutool提取excel文档
  • Excel365和WPS中提取字符串的五种方法
  • git如何添加已被忽略的目录里的子目录
  • 海外媒体发稿:中东地区阿拉伯邮报Arab Post新闻媒体宣发
  • hadoop_capacity-scheduler.xml
  • 【go从零单排】Directories、Temporary Files and Directories目录和临时目录、临时文件
  • 应用于各种小家电的快充协议芯片
  • python 多进程,程序运行越来越慢踩坑
  • 【EmbeddedGUI】脏矩阵设计说明
  • Flink执行sql时报错
  • Flask个人网站博客系统(全)
  • 大语言模型通用能力排行榜(2024年10月8日更新)
  • Qt小知识-Q_GLOBAL_STATIC
  • 鸿蒙next版开发:分析JS Crash(进程崩溃)
  • AJAX笔记 (速通精华版)
  • 智能运维:提升效率与响应速度的关键能力
  • TikZ 绘图学习笔记
  • 多目标优化算法:多目标蛇鹫优化算法(MOSBOA)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码