من در وبلاگم منوهایی دارم که با بردن نشانگر ماوس بر آنها تصویرشان تغییر میکند. رایج است که این منوها را با JavaScript و با کمک رویداد OnMouseOver انجام بدهند. روش کار با JavaScript چندان دشوار نیست. کافی است برای Elementی که میخواهیم تصویر آن تغییر کند، یک ID منحصر به فرد مثل imgHome درست کنیم و بعد در رویدار OnMouseOver با کمک توابع DOM این Element مورد نظرمان را پیدا کنم و دست آخر هم ویژگی background-image آن را عوض کنیم. از لحاظ فنی کار چندان سختی نیست ولی زمانبر است و کمی هم شلوغ است و نیاز به JavaScript هم دارد.
همین کار را خیلی سادهتر و بدون به کارگیری حتی یک خط JavaScript و تنها و تنها با کمک CSS میشود انجام داد. روش کار خیلی ساده است. نخست لازم است تا تصویر حالت اول و تصویر حالت دومتان را به هم بچسبانید و هر دو کنار هم کار کنید:

حالا در HTML صفحهتان لینکهایتون رو به این شکل تعریف کنید:
1 <div id="menu">
2 <ul>
3 <li id="home"><a href="/"></a></li>
4 <li id="projects"><a href="/projects"></a></li>
5 <li id="tutorials"><a href="/tutorials"></a></li>
6 <li id="about"><a href="/about"></a></li>
7 <li id="contact"><a href="/contact"></a></li>
8 </ul>
9 </div>
حالا برای تک تک منوهایی که برایشان ID تعریف کردهایم باید در CSSتان کدهای مشابه زیر را بنویسید:
1 #menu #home a {
2 background:url(images/itm-home.png);
3 width:38px; height:30px;
4 display:block;
5 }
6
7 #menu #home a:hover {
8 background:url(images/itm-home.png) 0 -30px;
9 }
مهمترین بخش این ترفند همان -30px است که در ویژگی background مربوط به a:hover میبینید. خیلی ساده است. ما ویژگی top این image را منفی 30 دادهایم تا تصویر ما 30 پیکسل به سمت بالا کشیده بشود و تصویر دوم ما نشان داده بشود.
حجم کدهای مورد نیاز برای این کار خیلی خیلی کمتر از کدی است که باید برای این مسئله در JavaScript بنویسید و تازه خیلی هم تر و تمیزتر است و بدون نگرانی از ناهماهنگیهای JavaScript در مرورگرهای مختلف میتوانید مطمئن باشید که این CSSها در همه مرورگرهای رایج بدون هیچ مشکلی کار میکنند.
آخرین دیدگاهها
6 روز 13 ساعت پیش
6 روز 23 ساعت پیش
1 هفته 2 ساعت پیش
1 هفته 6 ساعت پیش
2 هفته 6 روز پیش
3 هفته 3 روز پیش
3 هفته 3 روز پیش
3 هفته 4 روز پیش
3 هفته 4 روز پیش
3 هفته 4 روز پیش