ugrás a tartalomhoz

Szöveg buborék hiba

rob66 · 2012. Jún. 13. (Sze), 10.21
Sziasztok!

Van egy weboldalam, ahol, ha az egérrel rámutatunk egy képre, megjelenik egy szüveges buborék.
Több kép is van egymás mellett.

Az a problémám, hogy ha egy képhez tartozó buborék átnyúlik a következő kép fölé is, akkor ez a következő kép kitakarja a buborékot.
Ha az előző kép fölé nyúlik át, akkor nem jelenkezik ez a probléma.

.colorTip{
	/* This class is assigned to the color tip span by jQuery */
	
	display:none;
	position:absolute;	
	left:50%;
	top:-90px;  	padding:6px;
	
	background-color:white;
	font-family:Arial,Helvetica,sans-serif;
	font-size:11px;
	font-style:normal;
	line-height:1;
	text-decoration:none;
	text-align:center;
	text-shadow:0 0 1px white;
	white-space:nowrap;
	
	-moz-border-radius:4px;
	-webkit-border-radius:4px;
	border-radius:4px;
}

.pointyTip,.pointyTipShadow{
	/* Setting a thick transparent border on a 0x0 div to create a triangle */
	border:6px solid transparent;
	bottom:-12px;
	height:0;
	left:50%;
	margin-left:-6px;
	position:absolute;
	width:0;
}

.pointyTipShadow{
	/* The shadow tip is 1px larger, so it acts as a border to the tip */
	border-width:7px;
	bottom:-14px;
	margin-left:-7px;
}

.colorTipContainer{
	position:relative;
	text-decoration:none !important;
}


/* 6 Available Color Themes */

.white .pointyTip{ border-top-color:white;}
.white .pointyTipShadow{ border-top-color:#ddd;}
.white .colorTip{
	background-color:white;
	border:1px solid #DDDDDD;
	color:#555555;
}

(function($){
	$.fn.colorTip = function(settings){

		var defaultSettings = {
			color		: 'yellow',
			timeout		: 500
		}
		
		var supportedColors = ['red','green','blue','white','yellow','black'];
		
		/* Combining the default settings object with the supplied one */
		settings = $.extend(defaultSettings,settings);

		/*
		*	Looping through all the elements and returning them afterwards.
		*	This will add chainability to the plugin.
		*/
		
		return this.each(function(){

			var elem = $(this);
			
			// If the title attribute is empty, continue with the next element
			if(!elem.attr('title')) return true;
			
			// Creating new eventScheduler and Tip objects for this element.
			// (See the class definition at the bottom).
			
			var scheduleEvent = new eventScheduler();
			var tip = new Tip(elem.attr('title'));

			// Adding the tooltip markup to the element and
			// applying a special class:
			
			elem.append(tip.generate()).addClass('colorTipContainer');

			// Checking to see whether a supported color has been
			// set as a classname on the element.
			
			var hasClass = false;
			for(var i=0;i<supportedColors.length;i++)
			{
				if(elem.hasClass(supportedColors[i])){
					hasClass = true;
					break;
				}
			}
			
			// If it has been set, it will override the default color
			
			if(!hasClass){
				elem.addClass(settings.color);
			}
			
			// On mouseenter, show the tip, on mouseleave set the
			// tip to be hidden in half a second.
			
			elem.hover(function(){

				tip.show();
				
				// If the user moves away and hovers over the tip again,
				// clear the previously set event:
				
				scheduleEvent.clear();

			},function(){

				// Schedule event actualy sets a timeout (as you can
				// see from the class definition below).
				
				scheduleEvent.set(function(){
					tip.hide();
				},settings.timeout);

			});
			
			// Removing the title attribute, so the regular OS titles are
			// not shown along with the tooltips.
			
			elem.removeAttr('title');
		});
		
	}


	/*
	/	Event Scheduler Class Definition
	*/

	function eventScheduler(){}
	
	eventScheduler.prototype = {
		set	: function (func,timeout){

			// The set method takes a function and a time period (ms) as
			// parameters, and sets a timeout

			this.timer = setTimeout(func,timeout);
		},
		clear: function(){
			
			// The clear method clears the timeout
			
			clearTimeout(this.timer);
		}
	}


	/*
	/	Tip Class Definition
	*/

	function Tip(txt){
		this.content = txt;
		this.shown = false;
	}
	
	Tip.prototype = {
		generate: function(){
			
			// The generate method returns either a previously generated element
			// stored in the tip variable, or generates it and saves it in tip for
			// later use, after which returns it.
			
			return this.tip || (this.tip = $('<span class="colorTip">'+this.content+
											 '<span class="pointyTipShadow"></span><span class="pointyTip"></span></span>'));
		},
		show: function(){
			if(this.shown) return;
			
			// Center the tip and start a fadeIn animation
			this.tip.css('margin-left',-this.tip.outerWidth()/2).fadeIn('fast');
			this.shown = true;
		},
		hide: function(){
			this.tip.fadeOut();
			this.shown = false;
		}
	}
	
})(jQuery);

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="elemek/colortip-1.0/colortip-1.0-jquery.css"/>
<title>buborék</title>  
</head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="elemek/colortip-1.0/colortip-1.0-jquery.js"></script>
<script type="text/javascript" src="elemek/script.js"></script>
<body>
<A class="red" title="121212121212121212221221212" href="albumscontent.php">
<img src="elemek/0.jpg">
</A>
<A class="red" title="1222121212121212121221212121" href="albumscontent.php">
<img src="elemek/0.jpg">
</A>
<A class="red" title="12121212121212121212121212121" href="albumscontent.php">
<img src="elemek/0.jpg">
</A>
</body>
</html>
 
1

Első körben érdemes a

Hidvégi Gábor · 2012. Jún. 13. (Sze), 10.35
Első körben érdemes a z-indexekkel játszani, bár ez valószínűleg nem fog segíteni. Inkább az lesz a megoldás, hogy a szövegbuborék html kódja a képek után legyen mindenképp, lehetőleg a </body> előtt.
2

Ezt a második, a html -

rob66 · 2012. Jún. 13. (Sze), 10.48
Ezt a második, a html - kóddal kapcsolatos lehetőséget nem igazán értem...
3

Ha van két abszolút

Hidvégi Gábor · 2012. Jún. 13. (Sze), 11.21
Ha van két abszolút pozícionált elem, ami egymásra lóg, és azonos a z-indexük, akkor az lesz fölül, ami a HTML-ben később van. Néha még a z-index sem számít, hiába van az egyiknek nagyobb, mint a másik, ha a másik később van a HTML kódban, akkor az egyik fölé fog kerülni; biztos van emögött valami szabály, de a logikáját nem tudom, annyira nem is érdekel.

A te esetedben a buborék betöltő javascript kódját a </body> elé kéne tenni szerintem, és akkor jó lesz.
4

Sajnos így nem jó. De a

rob66 · 2012. Jún. 13. (Sze), 12.48
Sajnos így nem jó. De a z-index beállításával megoldottam:
z-index:1;

Köszönöm a segítségedet!
5

A z-index fura dolog, nekem

inf · 2012. Jún. 13. (Sze), 12.58
A z-index fura dolog, nekem is most volt egy buboréknál bajom vele. Én a bubit a tartalom mögé akartam betenni, viszont hiába állítottam a tartalomnak 2-es z-index-et a bubinak meg 1-eset, sehogy sem ment be. Érdekes módon -1-es z-index-el meg oda került, ahova akartam. Fura dolgok ezek...
6

Visszatérve a fenti kódra,

rob66 · 2012. Jún. 14. (Cs), 14.44
Visszatérve a fenti kódra, még a buborék szélességét kellene valahogy állítanom, mert jelenleg csak a beírt szöveg hosszától függ.
7

szélesség megadása

asam9 · 2012. Jún. 14. (Cs), 20.06
így próbáltad már?
.colorTip { width: 200px; }
8

Igen, de az csak a buborék

rob66 · 2012. Jún. 15. (P), 08.42
Igen, de az csak a buborék garfikus részét csökkenti, a benne lévő szöveg szélességét nem.
12

Itt a megoldás..

rob66 · 2012. Jún. 26. (K), 09.07
text-shadow:0 0 1px white;
/*white-space:nowrap;*/  
width:200px;
9

Lehet, nem értem

Pepita · 2012. Jún. 20. (Sze), 00.01
Kicsit késve:
Lehet én nem értem eléggé a problémád, de miért nem az <img>-nek van title attribútuma? Szerintem ez megoldaná a gondot.
10

A Netről szedtem le ezt a

rob66 · 2012. Jún. 21. (Cs), 12.45
A Netről szedtem le ezt a szöveges buborék megoldást. Ott így használták. De szerintem a buborék szélességének az állítása, - amit még most sem tudtam megoldani -, ettől független.
11

Döntsd el

Pepita · 2012. Jún. 22. (P), 00.48
Buborékszélességet akarsz, vagy azt, hogy felül maradjon?

Szerintem a szélességbe nem jó belenyúlni, mert ezt a böngészők különbözőképp oldják meg. De mindegyik több sorba tördeli a stringet, ha hosszúnak ítéli. A Júzer viszont azt szokta meg, ahogyan az ő böngészője csinálja, ergo jobb inkább arra törekedni, hogy felül legyen mindig. Legalább próbáld ki amit írtam, aztán meglátod.