问题描述
我有以下模态工作,
http://jsfiddle.net/kumarmuthaliar/GG9Sa/1/
在我的网站上.就易用性和功能而言,这正是我想要的.我遇到的唯一问题是当用户 A) 在模态窗口外单击或 B) 按 Escape 键时如何关闭模态.
有什么建议吗?
<a href="#openModal">打开模态</a><div id="openModal" class="modalDialog"><a href="#close" title="关闭" class="close">X</a><h2>模态框</h2><p>这是一个示例模态框,可以使用 CSS3 的强大功能创建.</p><p>您可以在这里做很多事情,例如在您的网站加载时显示弹出广告,或者为用户创建登录/注册表单.</p></div></div>.modalDialog {位置:固定;字体系列:Arial、Helvetica、sans-serif;顶部:0;右:0;底部:0;左:0;背景:rgba(0, 0, 0, 0.8);z 指数:99999;不透明度:0;-webkit-transition:不透明度 400ms 缓入;-moz-transition:不透明度 400ms 缓入;过渡:不透明度 400ms 缓入;指针事件:无;}.modalDialog:目标{不透明度:1;指针事件:自动;}.modalDialog >分区 {宽度:400px;位置:相对;保证金:10% 自动;填充:5px 20px 13px 20px;边框半径:10px;背景:#fff;背景:-moz-线性渐变(#fff,#999);背景:-webkit-linear-gradient(#fff, #999);背景:-o-线性梯度(#fff,#999);}.关闭 {背景:#606061;颜色:#FFFFFF;行高:25px;位置:绝对;右:-12px;文本对齐:居中;顶部:-10px;宽度:24px;文字装饰:无;字体粗细:粗体;-webkit-border-radius:12px;-moz-边界半径:12px;边框半径:12px;-moz-box-shadow: 1px 1px 3px #000;-webkit-box-shadow: 1px 1px 3px #000;盒子阴影:1px 1px 3px #000;}.close:悬停{背景:#00d9ff;} 解决方案 为此,您需要一点 JavaScript.用一些注释检查代码.
函数 modalClose() {if (location.hash == '#openModal') {location.hash = '';}}//处理 ESC 键(键码 27)document.addEventListener('keyup', function(e) {如果(e.keyCode == 27){模态关闭();}});var modal = document.querySelector('#openModal');//处理模态容器的点击modal.addEventListener('click', modalClose, false);//如果在模态内容正文中发生单击,则防止事件冒泡modal.children[0].addEventListener('click', function(e) {e.stopPropagation();}, 错误的);
演示:http://jsfiddle.net/GG9Sa/264/
请注意,关闭模式在技术上仅适用于 CSS/HTML,但是要处理 Escape 按键,您将需要 Javascript.
I have the following modal working,
http://jsfiddle.net/kumarmuthaliar/GG9Sa/1/
on my site. It's exactly what I want in terms of ease of use, and function. The only issue I have is how to make the modal close when the user either A) Clicks outside the modal window, or B) Hits the Escape key.
Any suggestions?
<a href="#openModal">Open Modal</a>
<div id="openModal" class="modalDialog">
<div> <a href="#close" title="Close" class="close">X</a>
<h2>Modal Box</h2>
<p>This is a sample modal box that can be created using the powers of CSS3.</p>
<p>You could do a lot of things here like have a pop-up ad that shows when your website loads, or create a login/register form for users.</p>
</div>
</div>
.modalDialog {
position: fixed;
font-family: Arial, Helvetica, sans-serif;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0, 0, 0, 0.8);
z-index: 99999;
opacity:0;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition: opacity 400ms ease-in;
pointer-events: none;
}
.modalDialog:target {
opacity:1;
pointer-events: auto;
}
.modalDialog > div {
width: 400px;
position: relative;
margin: 10% auto;
padding: 5px 20px 13px 20px;
border-radius: 10px;
background: #fff;
background: -moz-linear-gradient(#fff, #999);
background: -webkit-linear-gradient(#fff, #999);
background: -o-linear-gradient(#fff, #999);
}
.close {
background: #606061;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: -12px;
text-align: center;
top: -10px;
width: 24px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow: 1px 1px 3px #000;
}
.close:hover {
background: #00d9ff;
}
解决方案 For this you will need a little javascript. Check the code with some comments.
function modalClose() {
if (location.hash == '#openModal') {
location.hash = '';
}
}
// Handle ESC key (key code 27)
document.addEventListener('keyup', function(e) {
if (e.keyCode == 27) {
modalClose();
}
});
var modal = document.querySelector('#openModal');
// Handle click on the modal container
modal.addEventListener('click', modalClose, false);
// Prevent event bubbling if click occurred within modal content body
modal.children[0].addEventListener('click', function(e) {
e.stopPropagation();
}, false);
Demo: http://jsfiddle.net/GG9Sa/264/
Note, that closing modal is technically possible with CSS/HTML only, however for handling Escape key press you will need Javascript.
这篇关于CSS/HTML 模态 - 使用 Escape 键/单击外部关闭的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End
相关推荐
主页面上显示了一个合计,在删除和增加的时候需要更改这个总套数的值: //html代码div class="layui-inline layui-show-xs-block" style="margin-left: 10px" id="sumDiv"spanSOP合计:/spanspan${totalNum}/spanspan套/span/div 于是在我们删除这个条数据后,...
2024-11-14
前端开发问题
156
1. 如果是ajax嵌套了 页面, 请确保 只有最外层的页面引入了layui.css 和 layui.js ,内层页面 切记不要再次引入 2. 具体代码如下 layui.use(['form', 'upload'], function(){ var form = layui.form; form.render(); // 加入这一句});...
2024-11-09
前端开发问题
313
问题描述 我想改变layui时间日历布局大小,这个要怎么操作呢? 解决办法 可以用css样式对时间日历进行重新布局,具体代码如下: !DOCTYPE htmlhtmlheadmeta charset="UTF-8"title/titlelink rel="stylesheet" href="../../layui/css/layui.css" /style#test-...
2024-10-24
前端开发问题
271
append() 方法在被选元素的结尾(仍然在内部)插入指定内容。 语法: $(selector).append( content ) var creatPrintList = function(data){ var innerHtml = ""; for(var i =0;i data.length;i++){ innerHtml +="li class='contentLi'"; innerHtml +="a href...
2024-10-18
前端开发问题
125
quot;Each child in an array should have a unique key propquot; only on first time render of page(“数组中的每个孩子都应该有一个唯一的 key prop仅在第一次呈现页面时)...
2024-04-20
前端开发问题
5
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)...
2024-04-20
前端开发问题
13
热门文章
1错误 [ERR_REQUIRE_ESM]:不支持 ES 模块的 require()
2vue中yarn install报错:info There appears to be trouble with you
3为什么 Chrome(在 Electron 内部)会突然重定向到 chrome-error://chromewebdat
4“aria-hidden 元素不包含可聚焦元素"显示模态时的问题
5使用选择器在 CSS 中选择元素的前一个兄弟
6js报错:Uncaught SyntaxError: Unexpected string
7layui怎么刷新当前页面?
8将模式设置为“no-cors"时使用 fetch 访问 API 时出错
热门精品源码
最新VIP资源
1多功能实用站长工具箱html功能模板
2多风格简历在线生成程序网页模板
3论文相似度查询系统源码
4响应式旅游景点宣传推广页面模板
5在线起名宣传推广网站源码
6酷黑微信小程序网站开发宣传页模板
7房产销售交易中介网站模板
8小学作业自动生成程序



大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)