How to show text in image hover

css, hover, html, javascript, jquery

Solution

Well I'm going to assume you want this in a list:

There are a few main concepts here: Relative positioning and how it works with absolute positioning, Source order, and your centering technique.

When giving position:relative; to the box, you are saying "I am the boundary now - for any absolutely positioned things within me" (unless they are relative, and then like that on down the line) - So, the absolutely positioned cover thing you want to fade in - is absolutely positioned to one or more edges of the relative box. (most people use top: 0; left: 0;) --- so the absolute box is no longer in the "flow" and lives in it's own magic world determined by the relative parent.

Source order: your html will appear bottom up when stacking. so your cover thing should be below the image (in the html order) - you could use z-index - but there is no need to do that.

The negative margins are not really awesome and unneeded here. You can just text align center them. I would do some tests and put borders around stuff so you can see what it actually happening. ALSO - I encourage you to use box-sizing: border-box; on everything...

Read about: Border box

HTML

<ul class="thumbnail-list">

  <li>
    <a href="#" class="image-w">
      <img alt="thumbnail"
           src="http://placekitten.com/600/300" />
      
      <div class="cover">
        <h3>Title</h3>
        <p>A little bit more about the thing</p>
      </div>
    </a>
  </li>
  
</ul> <!-- .thumbnail-list -->

CSS

.thumbnail-list {
  list-style: none;
  margin: 0; paddingn: 0;
}

.thumbnail-list li {
  float: left;
}

a {
  text-decoration: none;
  color: inherit;
}

.thumbnail-list .image-w {
  display: block;
  position: relative;
  width: 16em;
}

.image-w img {
  display: block;
  width: 100%;
  height: auto;
}

.cover {
  position: absolute;
  top: 0; right: 0;
  bottom: 0; left: 0;
  width: 100%;
  height: 100%;
  color: rgba(255,255,255,0);
  text-align: center;
  transition: all 1s linear;
}

.cover:hover {
  background-color: rgba(0,0,0,.8);
  color: rgba(255,255,255,1);
  transition: all .2s linear;
}

.thumbnail-list h3 {
  font-size: 1.2em;
}

.thumbnail-list p {
  font-size: .9em;
}

Here is the code in action on jsfiddle

Problem

I have a few tumbnails that I want to show some text on them in hover. I could make them dark in hover but do not know how to add text. example: http://www.lenzflare.com/video-production-portfolio/ Here is what I have done: ``` a { display: inline-block; overflow: hidden; position: relative; } a:hover .play { background:url(http://goo.gl/yJqCOR) no-repeat center center; opacity: 0.8; position: absolute; width: 200px; height: 200px; left: 50%; top: 50%; margin-left: -110px; margin-top: -150px; } <a href="/"> <div class="play"></div> <img class="img" src="http://i42.tinypic.com/2v9zuc1.jpg" /> <br /> </a> ``` Demo: http://jsfiddle.net/jmXdh/79/

Original source

Related problems