html - 工具提示使用没有 js 的 title 属性?

标签 html css

我搜索了很长时间,寻找另一种解决方案,通过 :hover 选择上的 title="" 属性制作工具提示。

我希望找到一种使用title="" 属性并动态更改我的content:"" 属性的方法。

* {
   -webkit-font-smoothing: antialiased;
   font-family: "Trebuchet MS", Helvetica, sans-serif;
}

div {
  width: 300px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -moz-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  -o-transform: translate(-50%, -50%);
}

button {
  cursor: pointer;
  position: relative;
  display: inline-block;
  background: rgb(25, 181, 206);
  color: #fff;
  padding: 5px 15px;
  border: none;
  font-size: 1em;
}
    
button::after {
  content: "I'm a css tooltip!"; /* <= dynamically title content */
  z-index: -999;
  position: absolute;
  top: 110%;
  left: 0;
  width: 90%;
  padding: 5px 5%;
  font-size: 70%;
  text-align: center;
  color: #fff;
  background: rgb(21, 151, 171);
  opacity: 0;
  -webkit-transform: rotateX(180deg) rotateY(20deg) rotateZ(20deg);
  -moz-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  -o-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  -ms-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  -webkit-transform-origin: 100% 0%;
  transform-origin: 100% 0%;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -webkit-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -moz-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -ms-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -o-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
}
    
button:hover::after {
  opacity: 1;
  box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.15);
  -webkit-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  -moz-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  -o-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  -ms-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
}
<div>
  <button title="I'm a css tooltip1!">button</button>
  <button title="I'm a css tooltip2!">button</button>
  <button title="I'm a css tooltip3!">button</button>
</div>

Demo

有办法吗?

最佳答案

如果您需要自定义属性,请使用data- 属性,如果您需要非自定义属性(例如标题),请不要使用data-

* {
   -webkit-font-smoothing: antialiased;
   font-family: "Trebuchet MS", Helvetica, sans-serif;
}

div {
  width: 300px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -moz-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  -o-transform: translate(-50%, -50%);
}

button {
  cursor: pointer;
  position: relative;
  display: inline-block;
  background: rgb(25, 181, 206);
  color: #fff;
  padding: 5px 15px;
  border: none;
  font-size: 1em;
}
    
button::after {
  content: attr(data-title); /* <= dynamically title content */
  z-index: -999;
  position: absolute;
  top: 110%;
  left: 0;
  width: 90%;
  padding: 5px 5%;
  font-size: 70%;
  text-align: center;
  color: #fff;
  background: rgb(21, 151, 171);
  opacity: 0;
  -webkit-transform: rotateX(180deg) rotateY(20deg) rotateZ(20deg);
  -moz-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  -o-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  -ms-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
  -webkit-transform-origin: 100% 0%;
  transform-origin: 100% 0%;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -webkit-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -moz-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -ms-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
  -o-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
}
    
button:hover::after {
  opacity: 1;
  box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.15);
  -webkit-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  -moz-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  -o-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  -ms-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
  transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
}
<div>
  <button data-title="I'm a css tooltip1!">button</button>
  <button data-title="I'm a css tooltip2!">button</button>
  <button data-title="I'm a css tooltip3!">button</button>
</div>

Jsfiddle link

关于html - 工具提示使用没有 js 的 title 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922135/

相关文章:

javascript - 下载文件时在文件内容中获取类型 [object object],而不是使用 angular 7 的 blob

html - 学习如何通过 id 选择特定的 css 节点

javascript - 单击链接后,Bootstrap navi 会因滚动而闪烁

Javascript 使用 document.write 写入 innerHtml 的值

html - CSS div 样式

javascript - 为什么在函数外部定义颜色时 e.target.style.backgroundColor 不更新?

动画时 z-index on::before 的 CSS 问题

css - Bootstrap 3 跨多行垂直对齐

javascript - jQuery 此选择器不适用于图像

javascript - anchor 击并保持页面位置?