WutWut
WutWut

Reputation: 1234

creating div and image overlay over a video that hides on click

I need something like this. http://jsfiddle.net/2fAxv/1/ But the second div #hideshould be on the top left of the screen with some margin. Can't figure that out. Also, once the image is clicked on the youtube video shrinks to a default size.Is there a way to fix it's size in the same code without using <iframe>

html

<div class="vid">
    <img id="hide" src="http://img.youtube.com/vi/Z7JgY9zezj4/hqdefault.jpg" data-video="https://www.youtube.com/embed/Z7JgY9zezj4?autoplay=1" />
    <div id="hide1">
        <h3>johnny Depp<br><span>Acting Technique</span></h3>
    </div>
</div>

css

.vid {
width: 350px;
height: 298px;
float: left;
margin: 20px 25px 70px 70px;
background-size: cover;
background-position: 0px -50px;
background-repeat: none;
}
.vid div {
 overflow: hidden;
 height: 298px;
 width: 300px;
 background-color: rgba(255, 255, 255, 0.32); 
 }
 .vid div h3 {
 position: absolute;
 color: black;
 font-family: 'Montserrat', sans-serif;
 font-size: 30px;
 font-weight: bold;
 padding: 10px;
 background-color: rgba(255,255,255,0.8);
 margin-left: 30px;
 max-width: 450px;
 }
 .vid div h3 span {
 color: black;
 text-align: center;
 width: 300px;
 font-family: 'Source Sans Pro', sans-serif;
 font-style: italic;
 font-weight: 400;
 font-size: 19px;
 }

function

$('#hide').click(function() {
    video = '<iframe src="' + $(this).attr('data-video') + '"></iframe>';
    $(this).replaceWith(video);
    $('#hide1').hide();
});

Upvotes: 1

Views: 1098

Answers (1)

David Thomas
David Thomas

Reputation: 253308

As to the sizing problem, I'd suggest:

$('img').click(function () {
    // creating an <iframe> element:
    var video = $('<iframe />', {

        // setting its properties,
        // this.dataset.video returns the
        // value of the 'data-video' attribute:
        'src': this.dataset.video,

            // retrieves the height/width:
            'height': this.clientHeight,
            'width': this.clientWidth
    });
    $(this).replaceWith(video);
});

JS Fiddle demo.

The positioning can be solved, depending on where you want the element to be positioned, by simply using position: absolute on the element to position (the #hide1 element, with position: relative on the parent .vid element):

.vid {
    /* other (unchanged) styles omitted for brevity */
    position: relative;
}
.vid div {
    /* other (unchanged) styles removed for brevity */
    position: absolute;
    top: 10%;
    left: 10%;
}
/* some minor changes follow,
   just for tidying up/aesthetics;
   but irrelevant to the 'positioning'
   aspect */

JS Fiddle demo.

References:

Upvotes: 2

Related Questions