博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第126天:移动端-原生实现响应式模态框
阅读量:5806 次
发布时间:2019-06-18

本文共 3624 字,大约阅读时间需要 12 分钟。

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

一、模态框HTML代码

1    2    3    4     
5 模态框实现 6
7 8 9 10
25 26

首先定义模态框的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 

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

 

四、效果展示

首先点击显示模态框,全屏最大显示:

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

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

 

转载于:https://www.cnblogs.com/le220/p/8120477.html

你可能感兴趣的文章
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
限制CheckBoxList控件只能单选
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
如何用纯 CSS 为母亲节创作一颗像素画风格的爱心
查看>>
Linux基础命令---rmdir
查看>>
优秀程序员共有的7种优秀编程习惯
查看>>
iOS sqlite3(数据库)
查看>>
粤出"飞龙",打造新制造广东样本
查看>>