Автор Тема: Если не работает img:hover в Internet Explorer  (Прочитано 2927 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Если не работает img:hover в Internet Explorer
« : 22 Декабря 2008, 21:46:27 »
Всем известно, что IE не обрабатывает селектор :hover у всех элементов, кроме a (ссылки). Бывают случаи, когда без этого селектора ну никак нельзя - то есть нужно, чтобы при наведении на картинку применялся какой-либо стиль к ней. Как это можно сделать? Очень просто!

Задача
Сделать так, чтобы во всех браузерах при наведении курсора мыши на картинку менялся цвет ее рамки.

Решение
Что нам понадобится:
1. Файл стилей style.css
img{
   border: 1px solid #000; /* Черная рамка толщиной в 1 пиксель */
   padding: 1px; /* Отступ от изображения до рамки */
};

img.bordered {
   border: 1px solid red; /* Красная рамка толщиной в 1 пиксель */
};

2. Сама картинка:
<img src="someimage.jpg" />
3. Код Javascript:
$("img").hover(function(){
$(this).addClass('bordered'); // Добавляем класс
},
function (){
$(this).removeClass('bordered'); // Убираем класс
});

Вот и все. Как видно - ничего сложного нет.
Ссылки по теме:
 - jQuery офф.сайт - http://www.jquery.com
 - Скачать jQuery - http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js
 - Документация - http://docs.jquery.com/

Оффлайн Rex

  • Administrator
  • 7 уровень
  • *****
  • Сообщений: 1811
  • карма: +15/-0
  • Странник
    • Просмотр профиля
    • ВКГУ им. С. Аманжолова
Re: Если не работает img:hover в Internet Explorer
« Ответ #1 : 23 Декабря 2008, 09:17:37 »
Ммм.. Очень интересно.. Сама суть.. Нужно взять твою пилу и поработать с jQuery.. Как с остальными:))

Оффлайн biohazard

  • Кодер
  • 4 уровень
  • ***
  • Сообщений: 308
  • карма: +7/-2
  • work hard - go pro
    • Просмотр профиля
Re: Если не работает img:hover в Internet Explorer
« Ответ #2 : 23 Декабря 2008, 09:25:28 »
Я в такой ситуации обычно оборачиваю img в a, и уже работаю со ссылкой.
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.

Оффлайн Rex

  • Administrator
  • 7 уровень
  • *****
  • Сообщений: 1811
  • карма: +15/-0
  • Странник
    • Просмотр профиля
    • ВКГУ им. С. Аманжолова
Re: Если не работает img:hover в Internet Explorer
« Ответ #3 : 23 Декабря 2008, 09:31:20 »
Я в такой ситуации обычно оборачиваю img в a, и уже работаю со ссылкой.
Мне думается что jQuery примерно так и поступает=) Нужно будет в ней порыться, для обшего развития:))

Оффлайн biohazard

  • Кодер
  • 4 уровень
  • ***
  • Сообщений: 308
  • карма: +7/-2
  • work hard - go pro
    • Просмотр профиля
Re: Если не работает img:hover в Internet Explorer
« Ответ #4 : 23 Декабря 2008, 09:49:09 »
а onmouseover разве не работает?
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.

Оффлайн Rex

  • Administrator
  • 7 уровень
  • *****
  • Сообщений: 1811
  • карма: +15/-0
  • Странник
    • Просмотр профиля
    • ВКГУ им. С. Аманжолова
Re: Если не работает img:hover в Internet Explorer
« Ответ #5 : 23 Декабря 2008, 10:05:57 »
работает.

Оффлайн zema

  • 2 уровень
  • **
  • Сообщений: 67
  • карма: +4/-0
    • Просмотр профиля
Re: Если не работает img:hover в Internet Explorer
« Ответ #6 : 23 Декабря 2008, 23:07:31 »
есть фикс для ие
Цитировать
в html
<!--[if IE 6]><link href="ie.css" rel="stylesheet" type="text/css"><![endif]-->
-----
в цсс
body {behavior:url("csshover.htc");}
-----
вот сам js http://files.north.kz/f/5254/csshover.htc
UPD: намного лучше, меньше кода, а значит быстрее страница загрузится, работает на всех тегах
« Последнее редактирование: 23 Декабря 2008, 23:17:26 от zema »

Оффлайн biohazard

  • Кодер
  • 4 уровень
  • ***
  • Сообщений: 308
  • карма: +7/-2
  • work hard - go pro
    • Просмотр профиля
Re: Если не работает img:hover в Internet Explorer
« Ответ #7 : 24 Декабря 2008, 17:45:10 »
Не понимаю, к чем весь этот онанизм?
onmouseover вроде работает для всех блочных элементов...
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.

Оффлайн DARX

  • Global Moderator
  • 7 уровень
  • *****
  • Сообщений: 1559
  • карма: +23/-5
  • Knowledge is Power
    • Просмотр профиля
    • Web-программист
Re: Если не работает img:hover в Internet Explorer
« Ответ #8 : 24 Декабря 2008, 20:30:36 »
Цитировать
Я в такой ситуации обычно оборачиваю img в a, и уже работаю со ссылкой.
Согласен, с ним проще. Но в моем случае (особенности верстки) hover для ссылок не было решением проблемы.

Цитировать
а onmouseover разве не работает?
Событие прекрасно работает во всех браузерах для всех блочных элементов. В пользу jquery сыграли четыре фактора:
1. Использование во всем проекте. Не хотелось бы отделять "голый" js и jQuery по функциональности.
2. Unobtrusive Javascript. Меня давно не рвет дописывать в верстке "onmouseover='...' onmouseout=''"
3. Как следствие - большой объекм генерируемого кода, так как картинок в среднем 40 на странице.
4. Изящность и простота кода

Цитировать
есть фикс для ие
Согласен, что при отключенном js мое решение работать не будет, а Ваше - будет :)
Но все равно, использование подобных "костылей", имхо, не есть гут.