[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Плавный сдвиг картинки при наведении
razoramus
Сначала код покажу потом расскажу..


<a href="#">
<div
class="a1">
<div
class="a2"></div>
</div>
</a>



Блок а1 размером 300х200, background которого это картинка. В блоке а2 тоже на background'е полупрозрачная картинка шириной в 2 раза больше то есть 600х200 спозицианирована right top, как сделать чтобы при наведении картинка плавно смещалась влево, то есть у блока а2 у background'а картинка позицианировалась как left top, по плавно(анимационно). Подскажите как. Желательно бы пример с коментами, чтоб по понятней было на будущее.

UPD Появилась новая идея, думаю куда проще будет её реализовать. теперь прото блок a1 с картинкой на бэкграунде. Как сделать чтобы он затемнялся плавно, ну то есть при наведении как бы плёнкой чёрной полупрозрачной накрывало



Спустя 10 минут, 51 секунда (6.04.2012 - 20:37) nugle написал(а):
ты чето путаешь, 1 блок не может быть меньше дочернего

Спустя 59 секунд (6.04.2012 - 20:38) Игорь_Vasinsky написал(а):
animate() with Jquery

Спустя 16 минут, 10 секунд (6.04.2012 - 20:54) razoramus написал(а):
Цитата (razoramus @ 6.04.2012 - 17:26)
ты чето путаешь, 1 блок не может быть меньше дочернего

Имеется ввиду что а2 тоже 300 но картинка 600 и спозицианирована right top.

------
Тему обновил

Спустя 6 минут, 41 секунда (6.04.2012 - 21:01) Игорь_Vasinsky написал(а):

Спустя 1 минута, 44 секунды (6.04.2012 - 21:02) nugle написал(а):
razoramus
за прозрачность отвечает свойство opacity, если черной пленкой, то поверх вешай черный блок и св-во opacity

Спустя 50 секунд (6.04.2012 - 21:03) bodja написал(а):
//вешаем событие "наведение мыши" на 1 елемент див с классом а2
//и вызываем функцию funLeft();

document.getElementsByClassName('a2')[0].onmouseover=function(){
funLeft();
}
//здесь начальное значение,переменная глобальна.
var left=0;
//замкнутая функция на себя с помощью setTimeout ,вызывается через каждые 20мс
//пока left не достигнет 600,
//значение left с шагом в 5 также заносится в style.backgroundPosition.

function funLeft() {
left+=5;
document.getElementsByClassName('a2')[0].style.backgroundPosition = left+'px 0px';
if (left<600){setTimeout(funLeft,20);}
}


Вот и все ,скрипт не проверял ,но по идее должен работать.
Вешать событие только после инициализации нужного елемента в ДОМ.
или так.
<div class="a2" onMouseOver="funLeft()"></div>

Спустя 11 минут, 8 секунд (6.04.2012 - 21:14) bodja написал(а):
Цитата
Появилась новая идея, думаю куда проще будет её реализовать. теперь прото блок a1 с картинкой на бэкграунде. Как сделать чтобы он затемнялся плавно, ну то есть при наведении как бы плёнкой чёрной полупрозрачной накрывало


Да вам не угодиш,а реализовать будет на самом деле немного сложнее. wink.gif

Спустя 8 минут, 11 секунд (6.04.2012 - 21:23) razoramus написал(а):
Цитата (bodja @ 6.04.2012 - 18:03)
Да вам не угодиш,а реализовать будет на самом деле немного сложнее.

laugh.gif Я просто не успел обновить до вашего ответа. А почему сложнее, мне казалось что наоборот проще. При наведении надо чтоб затемнялась картинка. вроди правильно высказал.

Спустя 22 минуты, 29 секунд (6.04.2012 - 21:45) bodja написал(а):
У стилей нет свойства затемнения ,тем более для картинки фона,значит нужно накладывать еще один див с черным фоном и работать через style.opacity
ИЕ opacity непонимает поэтому прийдется для него сделать вот так
style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+opac+')';

где opac это значение прозрачности от 0 до 100,
так же стоит помнить что для остальных браузеров максимальное значение прозрачности это 1
значит делаем так
style.opacity=opac/100;


все это заворачиваете в цикл и пользуетесь,я думаю уже расписывать нет нужды.

Спустя 15 минут, 7 секунд (6.04.2012 - 22:00) razoramus написал(а):
Накидал..

<a href="#">
<div
class="img">
<div
class="shadow"></div>
</div>
</a>



.img {
width:300px;
height:200px;
background:url(./132.png) left top no-repeat;
}

.shadow {
width:300px;
height:200px;
background:#000;
opacity:0;
}

.shadow:hover {
opacity:0.8;
}


А куда style.opacity=opac/100; впихнуть? Вроди правильно накидал.. И как сделать плавно? Просто в JS не знаю. Руки ещё не дошли

Спустя 11 минут, 46 секунд (6.04.2012 - 22:12) bodja написал(а):
Цитата
А куда style.opacity=opac/100; впихнуть?

В скрипт ;)
На следующий подобный вопрос ,пошлю учить маны.

<div class="shadow" onMouseOver="funOpac()"></div>

var opac=0;
function funOpac() {
opac+=1;
document.getElementsByClassName('shadow')[0].style.opacity= opac/100;
if (opac<50){setTimeout(funOpac,20);}
}

Спустя 5 минут, 59 секунд (6.04.2012 - 22:18) razoramus написал(а):
Цитата (bodja @ 6.04.2012 - 19:12)
Цитата
А куда style.opacity=opac/100; впихнуть?

В скрипт ;)
На следующий подобный вопрос ,пошлю учить маны.

<div class="shadow" onMouseOver="funOpac()"></div>

var opac=0;
function funOpac() {
opac+=1;
document.getElementsByClassName('shadow')[0].style.opacity= opac/100;
if (opac<50){setTimeout(funOpac,20);}
}

Это чтобы в IE работало?
А анимацию как сделать?

Спустя 8 минут, 26 секунд (6.04.2012 - 22:26) Игорь_Vasinsky написал(а):
анимация

if (opac<50){setTimeout(funOpac,20);}

Спустя 13 минут, 52 секунды (6.04.2012 - 22:40) razoramus написал(а):
Решил сделать так, сделать в фотошопе полупрозрачную картинку чёрного цвета под размер и в бэкграунд прописал, потом порыскал про плавное исменение прозрачности любого эллемента на JQ, в обще вот код, подправил под себя и всё робит, мало ли кому пригодиться. Проверял в IE7+ Всё ок


//jQuery прозрачность любого элемента
$(document).ready(function(){
$('.shadow').each(function(){
$(this).animate({opacity:'0.0'},1);
$(this).mouseover(function(){
$(this).stop().animate({opacity:'1.0'},300);
});
$(this).mouseout(function(){
$(this).stop().animate({opacity:'0.0'},300);
});
});
});




Всем спасибо

Спустя 2 часа, 52 минуты, 54 секунды (7.04.2012 - 01:33) sebastjan написал(а):
Прозрачность по разному поддерживают броузеры, ИЕ имеет фильтры другие через opacity: если не изменяет память.
На мой взгляд легче применить БГ фон ПНГ с прозрачностью и кросброузерностью и ЯваСкрипт.
Хотя и первое и второе на мой взгляд это отглосы прошлых эпох.
Что то затемнить чтоб что то показать, ну и бесят эти закорючки многих.
Фишка не понятная юзеру.
Сколько не спрашивал юзеров, ни кто вразумительного ответа не дал, хорошо или плохо.
А значит хреново......

Спустя 1 час, 8 минут, 32 секунды (7.04.2012 - 02:42) bodja написал(а):
Кто людям помогааааает,тот тратит время зря... (Шапокляк). biggrin.gif biggrin.gif biggrin.gif

Спустя 34 минуты, 35 секунд (7.04.2012 - 03:16) razoramus написал(а):
Цитата (sebastjan @ 6.04.2012 - 22:33)
Прозрачность по разному поддерживают броузеры, ИЕ имеет фильтры другие через opacity: если не изменяет память.
На мой взгляд легче применить БГ фон ПНГ с прозрачностью и кросброузерностью и ЯваСкрипт.
Хотя и первое и второе на мой взгляд это отглосы прошлых эпох.
Что то затемнить чтоб что то показать, ну и бесят эти закорючки многих.
Фишка не понятная юзеру.
Сколько не спрашивал юзеров, ни кто вразумительного ответа не дал, хорошо или плохо.
А значит хреново......

На данный момент у меня бало жедание сделать затенение не просто мнгновенным, а приятно смотрящееся плавное затемнение. Первый раз такой "фигнёй" занимался. Обычно просто поставил и не марочишься, кому какая разнича как у меня кнопка/ссылка подсвечивается, главное контент и информация в нём чтобы была полезна пользователю. А тут это я делаю сайт-портфолио, и ну как то чтобы смотрелось вот..

Спустя 3 часа, 9 минут, 19 секунд (7.04.2012 - 06:26) I++ написал(а):
Этот код использует обычную смену позиции div? или канвасы рисует? Если див двигает, это будет лагать на нетбуках возможно.

Спустя 5 часов, 56 минут, 14 секунд (7.04.2012 - 12:22) sebastjan написал(а):
razoramus
Ниже скзали про смену позиций див.
Я бы уточнил, берш три дива с разной прозрачностьюПНГ фоном, естественно прикручиваешь заглушку ЦСС чтоб в ИЕ работала прозрачность.
Дивы анимируешь яваскрипт, пару строчек всего.
И будет у тебя плавное затемнение.


Спустя 5 часов, 14 минут, 29 секунд (7.04.2012 - 17:36) razoramus написал(а):
I++
В head цепанул библиотеку jq и применил вышеуказанный код. Он меняет прозрачность блока shadow с 0 до 0.5(в моём случае). у меня на бэкграунде блока img стоит картинка и в shadow так же(только чёрная). Думаю смысл понятен. Проверят в ie начиная с 7го, вроди всё норм, за исключением курсора, при наведении он остаётся стрелкой а не pointer. Меня это как то не задевает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.