Менюшка. DIV с меняющимся цветом.
Перерыл много интернетов в поисках оптимального способа сделать элементы с меняющимся цветом фона.
Ну и "придумал" свой способ, который легко интегрируется куда угодно, в любой элемент (от div до body).
Итак, меню на DIV'ах с меняющимся фоном. Способ с использованием JavaScript.
описание элемента, к которому будет применяться эффект:
Javascript который ведет обработку:
function cup(obj) {
obj.style.background="#0099FF";
obj.style.color="#FFFFFF";
}
function cdown(obj) {
obj.style.background="white";
obj.style.color="#0099FF";
}
</script>
То есть: при наведении на нужный блок курсора, он вызывает событие cup() которое придаёт фону голубой цвет, а тексту в этом блоке - белый.
при отведении курсора вызывается событие cdown() который возвращает предыдущий цвет фона (в моем случае - белый) и цвет текста.
Для чего делать это жаваскриптом на не чистым CSSом?
Ну во-первых, у меня так и не получилось заставить работать стиль с :hover (кто знает как заставить работать класс с ховером - в пм плз).
А во вторых, это даёт нам возможность по-куралесить... Например так:
Меняем java script:
function cup(obj) {
obj.style.background="#"+randcolor();
obj.style.color="#FFFFFF";
}
function cdown(obj) {
obj.style.background="white";
obj.style.color="#0099FF";
}
function randcolor() {rflags = new Array ('0','1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F');colors='';
for (i=0; i<6; i++){numb=Math.floor(Math.random()*15);colors+=rflags[numb];}return colors;}
</script>
Что получим? Получим абсолютно случайный цвет фона при каждом наведении...
Как это работает??? На примите на рекламу, но я тут начал клепать свой бложик в свободное время... пример такого "случайного" бэкграунда можете посмотреть на нём (блог не рабочий, там тупо вёрстка). не рекламо.
_ttp://kzavr.co.cc
В чем суть последнего скрипта?
Вызывается дополнительная функция, которая случайным образом генерит HEX-код цвета... ИМХО - получилось забавно.
Хинт: Если на body поставить эвент onMouseMove="cup(this);" то можно сделать страничку для уничтожения психически нездоровых людей (очень быстро меняются цвета).
Про :hover тут написано http://www.umade.ru/log/2004/07/css-hover-any-element/
Также почитайте про то, что цвета в CSS можно установить через RGB (rgb(x,x,x)). Тогда функция randcolor() явно станет проще и адекватнее.
А так, в целом, ничего особого)
Объяснюсь...
1. jQuery , я уверен, неплохой инструмент. Я плохой разработчик, т.к. не люблю/боюсь/не умею использовать фреймворки... Быть может я когда-то всё же дойду до того, чтобы изучить jQuery и научиться использовать ВСЕ его прелести... Но согласитесь... Заводить целый комбайн ради одного колоска?... И дело не в весе скрипта... Вы же не пользуетесь огнемётом, чтобы убить муху, ведь достаточно мухобойки. Нет, огнемёт это делает быстрее и эффективнее (так же помогает избавиться от жуков, тараканов, клопов, муравьем и комаров)... Но нужно ли это, когда у нас только мухи?...
Вообще сий опус больше для пытливых умов, из разряда "как сделать забавный эффект, не прибегая к библиотекам".
2. Про RGB в CSS обязательно почитаю... и не нужен будет массив а достаточно будет Math.random()*255 . Действительно поможет избавиться от целой строчки кода )
3. UAS'ь по поводу совета про :hover. Я находил эту статью... Смутило 2 вещи.
В общем, кому пригодится - пользуйтесь на здоровье!
За комментарии тож спасибо...
Ну во-первых, у меня так и не получилось заставить работать стиль с :hover (кто знает как заставить работать класс с ховером - в пм плз).
Если что-то можно сделать на CSS, то это и нужно там делать. hover с классом задаётся также, как и без оного (работать в IE 6 не будет, но это легко обойти тем же JS):
...
<div onmousemove="this.className += '-hovered';" onmouseout="...">...
Рандом сюда конечно не применишь, для этого нужно будет JS. Про rgb() согласен с остальными.
jQuery я бы тоже сюда притягивать не стал (кстати отже не люблю фреймворков).
В данном случае как раз лучше использовать ТОЛЬКО js если есть цель сохранить кроссбраузерность. Плодить лишний код и усложнять обработку лишь для того чтобы сделать "правильно" полнейший идиотизм.
Рандом сюда конечно не применишь, для этого нужно будет JS. Про rgb() согласен с остальными.
jQuery я бы тоже сюда притягивать не стал (кстати отже не люблю фреймворков).
В данном случае действительно не обязательно использовать фреймворки (хотя подобный функционал можно реализовать в качестве плагина и количество кода сурово сократится). Тут можно обойтись и чистым js - есть такой метод addEventListener().
Просто я мыслю в промышленных масштабах, где у меня jQuery только и используется)
Ну, "правильность" сама по себе действительно никому не нужна. Идея была в том, что на CSS это можно сделать одной инструкцией без лишних телодвижений, и это будет работать везде, кроме IE 6 (и без скриптов). А так как последний уже почти отжил, то его сегодня многие игнорируют. Остаётся только CSS.
Посему если юзать CSS+JS получится работоспособный hover в любом браузере даже без включенного JS, и тот же эффект в IE 6 через JS.
Мистико... По поводу IE6... Надо посмотреть какую-то реальную статистику по миру, как много людей всё еще используют IE6
[COLOR="Silver"]Даешь революцию! Которую, правда, гугл уже начал[/COLOR]
Статистика эта зависит от ресурса.
Глобально ~7-8%
Для интернет-магазина может составить 12%
Потому, никаких понтов тут быть не может. Никто в здравом уме, имея магазин, не откажется от 8-12% потенциальных покупателей.
Потому, никаких понтов тут быть не может. Никто в здравом уме, имея магазин, не откажется от 8-12% потенциальных покупателей.
Однако ж не все делают интернет-магазины. Для остальных вещей, которые от юзера ничего не хотят, а наоборот юзер что-то хочет, вроде блогов, сайтов с торрентами и т.д. - для них гораздо проще не писать больше кода и стимулировать посетителей использовать нормальное ПО.
Иначе что ответишь на вопрос "а нафига мне что-то ещё, коли в IE 6 все сайты и так нормально видно"? Действительно, если все будут писать под IE6+остальной_мир (как было не так давно), то юзеру незачем будет что-то предпринимать :)
Закономерный и ожидаемый вывод.
Посему, тема раскрыта, вопросов больше ни у кого нет :)
По поводу IE6, я сам не большой сторонник того, чтобы выбрасывать работающее древнее железо, а IE6 стоит на нем и ничто современное туда не прикрутится.
Еще меня всегда забавляло как люди отказываются от поддержки ИЕ6, которым пользуется по разным данным от 10 до 20% пользователей, но заботятся об оригиналах, которые ходят по сети с отключенным JS. Их итак считаные проценты да и как правило это люди больные на голову паранойей, а такие ничего не будут покупать в онлайн магазинах.
В общем уже пошел флуд. Автор топика уже получил ответ на свой вопрос.
Сидя в lynx вы же понимаете что просмотр видео или к примеру онлайн игры для вас закрыты?
С другой стороны пихать JS везде где только можно тоже глупо. Все хорошо в меру. Но в любом случае не стоит принимать во внимание любителей экзотического серфа - зачем мешать людям заниматься мазохизмом.
Еще меня всегда забавляло как люди отказываются от поддержки ИЕ6, которым пользуется ... до 20% пользователей, но заботятся ... с отключенным JS. Их итак считаные проценты.
Это верно. Однако я не раз встречал другую статистику об отключенном JS - в районе 20%. Недавно даже на форуме тема проскакивала. На своём сайте я тоже вижу статистику с ~18% юзеров без JS. Сам я сижу на FF с NoScript и далеко не я один такой.
А раз пользователей IE 6 будет уменьшаться (хотя бы из-за стараний MS), а юзеров без JS - столько же (а то и увеличиваться) - то с прицелом на будущее лучше писать под вторых, чем под первых :rolleyes:
Хотя как писать, с JS или CSS - больше уже личные предпочтения.
Про ролики и прочие свистелки речи не идет. Просто нужно чтобы меню, тексты и т. п. были доступны без JS. Вот мэйл ру щас на AJAX переползает. Раньше из консольного браузера можно было спокойно забрать почту. Как щас - не знаю. Mail-клиенты давно не юзаю. ^) Как в одном подкасте про облачные выч. недавно сказали, надежнее хранить данные у крупного сервиса, чем у себя дома. В данном случае работает правило у меня. =)
Вообще говоря, меня очень порадовало в свое время, что на W3C появились всякие accesibility guidelines. Про них, по-моему, нельзя забывать (если не ошибаюсь, здоровых людей больше не становится, а число заболеваний связанных со зрением будет расти), а их требования (цвета, сочетания, шрифты и др. более тонкие вещи) могут быть очень созвучны с консольными мазохистами. :)
Это уже чистой воды флейм пошёл :D
Предлагаю остановиться на этом.
Предлагаю остановиться на этом.
Я предлагал остановиться еще страницу назад.
Хотя как писать, с JS или CSS - больше уже личные предпочтения.
Писать надо и под тех, и под других. И не надо сомневаться. Всем за труды воздастся.
Есть смысл (выгода) учесть пользователей IE6? Надо учесть.
Если пишем на js, надо понимать, что пользователи без js не должны об этом узнать.
можно и без js обойтись - использовать A вместо DIV..