Hey. Having a rather puzzling issue with my dropdown menus and iframes.
I have applied a z-index of 1000 to the dropdown menus, however the iframe containing the youtube video still appears above the menu. See for yourself below (check the 'shortcodes' menu):
http://www.matthewruddy.com/demo/?page_id=765
I cannot figure out why this is. Can anyone help me out? Here is the CSS if it helps:
#jquery-dropdown {
position: absolute;
bottom: 0;
right: 10px;
}
#jquery-dropdown ul {
margin: 0;
padding: 0;
list-style: none;
}
#jquery-dropdown ul li {
margin: 0;
padding: 15px 10px 15px 10px;
position: relative;
float: left;
}
#jquery-dropdown ul li a {
display: block;
text-decoration: none;
font-weight: bold;
font-size: 13px;
color: #707070;
outline: none;
}
#jquery-dropdown ul li ul {
position: absolute;
left: -10px;
top: 46px;
display: none;
background: #f4f4f4;
border: 1px solid #e1e1e1;
border-top: none;
z-index: 1000;
padding: 5px 0;
-moz-box-shadow: 1px 2px 3px #a4a4a4;
-webkit-box-shadow: 1px 2px 3px #a4a4a4;
box-shadow: 1px 2px 3px #a4a4a4;
}
#jquery-dropdown ul li ul li {
margin: 0;
padding: 0;
float: none;
position: relative;
z-index: 1000;
}
#jquery-dropdown ul li ul li a {
width: 180px;
padding: 10px;
z-index: 1000;
}
#jquery-dropdown ul li ul li a:hover {
background: #e0e0e0;
}
To get around this we use the z-index property of CSS. This property only works on elements that have been positioned, as we have done with each IFrame, in that it has been placed within an absolutely positioned HTML div element. Z-index facilitates the display order (or 'stack' order) of elements on a page.
Use the w3-right class to float the dropdown to the right, and use CSS to position the dropdown content (right:0 will make the dropdown menu go from right to left).
A dropdown menu is a toggleable menu that allows the user to choose one value from a predefined list.
The <select> element is used to create a drop-down list. The <select> element is most often used in a form, to collect user input. The name attribute is needed to reference the form data after the form is submitted (if you omit the name attribute, no data from the drop-down list will be submitted).
If you want to keep using the iframe
method of embedding Youtube vids, you can simply set the WMODE via query variable ?wmode=transparent
. Here's an example:
<iframe width="580" height="435" src="http://www.youtube.com/embed/fCH7B9m4A4M" frameborder="0" allowfullscreen></iframe>
Would become:
<iframe width="580" height="435" src="http://www.youtube.com/embed/fCH7B9m4A4M?wmode=transparent" frameborder="0" allowfullscreen></iframe>
Remember to check Youtube URL for any query variables already present. If there already is ?something...
change ?wmode=transparent
to &wmode=transparent
and tack it on the end.
I would use the embedding of the youtube video using the <object>
tag and not Iframe. Then, I would use the <param name="wmode" value="transparent">
inside the <object>
. Something like this:
<object width="640" height="385"><param name="wmode" value="transparent"></param><param name="movie" value="http://www.youtube.com/v/Q5im0Ssyyus?fs=1&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Q5im0Ssyyus?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
Here is some more info
If ?wmode=transparent doesn't work, try switching to opaque instead. That worked in my case.
Sample:
(function ($) {
$ = jQuery;
$(function () {
$video = $("#SomeWrapper> iframe");
$srcVal = $video.attr('src');
appendedVal = $srcVal + "?wmode=opaque";
$video.attr('src',appendedVal);
});
})(jQuery);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With