CSS遮罩层实现思路:
遮罩层的影藏方式一般有display:none、visibility:none、opacity: 0。
遮罩层从无到有的出现效果一般是opacity值从0~1,结合transition属性使用。
遮罩层一般位于页面Z轴方向前面,如果遮罩层只设置opacity,由于其z-index靠前,会导致触发不到打开按钮,处理这个问题的处理方式有两种:
1、设置按钮的z-index(5),在遮罩层出现后设置的z-index(如这里的55)要是最高。
2、遮罩层结合visibility使用,即使打开按钮不设置z-index值,在点击按钮时,是触发不到遮罩层的,可通过脚本验证。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1"/>
<style>
* {
padding: 0;
margin: 0;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
line-height: 1.5;
-webkit-tap-highlight-color: transparent;
} /*页面按照750px的设计稿,适应vw/vh布局,100vw / 750px * 100px , 1rem = 100px*/
html {
font-size: 13.333333333333333333333333333333vw;
} body {
position: relative;
width: 100%;
height: 100%;
min-width: 320px;
max-width: 540px;
margin: 0 auto;
} @media screen and (max-width: 320px) {
html {font-size: 50px}
}
@media screen and (min-width: 540px) {
html {font-size: 70px;}
}
a { text-decoration: none;} .openMask {
position: relative;
display: block;
z-index: 5;
width: 3rem;
height: .9rem;
margin: 0.6rem;
color: #999;
font-size: 0.5rem;
font-weight: 800;
text-align: center;
line-height: .9rem;
border: 2px solid;
}
/*伪元素的真正宽高是openMask的宽高减去border值(4px),也就是content box大小,但定位开始是padding box*/
.openMask:after {
position: absolute;
z-index: -2;
content: '';
top: 0;
left: 50%;
width: 0;
height: 100%;
transition: all .1s;
transform: translateX(-50%);
}
.openMask:active {color: #fff}
.openMask:active:after {
width: 100%;
background: #999;
} .maskLayer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
visibility: hidden;
background: rgba(0,0,0,.3);
transition: all .3s;
} .content {
position: absolute;
bottom: -8rem;
width: 100%;
height: 8rem;
background: #fff;
border-radius: .4rem .4rem 0 0;
transition: all .6s;
}
.maskLayer:target {
z-index: 55;
opacity: 1;
visibility: visible;
} .maskLayer:target .content {
bottom: 0;
} .closeMask {
position: absolute;
top: 3vw;
right: 6vw;
font-size: 6vw;
} .closeMaskLayer {
position: absolute;
z-index: -4;
display: block;
width: 100%;
height: 100%;
}
</style>
<title>target实现弹框</title>
<script src="jquery-3.1.0.min.js"></script>
</head>
<body>
<a href="#maskLayer" class="openMask">OPEN</a>
<div href="#" id="maskLayer" class="maskLayer">
<a href="#" class="closeMaskLayer"></a><!--用于遮罩关闭-->
<div class="content">
<a href="#" class="closeMask">✕</a>
</div>
</div> <script>
$("#maskLayer").click(function() {
console.log("visibility");
});
</script>
</body>
</html>

回过头再做再看一些内容时,发现曾经的疑问豁然开朗,不是你不行,而是你要矢志不渝地前行才能到达你需要的高度。

css实现弹框的更多相关文章

  1. css实现弹框垂直居中

    原文链接:https://blog.csdn.net/sunny327/article/details/47419949/ <!DOCTYPE html><html> < ...

  2. 参考bootstrap中的popover.js的css画消息弹框

    前段时间小颖的大学同学给小颖发了一张截图,图片类似下面这张图: 小颖当时大概的给她说了下,其实小颖也不知道上面那个三角形怎么画嘻嘻,给她说了DOM结构,具体的css让她自己百度,今天小颖自己参考boo ...

  3. js+css jQuery实现页面后退执行 & 遮罩弹框

    JS部分 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script> < ...

  4. Jquary入门(添加 修改 表单元素)+ JSON+弹框

    字符串拼接 计算机语言 都是 对  数据的处理(获取/修改数据)  添加元素  除了  固定的方法添加 以外 都是   字符串拼接(拼接成固定格式即可执行). 1.表单添加元素  append() 方 ...

  5. javascript中的弹框

    大家都见过某度中的恶意广告,你关闭了又出来了!为何,JS来告诉你 效果猛戳此处 HTML <body> <h3 class="whiteColor">无法关 ...

  6. 自己写的基于bootstrap风格的弹框插件

    自己写的一款基于bootstrap风格的弹框插件,暂时只有确认框.提示框.后续功能扩展.bug修改再更新. ;(function($){ //默认参数 var PARAMS; var DEFAULTP ...

  7. js弹框3秒后自动消失

    开发中有时候会需要最出弹框后,过几秒自动消失的效果,下面给大家分享一下我自己做的一个小案例. 案例中的弹框使用的是bootstrap里面的模态框,实现自动消失则用的是js中的setInterval方法 ...

  8. html实现弹框,并伴随遮罩层,且弹框居中

    本文介绍的内容主要实现的功能有,出现弹框,并且伴随遮罩层,且弹框一直居中. html和js代码: <div id="hidebg"></div> <d ...

  9. bootstrap弹框

    http://v3.bootcss.com/javascript/#modals 参考bootstrap官网 模态框做php后端 前端一直不行,但是很多时候 用到ajax都要用到弹框,一直在代码里面找 ...

随机推荐

  1. 什么是 AQS ?

    AQS 是 AbustactQueuedSynchronizer 的简称,它是一个 Java 提高的底层同步工具类,用一个 int 类型的变量表示同步状态,并提供了一系列的 CAS 操作来管理这个同步 ...

  2. 什么是 MyBatis 的接口绑定?有哪些实现方式?

    接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑 定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可 以有更加灵活的选择和 ...

  3. 经历了源码的痛苦,掌握DRF的核心序列化器

    目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...

  4. 快速注册service服务

    一.通过SpringContextHolder的getBean来注册service服务 导入的包:import com.bessky.platform.context.SpringContextHol ...

  5. 如何解决Visual Studio 2017 运行后控制台窗口一闪就消失了

    出现这种情况的原因 安装使用Visual Studio 2017 后,用Ctrl+F5运行程序,结果控制台窗口一闪就没了,也没有出现"press any key to continue-&q ...

  6. 2_稳定性分析_极点_Stability

    在复平面内 控制理论就是设计控制器D使输入输出之间的传递函数的极点落在复平面的左侧,在现代控制理论中研究状态矩阵的特征值判断稳定性

  7. 微信小程序安全浅析

    引言 近期微信小程序重磅发布,在互联网界掀起不小的波澜,已有许多公司发布了自己的小程序,涉及不同的行业领域.大家在体验小程序用完即走便利的同时,是否对小程序的安全性还存有疑虑.白泽日前对微信小程序进行 ...

  8. ES6-11学习笔记--异步迭代

    ES9提供异步迭代: for await of Symbol.asyncIterator   function getPromise(time) { return new Promise((resol ...

  9. Unknown host mirrors.opencas.cn You may need to adjust the proxy settings in Gradle 报错及解决办法

    亲测Unknown host mirrors.opencas.cn You may need to adjust the proxy settings in Gradle 解决办法 - 程序员大本营 ...

  10. 解决vscode开发react项目没有html标签自动补全

    怎么设置自动补全: 左下角齿轮按钮--设置-- 在搜索框中输入Include Languages,选择Emmet,并在Emmet:include language下点击在setting.json中编辑 ...