单击时出现错误的模式弹出窗口html,css,js

问题描述

我在弄清楚如何使每个示例具有自己内容的模式时遇到了麻烦。目前,如果我单击“ EXAMPLE2”,则仍然弹出“ EXAMPLE1”中的内容。我也不确定为什么图标或模式不能在这里工作,但我希望有人至少可以根据此处的代码给出指针。我尝试将ID更改为唯一,但是我认为我做的不正确吗?预先谢谢你

function togglePopup(){
  document.getElementById("popup-1").classList.toggle("active");
}
function togglePopup(){
  document.getElementById("popup-2").classList.toggle("active");
}
.icon-inner {
  width: 120px;
  /*height: 40vh;*/
  float: left;
  padding-right: 20px;
  text-align: center;
  /*position: relative;*/
  border-radius: 50%;
  position: relative;
  display: inline-block;
}

/*.icon-inner span {
  float: left;
  padding-left: 20px;
  text-align: center;
  position: relative;
  border-radius: 50%;
  display: inline-block;
}*/

.icon-inner span:before {
  margin-left: 0;
  font-size: 40px;
}

.icon-inner span:hover {
  margin-left: 0;
  font-size: 40px;
  color: #4FC1E9;
  cursor: pointer;
}


.icon-inner-info span:before {
  height: 15px;
  width: 20px;
  margin-left: 0;
  padding-left: 2px;
  padding-right: 5px;
  font-size: 12px;
  /*float: flex;*/
  position: relative;
}

.icon-inner-info span:hover {
  margin-left: 0;
  cursor: help;
  position: relative;
  padding-right: 5px;
}

.icon-inner-info .tooltiptext {
  visibility: hidden;
  width: 400px;
  background-color: black;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 5px 0;
  position: absolute;
  z-index: 1;
  top: -5px;
  left: 110%;
}

.icon-inner-info .tooltiptext::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 100%;
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent black transparent transparent;
}

.icon-inner-info:hover .tooltiptext {
  visibility: visible;
}


.popup .overlay {
  position:fixed;
  top:0px;
  left:0px;
  width:100vw;
  height:100vh;
  background:rgba(0,0.7);
  z-index:1;
  display:none;
}

.popup .content-pop {
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%) scale(0);
  background:#fff;
  width:500px;
  height:250px;
  z-index:2;
  text-align:center;
  padding:20px;
  box-sizing:border-box;
  font-family:"Open Sans",sans-serif;
}

.popup .close-btn {
  cursor:pointer;
  position:absolute;
  right:20px;
  top:20px;
  width:30px;
  height:30px;
  background:#222;
  color:#fff;
  font-size:25px;
  font-weight:600;
  line-height:30px;
  text-align:center;
  border-radius:50%;
}

.popup.active .overlay {
  display:block;
}

.popup.active .content-pop {
  transition:all 300ms ease-in-out;
  transform:translate(50%,-50%) scale(1);
}

@media(max-width: 750px) {
  .popup.active .content-pop { 
    transform:translate(-10%,-50%) scale(1);
  } 
}
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=devide-width,initialpscale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="style.css">
    <!-- link for back to top button -->
    <!-- <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> --> 
    <link rel="stylesheet" href="font/flaticon.css">

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!--  -->


  </head>
<body>
  <div class="icon-inner">
                  <span class="flaticon-statistics" onclick="togglePopup()"></span>
                  <p>TITLE1</p>
                    <!-- <p class="tooltiptext">Interviewing,notetaking,storytelling</p> -->
                  <div class="popup" id="popup-1">
                    <div class="overlay"></div>
                    <div class="content-pop">
                      <div class="close-btn" onclick="togglePopup()">&times;</div>
                      <h1>Title1</h1>
                      <p>example1</p>
                    </div>
                  </div>
                </div>
  <div class="icon-inner">
                  <span class="flaticon-statistics" onclick="togglePopup()"></span>
                  <p>TITLE2</p>
                    <!-- <p class="tooltiptext">Interviewing,storytelling</p> -->
                  <div class="popup" id="popup-2">
                    <div class="overlay"></div>
                    <div class="content-pop">
                      <div class="close-btn" onclick="togglePopup()">&times;</div>
                      <h1>Title2</h1>
                      <p>example2</p>
                    </div>
                  </div>
                </div>

解决方法

最初,您的问题是重复的ID。但是,更改它们后,问题就变成了两个不同功能的名称相同。

最简单的解决方案是将要打开的ID传递给函数:

出于测试目的,我删除了所有CSS,因为弹出窗口未正确对齐。

在我的示例中,单词OPEN是您的打开图标。它的工作原理相同,只是没有图标。

function togglePopup(id){
  document.getElementById(id).classList.toggle("active");
}
.popup{display:none;}
.active{display:block;}
  <div class="icon-inner">
                  <span class="flaticon-statistics" onclick="togglePopup('popup-1')">OPEN</span>
                  <p>TITLE1</p>
                    <!-- <p class="tooltiptext">Interviewing,notetaking,storytelling</p> -->
                  <div class="popup" id="popup-1">
                    <div class="overlay"></div>
                    <div class="content-pop">
                      <div class="close-btn" onclick="togglePopup('popup-1')">&times;</div>
                      <h1>Title1</h1>
                      <p>example1</p>
                    </div>
                  </div>
                </div>
  <div class="icon-inner">
                  <span class="flaticon-statistics" onclick="togglePopup('popup-2')">OPEN</span>
                  <p>TITLE2</p>
                    <!-- <p class="tooltiptext">Interviewing,storytelling</p> -->
                  <div class="popup" id="popup-2">
                    <div class="overlay"></div>
                    <div class="content-pop">
                      <div class="close-btn" onclick="togglePopup('popup-2')">&times;</div>
                      <h1>Title2</h1>
                      <p>example2</p>
                    </div>
                  </div>
                </div>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...