模拟图像的alt属性的行为

时间:2015-11-08 20:31:36

标签: javascript jquery

当访问者悬停图像时,会出现alt文本。是否可以使用javascript为任何事件和元素模拟此行为?

在这一点上添加一个小跨度将是一个解决方案,但我想知道这是否可行而不向内容添加任何内容。

enter image description here

3 个答案:

答案 0 :(得分:2)

以下是一种使用<figcaption>来扮演您的悬停工具提示角色的解决方案。

使用<figcaption>作为工具提示将为您的标记提供额外的语义含义。

figure.inline-image,
figure.inline-image img {
display: inline-block;
width: 260px;
height: 150px;
background-color: rgba(0, 0, 0, 1);
}

figcaption {
display: none;
position: relative;
top: -70px;
left: 40px;
padding: 3px;
width: auto;
border: 1px solid rgba(0, 0, 0, 1);
background-color: rgba(255, 255, 227, 1);
font-size: 12px;
}

figure.inline-image:hover figcaption {
display: inline-block;
}
<figure class="inline-image">
<img src="danish-flag.jpg" alt="Flag of Denmark" />
<figcaption>In the sky flies a red flag with a white cross whose vertical bar is shifted towards the flagpole.</figcaption>
</figure>

答案 1 :(得分:1)

首先检查title属性,它与alt属性非常相似。 除此之外,还有mouseentermouseleave等事件。您甚至可以使用data-alt属性在元素上提供数据。(您可以将alt替换为任何内容)。

此外还有许多图书馆,但我会快速展示你。

&#13;
&#13;
(function(){NodeList.prototype.forEach = Array.prototype.forEach;

var toolTip = document.createElement('DIV');
toolTip.style.display = "none";
toolTip.style.position = "absolute";
toolTip.style.width = "50px";
toolTip.style.height = "auto";
toolTip.style.border = "solid 1px black";
toolTip.style.transition = "top 50ms,left 50ms, display 500ms";
    function updatePosition(e){
      toolTip.style.top = e.clientY + "px";
      toolTip.style.left = e.clientX + "px";
    }
document.body.appendChild(toolTip);
document.querySelectorAll("[data-alt]").forEach(function(e){
  e.addEventListener('mouseenter',function(e){
    toolTip.style.display = "block";
    toolTip.style.cursor = "text";
    toolTip.style.top = e.clientY + "px";
    toolTip.style.left = e.clientX + "px";
    toolTip.textContent = this.getAttribute('data-alt');
  })
})
document.querySelectorAll("[data-alt]").forEach(function(e){

  e.addEventListener('mousemove',function(e){    
       updatePosition(e)

  })
})
document.querySelectorAll("[data-alt]").forEach(function(e){
  e.addEventListener('mouseleave',function(e){
    toolTip.style.display = "none";
  })
})
})();
&#13;
<h2 class="space" data-alt="Hello">Your Answer</h2>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

一个选项可能是使用:before所述的:after或{{1}}伪元素来制作CSS工具提示。