I am trying to create a music website.
But I have stuck in a situation where I need to show my viewers what this music video contains (Basically a 5sec video) when they hover over the thumbnail
.
The size of the video(height and width) should be equal to the size of the thumbnail
.
This is my code
* {
margin: 0px;
padding: 0px;
}
body {
background-color: #f2f2f2;
font-family: 'RobotoDraft', 'Roboto', sans-serif;
-webkit-font-smoothing: antialiased;
}
* {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
h5 {
margin: 0px;
font-size: 1.4em;
font-weight: 700;
}
p {
font-size: 12px;
}
.center {
height: 100vh;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
/* End Non-Essential */
.property-card {
margin: 5px;
height: 18em;
width: 14em;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
position: relative;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
border-radius: 16px;
overflow: hidden;
-webkit-box-shadow: 15px 15px 27px #e1e1e3, -15px -15px 27px #ffffff;
box-shadow: 15px 15px 27px #e1e1e3, -15px -15px 27px #ffffff;
}
/* ^-- The margin bottom is necessary for the drop shadow otherwise it gets clipped in certain cases. */
/* Top Half of card, image. */
.property-image {
height: 15em;
width: 14em;
padding: 1em 2em;
position: Absolute;
top: 0px;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
background-image: url('https://cdn.photographylife.com/wp-content/uploads/2017/01/What-is-landscape-photography.jpg');
background-size: cover;
background-repeat: no-repeat;
}
/* Bottom Card Section */
.property-description {
background-color: #FAFAFC;
height: 5em;
width: 14em;
position: absolute;
bottom: 0em;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
padding: 0.5em 1em;
text-align: center;
}
/* Social Icons */
.property-social-icons {
width: 1em;
height: 1em;
background-color: black;
position: absolute;
bottom: 1em;
left: 1em;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
}
/* Property Cards Hover States */
.property-card:hover .property-description {
height: 0em;
padding: 0px 1em;
}
.property-card:hover .property-image {
height: 18em;
}
.property-card:hover .property-social-icons {
background-color: white;
}
.property-card:hover .property-social-icons:hover {
background-color: transparent;
}
<body>
<h1 style="text-align: center;">Relax</h1>
<div class="center">
<div class="property-card">
<a href="#">
<div class="property-image">
<div class="property-image-title"></div>
</div>
</a>
<div class="property-description">
<h5> Card Title </h5>
<p>Lorem Ipsum Dipsum hortata. Mixcall Horcho. Mixwell Chingo. More Bingo. Lorem Ipum doth be hard.</p>
</div>
</div>
</div>
</body>
You can add the video element and hide it. Add onmouseover
event listener to your image and play the video for 5 seconds when they hover over the image and display the image back after 5 seconds video preview.
var video = document.getElementById('video')
var image = document.getElementById('image')
image.onmouseover = function() {
video.style.display = 'block'
image.style.display = 'none'
video.play()
setTimeout(function() {
video.pause()
video.currentTime = 0
video.style.display = 'none'
image.style.display = 'block'
}, 5000)
}
* {
margin: 0px;
padding: 0px;
}
body {
background-color: #f2f2f2;
font-family: 'RobotoDraft', 'Roboto', sans-serif;
-webkit-font-smoothing: antialiased;
}
* {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
h5 {
margin: 0px;
font-size: 1.4em;
font-weight: 700;
}
p {
font-size: 12px;
}
.center {
height: 100vh;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
/* End Non-Essential */
#video {
margin: 5px;
height: 18em;
width: 14em;
display: none;
object-fit: cover
}
.property-card {
margin: 5px;
height: 18em;
width: 14em;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
position: relative;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
border-radius: 16px;
overflow: hidden;
-webkit-box-shadow: 15px 15px 27px #e1e1e3, -15px -15px 27px #ffffff;
box-shadow: 15px 15px 27px #e1e1e3, -15px -15px 27px #ffffff;
}
/* ^-- The margin bottom is necessary for the drop shadow otherwise it gets clipped in certain cases. */
/* Top Half of card, image. */
.property-image {
height: 15em;
width: 14em;
padding: 1em 2em;
position: Absolute;
top: 0px;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
background-image: url('https://cdn.photographylife.com/wp-content/uploads/2017/01/What-is-landscape-photography.jpg');
background-size: cover;
background-repeat: no-repeat;
}
/* Bottom Card Section */
.property-description {
background-color: #FAFAFC;
height: 5em;
width: 14em;
position: absolute;
bottom: 0em;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
padding: 0.5em 1em;
text-align: center;
}
/* Social Icons */
.property-social-icons {
width: 1em;
height: 1em;
background-color: black;
position: absolute;
bottom: 1em;
left: 1em;
-webkit-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
}
/* Property Cards Hover States */
.property-card:hover .property-description {
height: 0em;
padding: 0px 1em;
}
.property-card:hover .property-image {
height: 18em;
}
.property-card:hover .property-social-icons {
background-color: white;
}
.property-card:hover .property-social-icons:hover {
background-color: transparent;
}
<body>
<h1 style="text-align: center;">Relax</h1>
<div class="center">
<div class="property-card">
<a href="#">
<div class="property-image" id="image">
<div class="property-image-title"></div>
</div>
<video id="video">
<source control src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm"
type="video/webm">
</video>
</a>
<div class="property-description">
<h5> Card Title </h5>
<p>Lorem Ipsum Dipsum hortata. Mixcall Horcho. Mixwell Chingo. More Bingo. Lorem Ipum doth be hard.</p>
</div>
</div>
</div>
</body>