【问题标题】:Show and hide tooltips with CSS and Javascript使用 CSS 和 Javascript 显示和隐藏工具提示
【发布时间】:2021-04-12 13:29:24
【问题描述】:

当我将鼠标悬停在工具提示上时,我使用 CSS 来显示和隐藏它们。现在我需要它来为具有点击功能的移动设备工作。我通过 Javascript 切换类获得了第一个工具提示。我现在如何将该功能应用于所有工具提示?我有大约 30 到 40 个。知道如何实现我的目标吗?

document.getElementById("website-tooltip-container").addEventListener("click", function() {
  var element = document.getElementById("test");
  element.classList.toggle("website-tooltiptext-visible");
});
/* Tooltip Container */

.website-tooltip {
  position: relative;
  display: flex;
  justify-content: center;
  cursor: pointer;
  font-family: Roboto;
  font-size: 18px;
  font-weight: 400;
  color: #666;
}


/* Tooltip text */

.website-tooltip .website-tooltiptext {
  visibility: hidden;
  max-width: 350px;
  font-family: open sans;
  font-size: 13px;
  line-height: 22px;
  background-color: #FFFFFF;
  color: #666;
  text-align: left;
  padding: 11px 15px 11px 15px !important;
  border-radius: 3px;
  box-shadow: 0px 5px 10px -2px rgba(0, 0, 0, 0.5);
  /* Position the tooltip text */
  position: absolute;
  z-index: 1;
  top: 100%;
  margin: 0px 0px 0px 0px;
}


/* Show the tooltip text when you mouse over the tooltip container */

.website-tooltip:hover .website-tooltiptext {
  visibility: visible;
}


/* Hide when hovering over tooltip div */

div.website-tooltiptext:hover {
  display: none;
}


/* Toggle this class to show Tooltip on click via Javascript */

.website-tooltiptext-visible {
  visibility: visible !important;
  display: block !important;
}
<div id="website-tooltip-container" class="website-tooltip"><span class="dottedunderline">Tooltip 1</span>
  <div id="test" class="website-tooltiptext">Blabalabalbalablablabla.
  </div>
</div>

<div id="website-tooltip-container" class="website-tooltip"><span class="dottedunderline">Tooltip 2</span>
  <div id="test" class="website-tooltiptext">Blabalabalbalablablabla.
  </div>
</div>

<div id="website-tooltip-container" class="website-tooltip"><span class="dottedunderline">Tooltip 3</span>
  <div id="test" class="website-tooltiptext">Blabalabalbalablablabla.
  </div>
</div>

<div id="website-tooltip-container" class="website-tooltip"><span class="dottedunderline">Tooltip 4</span>
  <div id="test" class="website-tooltiptext">Blabalabalbalablablabla.
  </div>
</div>

感谢您的帮助!

【问题讨论】:

    标签: javascript tooltip toggle visibility


    【解决方案1】:

    使用额外的课程。 将此添加到您的 CSS:

     .website-tooltiptext-visible {
                visibility: visible !important;
            }
    

    并在你的 js 代码中替换这个类:

    element.classList.toggle("website-tooltiptext-visible");
    

    PS:切勿对多个 HTML 元素使用相同的 id。一如既往!

    编辑:使用下面的 javascript 代码按类选择

    Array.from(document.getElementsByClassName("website-tooltiptext")).forEach(
        (element) => {
            element.addEventListener("click", () => {
                element.classList.toggle("website-tooltiptext-visible");
            });
        }
    );
    

    【讨论】:

    • 好的,谢谢。单击它现在可以工作。但是还有2个问题。 1.) 单击并打开工具提示时,可以将工具提示容器悬停在其后面。我怎样才能避免这种情况。 2.) 如何通过点击运行其他工具提示?是否每个工具提示都需要有自己的 Javascript 和自己的 id?因为我有很多工具提示,比如 30 或 40。有没有更简单的解决方案?感谢您的帮助!
    • 问题 1.) 我通过输入代码 display: block !important;.website-tooltiptext-visible 解决了(参见 sn-p)。但我仍然不知道如何解决问题 2.) 以一种简单的方式,无需复制 Javascript 40 次并始终输入唯一的 id...:/
    • 我更新了答案,使用 getElementsByClassName 获取具有特定 CSS 类的所有元素。我强烈建议您切换到动态 Web 开发。他们用 javascript 构建整个页面。它速度快、基于组件、可重复使用等。如果您有兴趣,我可以向您展示一些基础。
    • 抱歉,您的代码没有解决方案。如果我在 sn-p 中输入它,则会出现错误消息并且工具提示不可点击。仍然感谢您尝试过。
    • 对不起。我的错!我修好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多