Открих съвсем прост начин за зареждане на картинка при RollOver събитие. По стандартната схема имаме две картинки, една в активно състояние и една в пасивно. При минаване с курсора над активната картинка искаме да се показва пасивната. Това е свързано с известно забавяне, понеже пасивната картинка не е заредена в браузъра, и в зависимост от скоростта на връзката се получава пауза, която разваля ефекта. Освен при RollOver събитие, тази картинка трябва да отбелязва избраната страница. Идеята е, пасивната картинка да се зареди първа, а след това върху нея активната.
Това е примерно меню с три връзки. В HTML-а пишем:
<div id="side_menu">
<ul>
<li id="about">
<span>About</span>
</li><li id="links">
<a href="links/"><span>Links</span></a>
</li><li id="contact">
<a href="contact/"><span>Conact</span></a>
</li>
</ul>
</div>
В CSS-а имаме:
#side_menu ul {
padding: 0;
margin: 0;
list-style: none;
}
#side_menu a {
display: block;
width: 140px;
height: 24px;
border: none;
}
#m01 a {
background: url(img/side_m01.gif) no-repeat;
}
#m02 a {
background: url(img/side_m02.gif) no-repeat;
}
#m03 a {
background: url(img/side_m03.gif) no-repeat;
}
#m01 a:hover {
background: url(img/side_m01-on.gif) no-repeat;
}
#m02 a:hover {
background: url(img/side_m02-on.gif) no-repeat;
}
#m03 a:hover {
background: url(img/side_m03-on.gif) no-repeat;
}
#m01 {
background: url(img/side_m01-on.gif) no-repeat;
}
#m02 {
background: url(img/side_m02-on.gif) no-repeat;
}
#m03 {
background: url(img/side_m03-on.gif) no-repeat;
}
#side_menu span {
display: none;
}
CSS-ът не е съвсем оптимизиран, понеже се получава малко досадно повторение за #m0x и #m0x a:hover. Резултатът може да се види тук. Неудобството е, че примера не работи, ако на LI се зададе display: inline. Ни най-малко не претендирам аз да съм открил това решение. Положителното в случая е, че стигнах до него сам.
Хаха, много готино…
Преди време гледах подобна идея, но на “li” елемента за background е присвоена една картинка. Тази картинка представлява двете състояния на бутона заедно - един под друг. При “а” позицията на background за “li” елемента e “no-repeat 0 0” (т.е. първото състояние на бутона), a при “a:hover” - “no-repeat 0 -50” (второто състояние, като -50 е в зависимост от големината на изместването).
готино е, на howbizarre решението ми се струва също логично…
а наче можеш да сбиеш cssто така -
#m01, #m01 a {background: url(img/side_m01.gif) no-repeat;}
#m02, #m02 a {background: url(img/side_m02.gif) no-repeat;}
#m03, #m03 a {background: url(img/side_m03.gif) no-repeat;}
#m01 a:hover {background: url(img/side_m01-on.gif) no-repeat;}
#m02 a:hover {background: url(img/side_m02-on.gif) no-repeat;}
#m03 a:hover {background: url(img/side_m03-on.gif) no-repeat;}
друг е въпроса, че при check for newer… every visit to the page в IE става едно хипер гадно премигване…