第126天:移动端-原生实现响应式模态框

简介: 下面采用HTML+CSS+JavaScript实现模态框,并采用Flex布局和多媒体查询实现响应式。一、模态框HTML代码 1 DOCTYPE html> 2 3 4 5 模态框实现 6 7 8 9 模态框展示...

下面采用HTML+CSS+JavaScript实现模态框,并采用Flex布局和多媒体查询实现响应式。

一、模态框HTML代码

 1 <!DOCTYPE html>  
 2 <html lang="en">  
 3 <head>  
 4     <meta charset="UTF-8">  
 5     <title>模态框实现</title>  
 6     <link rel="stylesheet" href="css\modal.css" type="text/css">  
 7 </head>  
 8 <body>  
 9 <button class="btn" id="showModel">模态框展示</button>  
10 <div id="modal" class="modal">  
11     <div class="modal-content">  
12         <header class="modal-header">  
13             <h4>模态框标题</h4>  
14             <span class="close">×</span>  
15         </header>  
16         <div class="modal-body">  
17             <p>HTML+CSS+JS原生实现响应式模态框演示!</p>  
18         </div>  
19         <footer class="modal-footer">  
20             <button id="cancel">取消</button>  
21             <button id="sure">确定</button>  
22         </footer>  
23     </div>  
24 </div>  
25 </body>  
26 </html>  

首先定义模态框的overlayer,然后定义模态框的内容包括header(带关闭按钮)、bodyfooter

二、模态框CSS代码

  1 h4{  
  2     margin-left: 20px;  
  3 }  
  4 p{  
  5     text-align: center;  
  6 }  
  7 .btn{  
  8     width: 100px;  
  9     height: 35px;  
 10     border-radius: 5px;  
 11     font-size: 16px;  
 12     color: white;  
 13     background-color: cornflowerblue;  
 14 }  
 15 .btn:hover, .btn:focus{  
 16     background-color: #95b4ed;  
 17 }  
 18 .modal{  
 19     display: none;  
 20     width: 100%;  
 21     height: 100%;  
 22     position: fixed;  
 23     left: 0;  
 24     top: 0;  
 25     z-index: 1000;  
 26     background-color: rgba(0,0,0,0.5);  
 27 }  
 28 .modal-content{  
 29     display: flex;  
 30     flex-flow: column nowrap;  
 31     justify-content: space-between;  
 32     width: 50%;  
 33     max-width: 700px;  
 34     height: 40%;  
 35     max-height: 500px;  
 36     margin: 100px auto;  
 37     border-radius:10px;  
 38     background-color:#fff;  
 39     -webkit-animation: zoom 0.6s;  
 40     animation: zoom 0.6s;  
 41     resize: both;  
 42     overflow: auto;  
 43 }  
 44 @-webkit-keyframes zoom{  
 45     from {-webkit-transform: scale(0)}  
 46     to {-webkit-transform: scale(1)}  
 47 }  
 48 @keyframes zoom{  
 49     from {transform: scale(0)}  
 50     to {transform: scale(1)}  
 51 }  
 52 .modal-header{  
 53     box-sizing:border-box;  
 54     border-bottom:1px solid #ccc;  
 55     display: flex;  
 56     justify-content: space-between;  
 57     align-items: center;  
 58 }  
 59 .close{  
 60     color: #b7b7b7;  
 61     font-size: 30px;  
 62     font-weight: bold;  
 63     margin-right: 20px;  
 64     transition: all 0.3s;  
 65 }  
 66 .close:hover, .close:focus{  
 67     color: #95b4ed;  
 68     text-decoration: none;  
 69     cursor: pointer;  
 70 }  
 71 .modal-body{  
 72     padding: 10px;  
 73     font-size: 16px;  
 74     box-sizing:border-box;  
 75 }  
 76 .modal-footer{  
 77     box-sizing:border-box;  
 78     border-top:1px solid #ccc;  
 79     display: flex;  
 80     padding: 15px;  
 81     justify-content: flex-end;  
 82     align-items: center;  
 83 }  
 84 .modal-footer button{  
 85     width: 60px;  
 86     height: 35px;  
 87     padding: 5px;  
 88     box-sizing: border-box;  
 89     margin-right: 10px;  
 90     font-size: 16px;  
 91     color: white;  
 92     border-radius: 5px;  
 93     background-color: cornflowerblue;  
 94 }  
 95 .modal-footer button:hover, .modal-footer button:focus{  
 96     background-color: #95b4ed;  
 97     cursor: pointer;  
 98 }  
 99 @media only screen and (max-width: 700px){  
100     .modal-content {  
101         width: 80%;  
102     }  
103 }  

模态框model默认不显示(display:none),且固定占满整个屏幕,覆盖其它内容(z-index),蒙层背景颜色为黑色半透明;

 

模态框的显示通过animateion动画逐渐放大显示出来;

模态框响应式布局,首先设置整个模态框为flex容器,flex项目为headerbodyfooter,且主轴为纵向。header和footer模块又可用flex布局,flex容器为header和footer,flex项目为内部元素,主轴为水平方向。

多媒体media查询实现当屏幕小到一定程度时,模态框大小比例可适当放大。

三、模态框JavaScript代码

 1 <script>  
 2     var btn = document.getElementById('showModel');  
 3     var close = document.getElementsByClassName('close')[0];  
 4     var cancel = document.getElementById('cancel');  
 5     var modal = document.getElementById('modal');  
 6     btn.addEventListener('click', function(){  
 7         modal.style.display = "block";  
 8     });  
 9     close.addEventListener('click', function(){  
10         modal.style.display = "none";  
11     });  
12     cancel.addEventListener('click', function(){  
13         modal.style.display = "none";  
14     });  
15 </script>  

给按钮添加事件监听,当点击显示模态框按钮时,设置modal的display属性为block,当点击取消或关闭模态框按钮时,设置modal的display属性为none。

 

四、效果展示
首先点击显示模态框,全屏最大显示:

横向缩小浏览器窗口宽度时,模态框横向实现响应式显示。

纵向缩小浏览器窗口高度时,模态框纵向实现响应式显示。

 

相关文章
|
XML 安全 C++
DBus类型系统以及在Qt和C++ 中的使用(二)
DBus类型系统以及在Qt和C++ 中的使用
764 0
|
存储 SQL 分布式数据库
Kylin学习总结
Kylin学习总结
267 1
|
10月前
|
分布式计算 数据处理 MaxCompute
云产品评测|分布式Python计算服务MaxFrame
云产品评测|分布式Python计算服务MaxFrame
200 2
|
10月前
|
数据可视化
颠覆传统管理:电商团队协作的全新玩法
高效的团队协作是电商企业成功的关键。面对多项目并行、职责不清和沟通低效等挑战,创新协作模式通过扁平化管理、工具驱动和目标导向的绩效管理来优化流程。在线协作工具,提供灵活任务管理、可视化流程和远程协作支持,助力团队高效完成高价值工作。实践步骤包括明确目标、选择合适工具及建立反馈机制,从而提升整体效率,为企业注入新活力。
|
Web App开发 缓存 文字识别
scrapy_selenium的常见问题和解决方案
scrapy_selenium是一个结合了scrapy和selenium的库,可以让我们使用selenium的webdriver来控制浏览器进行动态网页的爬取。但是在使用scrapy_selenium的过程中,我们可能会遇到一些问题,比如如何设置代理、如何处理反爬、如何优化性能等。本文将介绍一些scrapy_selenium的常见问题和解决方案,希望对你有所帮助。
617 0
scrapy_selenium的常见问题和解决方案
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
701 5
|
canal 消息中间件 缓存
面试题:如何解决缓存和数据库的一致性问题?
面试题:如何解决缓存和数据库的一致性问题?
397 1
|
JSON 数据可视化 API
玩转数据科学:Python实战分析天气预报变动趋势
【10月更文挑战第1天】随着气候变化对日常生活的影响日益显著,理解和预测天气模式变得越来越重要。本文将引导您如何使用Python来抓取和分析天气预报数据,从而揭示天气变化的趋势。我们将介绍从获取公开气象API的数据到清洗、处理以及可视化整个过程的技术方法。
817 2
|
Java 开发者
Java中的异常处理:深入理解try-catch块
【6月更文挑战第15天】在Java编程中,异常处理是一项基本而重要的技能。本文将深入探讨try-catch块的使用,以及如何有效地处理和预防程序中可能出现的异常情况。我们将通过具体的例子和代码片段,详细解析try-catch块的工作原理,以及如何在程序设计中合理地应用这一机制。
223 4
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable流程设计器组件的升级修改
ruoyi-nbcio-plus基于vue3的flowable流程设计器组件的升级修改
445 1