Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
213 views
in Technique[技术] by (71.8m points)

Is a CSS-only Inline "Tooltip" With HTML Content Inside (eg. images) Possible?

There are a lot of tooltip solutions on Stack Overflow, ie. ways of showing some text or HTML when the user hovers over some other text. However, I can't seem to find one that:

  • is pure HTML + CSS
  • allows the tooltip to be inline (eg. doesn't require a <div> or other block element)
  • allows HTML tooltip content (potentially with display:block)

These requirements come from wanting to provide definitions of terms inline, inside paragraphs of text, and I'd like for those definitions to be able to contain block-display HTML content (eg. paragraphs and images).

Most of the CSS-only solutions I find seem to work by nesting the "tooltip" definition inside the hover target's HTML. However, that's impossible if you want the term to be inline, but its definition to be block, because you'd have to nest block content inside an inline tag.

Is there any other approach I can use that lets me have words or phrases inside paragraphs as "hover targets", but then show HTML hover definitions when that happens ... without Javascript?

question from:https://stackoverflow.com/questions/65854934/is-a-css-only-inline-tooltip-with-html-content-inside-eg-images-possible

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If it is allowable to change the markup of the actual text to replace inline elements (p is tprobably the most likely to need this) with divs + suitable CSS, you can insert tooltip content within divs which are inline-block.

This means any block content can be held in the tooltip.

Here's a trivial example:

.inline {
  display:inline-block;
  position: relative;
}
.inline .content {
  display: none;
  position: absolute;
  top: 1em;
  left: 0;
  z-index: 99999;
  border-style: solid;
  background-color: white;
}
.inline:hover .content {
  display: block;
}
<div>I am not hoverable.
    <div class="inline">But I am hoverable.&nbsp; 
      <div class="content">I am tooltip content and I've got an image in me... 
        <img src="https://picsum.photos/200"/>
        <div>...and another div</div>
      </div>
    </div>I am not hoverable.
</div>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...