Arkiv för kategori ‘nybörjare’

Background opacity med Mootools

onsdag, 27 maj, 2009

När man skall göra lite roliga onmouseover effekter är det alltid roligt att att jobba med opacitet. Och varför inte använda Mootools för att sköte effekterna? Problemet är att från och till att man vill inte dra ner opaciteten på texten för att det då blir svårläst. Istället kan man lägga en div med en bakgrundsbild som man sätter opacitet på genom mouseenter och mouseleave funktionerna. Effekten kan göras väldigt påtaglig och koden är extremt liten jämfört med att ladda flera bilder representerar de olika stegen. Med lite utveckling av koden kan ju olika stadier i knapptryckningen ha olika effekter, men det får bli ett annat inlägg.

här är ett exempel:

Test av knappeffekter

Här kommer JavaScript koden:

$$('.startButton').addEvents({
       mouseenter: function(){
           $(this.getElement('.startButtonBackground')).morph({
       		'opacity': [1]
       	   });
       },
       mouseleave: function(){
           $(this.getElement('.startButtonBackground')).morph({
       		'opacity': [0.5]
       	   });
        }
});
$$('.startButtonBackground').each(function(el) {
   el.set('opacity','.5');
});

Mouseenter och Mouseleave för att hantera muspekarevent med mootools

torsdag, 16 april, 2009

Vi visade ett menyscript för några veckor sedan och nu kommer lite mootools kod som på ett mycket enkelt vis hanterar onmouseover. Det bygger på addEvents på ett objekt. Som vi har satt det nu så hämtar det ju alla objket med classnamnet ”Gaos”. Men självklart kan du få detta att peka på id eller kanske ul li taggar. Sen använder vi funktionerna ‘mouseenter’ och ‘mouseleave’ och så förändrar vi hur detta objekts class definition görs. Så när musen kommer över objektet läggs först ett mellanslag och sedan classdefinitionen over på. Samma sak tas givetvis bort när musen inte längre är på objektet.

$$('.Gaos').addEvents({
	'mouseenter': function(){
		this.className += " over";
	},
	'mouseleave': function(){
		this.className = this.className.replace(" over", "");
	}
});

På detta vis kan ju css defineras för att sköta förändringen t.ex. om objekten ligger i en div som har id ”page” skulle man kunna göra såhär:

#page .over{border:1px solid red}

Nu är detta ett inlägg som vänder sig till nybörjare och det är väl på tiden att vi visar lite kod som inte behöver göras något med innan den används, så här kommer koden den kompletta koden för att göra följande om du bara har pekat in mootoolsbiblioteket:

var Site = {
	start : function () {
	    window.addEvent('domready', function() {
		    $$('.Gaos').addEvents({
				'mouseenter': function(){
					this.className += " over";
				},
				'mouseleave': function(){
					this.className = this.className.replace(" over", "");
				}
		    });
	    });
	}
}
window.addEvent('load', Site.start);

Ta bort prickad linje runt länkar i firefox med outline

tisdag, 7 april, 2009

Majoriteten av användare på internet använder Internet Explorer. Det är i sig synd om dessa användare och i förlängningen en synd för internetutvecklingen. Men det finns punkter som ie är bra på.. Hur jobbigt tycker du inte det är när du har länkar som innan sidorna laddas får en prickad ram runt sig. Och när du på senare tid börjat använda ajax så är denna ram kvar tills användaren klickar på nästa länk.

Men det finns ett enkelt sätt att slippa detta, css deklarationen ”outline:0″ löser effektivt problemet. Du sätter den enklast på a:active classen. Och ofta räcker det, i någon version av Firefox behövs det dock en liten deklaration till. Det gäller deklarationen ”-moz-outline-style:none” och detta görs enklast i a:focus.

Totalt blir css deklarationen såhär:

a:active{outline: none;}
a:focus{-moz-outline-style: none;}

Hoppas nu att ni slipper dessa (antagligen de mest hatade prickarna i världen).

Google-optimerade bildlänkar

måndag, 16 mars, 2009

Att göra snygga menyobjekt är ofta lite krångligt om man vill ha med Google-optimeringen ner i sidstrukturen. Dessutom brukar bildmenyer leda till extremt många request från servern. Om menyobjekten skall innefattas av 3 olika bilder: link, hover och active och det dessutom finns 6 menyobjekt leder detta till 18 förfrågningar mot servern vilket är onödigt och blir slött.

För att slippa det mesta av dessa problem har vi löst det lite annorlunda. Vi utgår från en bild där vi placerar in alla menyobjekts olika faser och sedan använder vi css för att aligna bakgrunderna i de olika faserna. Vi har lagt upp ett exempel på www.meny.welcom.se dock har vi inte gjort mootools funktionen för att aktivera funktionern i IE6. Men alla normala webbläsare klarar av att hantera menyn med bara css. Mootools funktionen som gör detta kommer publiceras snarg här på bloggen.

Css koden för att skapa ett av objekten i menyn ser ut som följande:

li.gaos_top_menu_1 {background-position:0px 0;}
li.gaos_top_menu_1:hover, li.gaos_top_menu_1_over {background-position:0 -23px;}
li.gaos_top_menu_1 a.nav_item, li.gaos_top_menu_1_over a.nav_item {width:90px; height:24px;}
li.gaos_top_menu_1 .menu {left:0; min-width:140px}

För att kunna göra html koden så bra som möjligt så att vi får med indexeringen på texten så lägger vi in en förskjutning på alla <span> som i sin tur ligger innanför länkarna. Förskjutningen görs såhär:

ul#gaos_top_menu a.nav_item span {position:absolute; left:-5000px; width:1px; height:1px; overflow:hidden;}

Resterande kod får ni hämta från meny.welcom.se om ni vill använda den.

Bilden som vi använder i exemplet ser ut såhär: (bilden är 8k)
här skall bakgrundsbilden ligga
Dock använder vi denna på en site som är tvåspråkig så det är därför vi har fler rader med i den.

Table är bra, men inte till allt!

söndag, 8 mars, 2009

<table> är en fantastisk html tag som är extremt bra på att hantera just tabeller. Problemet med taggen är att taggen fungerar lite för bra, detta har gjort att många använder den för att åstadkomma andra effekter. Ni som känner er slagna av anklagelsen skall veta att felaktigt användande av table  ofta genererar andra problem. T.ex.

-Sidor vars design är kodad med tables ofta väldiga problem när det kommer till att skrivas ut.
-Tables är långsamma och genererar mängder av html kod.
-CSS stödet från tabeller är krångligt och generar ännu mer kod.

Och till alla er som inte tror att det går att centrera en sida utan tables. DET GÅR..! För er som inte tror mig gällande det sista påståendet kommer här koden för att göra det..

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<title>Text i mitten</title>
</head>
<body style=”margin:0px; padding:0px;background-color:red; text-align:center;”>
<div id=”page” style=”width:300px; height:300px;text-align:left; margin:0px auto; background-color:white;”>Text i mitten fast vänsterjusterat.</div>
</body>
</html>

En liten utläggning till krävs i detta kapitel.. Ni som håller på med emailutskick i html kan glömma allt jag skrivit här.. Satt för ett par veckor sedan och skulle formatera lite html för lotus notes.. det var inte helt enkelt. Nästa gång jag gör något liknande kommer det upp här på bloggen!