我渲染一个div,其图像看起来像是一个视频(但它只是一个图像,用于表现)。当用户点击图像时,JS会使用相应的youtube嵌入代码交换图像并播放视频。
在图像/视频div下面,我有另一个div,带有一些动作图标(分享,等等)。我想把它们放在图像/视频div上,而不是在图像/视频div下面进行操作:hover。有关更好的说明,请参见下图:
这是我代码的当前结构。
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帮助并将图标叠加在图像/视频之上。
答案 0 :(得分:0)
你必须使用position:relative/absolute
.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;