Greetings!
I took some code from this site. It works great in EVERY browser but IE7 where the arrow of the tooltip is missing. I know that there are issues with IE7 not supporting :after in CSS. I've tried adding this code:
<!--[if lt IE 8]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>
<![endif]-->
But it hasn't made a difference. There has to be some type of hack I can add in. I need this tooltip to work in both mobile and IE7 (strange company I work for, ha!). This is my css:
<style type="text/css">
#tooltip {
text-align: center;
color: #fff;
background: #111;
position: absolute;
z-index: 100;
padding: 15px;
}
#tooltip:after /* triangle decoration */ {
width: 0px;
height: 0px;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 10px solid #000000;
content: "";
position: absolute;
left: 50%;
bottom: -10px;
margin-left: -10px;
}
#tooltip.top:after {
border-top-color: transparent;
border-bottom: 10px solid #111;
top: -20px;
bottom: auto;
content: "";
}
#tooltip.left:after {
left: 10px;
margin: 0;
content: "";
}
#tooltip.right:after {
right: 10px;
left: auto;
margin: 0;
content: "";
}
</style>
and this is my javascript
$(document).ready(function () {
var targets = $('[rel=tooltip]'),
target = false,
tooltip = false,
title = false;
targets.bind('mouseover', function()
{
target = $(this);
tip = target.attr('title');
tooltip = $('<div id="tooltip"></div>');
if(!tip || tip === '')
return false;
target.removeAttr('title');
tooltip.css('opacity', 0)
.html(tip)
.appendTo('body');
var init_tooltip = function()
{
if( $(window).width() < tooltip.outerWidth() * 1.5)
tooltip.css('max-width', $(window).width() / 2);
else
tooltip.css('max-width', 340);
var pos_left = target.offset().left + ( target.outerWidth() / 2 ) - ( tooltip.outerWidth() / 2),
pos_top = target.offset().top - tooltip.outerHeight() - 20;
if( pos_left < 0 )
{
pos_left = target.offset().left + target.outerWidth() / 2 - 20;
tooltip.addClass('left');
}
else
tooltip.removeClass('left');
if( pos_left + tooltip.outerWidth() > $(window).width())
{
pos_left = target.offset().left - tooltip.outerWidth() + target.outerWidth() / 2 + 20;
tooltip.addClass('right');
}
else
tooltip.removeClass('right');
if( pos_top < 0 )
{
pos_top = target.offset().top + target.outerHeight();
tooltip.addClass('top');
}
else
tooltip.removeClass('top');
tooltip.css( { left: pos_left, top: pos_top } )
.animate( { top: '+=10', opacity: 1 }, 50);
};
init_tooltip();
$(window).resize(init_tooltip);
var remove_tooltip = function()
{
tooltip.animate( { top: '-=10', opacity: 0 }, 50, function()
{
$( this ).remove();
});
target.attr('title', tip);
};
target.bind('mouseleave', remove_tooltip);
tooltip.bind('click', remove_tooltip);
});
});
Thoughts? I know there is some type of script I can add that somehow tells the object to do the :before/:after thing in the js code, but I can't figure out how to make it work. Something like this:
$(document).ready(function() {
$("#menu li:last").addClass("last");
});
Thanks so much in advance!
Gab