[js+css]点击隐藏层,点击另外层不能隐藏原层

yizhihongxing

针对“[js+css]点击隐藏层,点击另外层不能隐藏原层”的需求,需要用到JavaScript和CSS的结合。下面是实现这个效果的完整攻略:

步骤 1:HTML结构

首先,需要定义两个层,一个是要隐藏的层,一个是阻止隐藏的层。例如:

<div class="hide" id="hide-layer">这是要隐藏的层</div>
<div class="mask" id="mask-layer">这是阻止隐藏的层</div>

步骤 2:CSS样式

body{
    background: gray;
}

.hide {
    position: absolute;
    top: 0;
    background-color: #fff;
    border: 1px solid #ccc;
    max-width: 200px;
    z-index: 10;
}

.mask {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background-color: transparent;
    z-index: 5;
} 

考虑如何控制这些样式的,需要使用 positionz-index 属性。为了让两个层都在可见范围内,给它们都设置了绝对定位。隐藏层设置了 z-index:10,阻止隐藏层设置了 z-index:5。因为 z-index 较大的元素将遮盖较小的元素,阻止隐藏的层 z-index 最小,所以优先显示。

步骤 3:JavaScript事件

要实现这个效果需要用到两个事件,一个用于隐藏层,另一个用于阻止隐藏。因为我们只希望在点击隐藏层之外的地方时才隐藏它,所以需要在文档上注册一个 mousedown 事件,它可以在点击的时候被触发。在点击事件时,可以通过检查所单击的元素是否是隐藏层或不需要隐藏的元素,在判断单击位置来决定是否隐藏目标层。

var mask = document.getElementById('mask-layer'),
    hide = document.getElementById('hide-layer');

mask.addEventListener('mousedown', function (event) {
    if (hide.style.display !== "none" && event.target === mask) {
        hide.style.display = "none";
    }
});

上面的代码可以在检测到单击时将隐藏层设置为 none,因此可以阻止它的显示。

示例 1

<!DOCTYPE html>
<html>
    <head>
        <title>点击隐藏层,点击另外层不能隐藏原层</title>
        <meta charset="utf-8">
        <style>
            body{
                background: gray;
            }

            .hide {
                position: absolute;
                top: 50%;
                left: 50%;
                margin: -50px 0 0 -50px;
                background-color: #fff;
                border: 1px solid #ccc;
                max-width: 200px;
                z-index: 10;
            }

            .mask {
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                background-color: transparent;
                z-index: 5;
            } 
        </style>
    </head>
    <body>
        <div class="hide" id="hide-layer">这是要隐藏的层</div>
        <div class="mask" id="mask-layer">这是阻止隐藏的层</div>
        <script>
            var mask = document.getElementById('mask-layer'),
                hide = document.getElementById('hide-layer');

            mask.addEventListener('mousedown', function (event) {
                if (hide.style.display !== "none" && event.target === mask) {
                    hide.style.display = "none";
                }
            });
        </script>
    </body>
</html>

示例 2

<!DOCTYPE html>
<html>
    <head>
        <title>点击隐藏层,点击另外层不能隐藏原层</title>
        <meta charset="utf-8">
        <style>
            body{
                background: gray;
            }

            .hide {
                position: absolute;
                top: 50%;
                left: 50%;
                margin: -50px 0 0 -50px;
                background-color: #fff;
                border: 1px solid #ccc;
                max-width: 200px;
                z-index: 10;
            }

            .mask {
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
                background-color: transparent;
                z-index: 5;
            } 

            .button{
                background-color: red;
                color: white;
                padding: 10px 20px;
                margin: 20px;
            }
        </style>
    </head>
    <body>
        <div class="hide" id="hide-layer">这是要隐藏的层</div>
        <div class="mask" id="mask-layer">
            <div class="button">这个按钮不会隐藏层</div>
        </div>
        <script>
            var mask = document.getElementById('mask-layer'),
                hide = document.getElementById('hide-layer');

            mask.addEventListener('mousedown', function (event) {
                if (hide.style.display !== "none" && event.target === mask) {
                    hide.style.display = "none";
                }
            });
        </script>
    </body>
</html>

以上就是这个需求的完整攻略,希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:[js+css]点击隐藏层,点击另外层不能隐藏原层 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • Javascript中实现trim()函数的两种方法

    让我们开始讲解Javascript中实现trim()函数的两种方法。 一、背景介绍 在Javascript中,字符串是不可变的,也就是说无法在一个字符串中删除或添加字符,只能通过创建一个新的字符串来变相实现。而实际开发中会遇到需要删除字符串前后的空格的需求,这时候就需要用到trim()函数了。 二、方法一:使用正则表达式 我们可以使用正则表达式将字符串前后的…

    JavaScript 2023年5月27日
    00
  • 扩展JavaScript功能的正确方法(译文)

    首先需要解释一下什么是扩展JavaScript功能的正确方法,其实就是指通过使用第三方库或者自己编写代码模块的方式增强基本的JavaScript功能。以下是详细的攻略: 1. 了解JavaScript基础知识 在进行任何扩展功能之前,首先要掌握JavaScript的基础知识,了解它的语法、变量、函数、数据类型等基本元素,只有这样才能更好地扩展它的功能。推荐阅…

    JavaScript 2023年5月18日
    00
  • Javascript Date toDateString() 方法

    以下是关于JavaScript Date对象的toDateString()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的toDateString()方法 JavaScript的toDateString()方法返回一个表示对象日期部分的字符串,该字符串格式为英文的星期几、英文的月份、日期和年份。 下面是使用对象的toDateStrin…

    JavaScript 2023年5月11日
    00
  • JS Pro-深入面向对象的程序设计之继承的详解

    JS Pro-深入面向对象的程序设计之继承的详解 本攻略将从以下内容入手,逐步深入探讨JavaScript面向对象编程中的继承。 原型链继承 构造函数继承 组合继承 原型式继承 寄生式继承 寄生组合式继承 原型链继承 原型链继承,顾名思义,指的是连接原型链的方式进行继承。简单来说,就是在子类的构造函数中通过关联父类的原型实现继承。 function Pare…

    JavaScript 2023年5月27日
    00
  • js cookie实现记住密码功能

    下面是关于“js cookie实现记住密码功能”的完整攻略。 什么是cookie Cookie 是一种小的文本数据,它通常由一个网站的服务器发送到网站的浏览器之后就被存储在浏览器的本地硬盘上。每当该浏览器向同一网站再次发出请求时,它就会将这些 Cookie 信息发送给该网站的服务器。 如何使用js cookie实现记住密码功能 一般情况下,我们可以通过设置一…

    JavaScript 2023年6月11日
    00
  • 高性能js数组去重(12种方法,史上最全)

    这里为大家详细讲解“高性能js数组去重(12种方法,史上最全)”的完整攻略。 1. 原始数组去重方法 原始数组去重方法是指使用两层循环遍历原始数组,逐个将元素与新数组中的元素作比较,如果新数组中没有相同的元素,就把该元素压入新数组。这种方法代码简单易懂,适合只有少量元素的数组去重。 代码如下: function unique1(arr) { var newA…

    JavaScript 2023年5月27日
    00
  • Android 实现WebView点击图片查看大图列表及图片保存功能

    Android 实现WebView点击图片查看大图列表及图片保存功能 简介 在WebView中点击图片可以实现图片查看、图片保存等功能是非常常见且实用的功能,本文将详细介绍如何在Android中实现WebView点击图片查看大图列表及图片保存功能。 WebView中显示图片 在Android中使用WebView加载网页时,如果网页中有图片,则图片默认是不会展…

    JavaScript 2023年6月11日
    00
  • JavaScript 创建对象

    下面是 JavaScript 创建对象的完整攻略: 1. 对象创建方式 JavaScript 有三种创建对象的方式: 1.1. Object 构造函数方式 使用 Object 构造函数创建对象时,需要通过 new 操作符创建一个对象实例。 let obj = new Object(); obj.name = ‘张三’; obj.age = 18; 1.2. …

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部