如何创建在纯CSS中保留鼠标悬停的工具提示?

时间:2017-02-11 19:45:24

标签: html css

我这里有一个工具提示代码。当我在此工具提示上移动鼠标单击按钮时,它会消失。如何让它留下来?我不知道怎么做。



a.tooltips {
  position: relative;
}
a.tooltips span {
  position: absolute;
  width: 140px;
  color: #FFFFFF;
  background: #000000;
  min-height: 50px;
  line-height: 30px;
  text-align: center;
  visibility: hidden;
  border-radius: 6px;
}
a.tooltips span:after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -8px;
  width: 0;
  height: 0;
  border-top: 8px solid #000000;
  border-right: 8px solid transparent;
  border-left: 8px solid transparent;
}
a:hover.tooltips span {
  visibility: visible;
  opacity: 0.8;
  bottom: 30px;
  left: 50%;
  margin-left: -76px;
  z-index: 999;
}

 <a class="tooltips" href="#">CSS Tooltips
                  <span>Tooltip <button  >Open dialog</button></span></a>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

不幸的是,在悬停时添加永久状态无法使用纯CSS完成,您将不得不添加jQuery的一小部分或javascript。类似的东西:

$('a.tooltips span').on('mouseover',function(){
    $(this).css({
        "visibility": "visible",
        "opacity": "0.8"
        // more styles go here
    });
});

答案 1 :(得分:2)

这最近发生了变化,现在可以使用纯CSS完成:

jsFiddle Example

 .tooltip {
  display: none;
  position: absolute;
  height: 45px;
  background-color: #FCF;
  overflow: hidden;
}

.hasTooltip:hover .tooltip,
.tooltip:hover {
  display: block;
}

答案 2 :(得分:0)

这是使用纯JavaScript的示例。这只是一个示例,但您可以对其进行大量修改以满足您的需求。正如评论中所提到的,您可以通过在悬停状态上添加转换延迟来实现纯CSS,但是如果您想要添加其他功能,使用JS解决方案将为您提供很大的灵活性。

var tooltips = document.querySelectorAll('.tooltip-group');
var closeTooltips = document.querySelectorAll('[data-tooltip-close]');
    
for ( var i = 0; i < tooltips.length; i++ ) {
  tooltips[i].addEventListener('mouseover', function( evt ) {

    // Open tooltip when the user interacts with the
    // element. We will just open the tooltip as
    // an example
    document.querySelector('[data-tooltip-id="' + evt.currentTarget.id + '"]').style.display = 'block';

  });
}

for ( var i = 0; i < closeTooltips.length; i++ ) {
  closeTooltips[i].addEventListener('click', function( evt ) {

    // Event for button within tooltip, this could be
    // replaced for anything such as opening a modal
    // or changing another element
    document.querySelector('[data-tooltip-id="' + evt.currentTarget.dataset.tooltipClose + '"]').style.display = 'none';

  });
}
body, html{
  width: 100%;
  height: 100%;
  font-family: 'Arial', sans-serif;
}

.f__container {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.tooltip-group {
  position: relative;
  margin: 0 auto;
}

[data-tooltip-id]{
  width: 100%;
  position: absolute;
  display: none;
  background: black;
  color: white;
  top: -60px;
  margin-left: -15px;
  border-radius: 5px;
  padding: 15px;
}
<div class="f__container">
  <div id="content">
    <div id="js-tooltip" class="tooltip-group">
      JS Tooltip, hover over me :D!
      <div data-tooltip-id="js-tooltip">
        Tooltip!
        <button data-tooltip-close="js-tooltip">Close</button>
      </div>
    </div>
  </div>
</div>