CSS:悬停时在图像/视频div上叠加图标

时间:2016-02-11 21:40:25

标签: html css

我渲染一个div,其图像看起来像是一个视频(但它只是一个图像,用于表现)。当用户点击图像时,JS会使用相应的youtube嵌入代码交换图像并播放视频。

在图像/视频div下面,我有另一个div,带有一些动作图标(分享,等等)。我想把它们放在图像/视频div上,而不是在图像/视频div下面进行操作:hover。有关更好的说明,请参见下图:

enter image description here

这是我代码的当前结构。

HTML:

<div class="youtube-container col-sm-6 col-lg-4">
  <div class="youtube-player"  data-id="<%= trailer.youtube_id %>">
      <div class="holder">
      </div>
  </div>
</div>

<div class="row icons">
  <div class="icon">
    <img src="icon1">
  </div>

  <div class="icon">
    <img src="icon2">
  </div>

  <div class="icon">
    <img src="icon3">
  </div>
</div>

CSS:

  .icons img {
    height: 35px;
    margin: -10px 0 0 5px;
  }

   .icons {
    float:left;
    margin: 30px 10px 10px 10px;
  }

.icon img {
  height: 55px;
}

.youtube-container {
    display: block;
    margin: 20px auto;
    width: 100%;
    width: 100%;
}

.youtube-player {
    display: block; width: 100%; /* assuming that the video has a 16:9 ratio */
    padding-bottom: 56.25%;
    overflow: hidden;
    position: relative;
    width: 100%;
    height: 100%;
    cursor: hand;
    cursor: pointer;
    display: block;
}

img.youtube-thumb {
    bottom: 0;
    display: block;
    left: 0;
    margin: auto;
    max-width: 100%;
    width: 100%;
    position: absolute;
    right: 0;
    top: 0;
    height: auto
}

div.play-button {
  height: 72px;
  width: 72px;
  left: 50%;
  top: 50%;
  margin-left: -36px;
  margin-top: -36px;
  position: absolute;
  background: url("http://i.imgur.com/TxzC70f.png") no-repeat;
}


#youtube-iframe {   <--- the iframe dynamically generated when someone clicks the image
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}

加载页面后,Javascript会通过,1)找到所有.holder divs 2)插入一个动态生成的图像3)将一个on.click事件监听器添加到.holder,当单击时,将图像交换为youtube iframe。

我理解如何实现“悬停”部分,我需要CSS帮助并将图标叠加在图像/视频之上。

1 个答案:

答案 0 :(得分:0)

你必须使用position:relative/absolute

&#13;
&#13;
.wrap {
  position: relative;
  /*demo*/
  width: 100%;
  padding-bottom: 56.25%;
  background: lightblue;
}
.wrap:last-of-type {
  background:red
}
.youtube-container,
.icons {
  position: absolute
}
.icons {
  bottom: 3%;
  right: 3%;
  cursor: pointer;
}

.icon img {
  max-height: 55px;
  margin-top:5px
}
.youtube-container {
  display: block;
  margin: 20px auto;
  width: 100%;
  width: 100%;
}
.youtube-player {
  display: block;
  width: 100%;
  /* assuming that the video has a 16:9 ratio */
  padding-bottom: 56.25%;
  overflow: hidden;
  position: relative;
  width: 100%;
  height: 100%;
  cursor: hand;
  cursor: pointer;
  display: block;
}
&#13;
<div class="wrap">
  <div class="youtube-container">
    <div class="youtube-player" data-id="trailer.youtube_id">
      <div class="holder">
      </div>
    </div>
  </div>
  <div class="row icons">
    <div class="icon">
      <img src="//lorempixel.com/30/30">
    </div>
    <div class="icon">
      <img src="//lorempixel.com/30/30">
    </div>
    <div class="icon">
      <img src="//lorempixel.com/30/30">
    </div>
  </div>
</div>
<div class="wrap">
  <div class="youtube-container">
    <div class="youtube-player" data-id="trailer.youtube_id">
      <div class="holder">
      </div>
    </div>
  </div>
  <div class="row icons">
    <div class="icon">
      <img src="//lorempixel.com/30/30">
    </div>
    <div class="icon">
      <img src="//lorempixel.com/30/30">
    </div>
    <div class="icon">
      <img src="//lorempixel.com/30/30">
    </div>
  </div>
</div>
&#13;
&#13;
&#13;