| imho.ws |
![]() |
|
|
|||||||
|
Сообщения:
Перейти к новому /
Последнее
|
Опции темы |
|
|
# 1 |
|
::VIP::
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Плавное увелечение картинки (HTML, CSS, JavaScript)
Народ вопрос такой: есть сайт __http://studionw.ru/ , на этой страничке:
__http://www.studionw.ru/port/index.htm есть эффект при наведении на миниатюрную картинку она становится немного больше, при этом остальные раздвигаются... На этом сайте это реализовано на флеше, как можно это сделать на связке html, css и javascript, чтобы это не тормозило даже на модеме (ну или не очень сильно тормозило) и эффект был приблизительно такой же. Спасибо
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным. |
|
|
|
|
# 2 |
|
Newbie
Регистрация: 16.07.2005
Сообщения: 19
![]() |
Как один из возможных вариантов:
- таблица, в каждой ячейки по мини-картинки, - в onload тега body, загрузка соответствующих увеличенных картинок (хотя их можно использовать и как мини, установив соответствующий размер), - обработка событий картинок onmouseover и onmouseout, где меняем картинки (увеличиваем размер), изменяем размер ячейки, а плавность достигаем путем использования window.setInterval. Последний раз редактировалось savad; 25.04.2006 в 23:02. |
|
|
|
|
# 3 |
|
Guest
Сообщения: n/a
|
Проблема в том что во флеше при растягивании изображение не теряет чёткости, т.к. векторное. Здесь же у тебя будет резкая потяря качества при уменьшении/увеличении. Я когда то делал похожее и мне не понравилось, пришлось сделать что при наведении мышки поверх просто показывалась чуть большая картинка.
|
|
|
# 4 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
да можно и одной обойтись
![]() берем картинку 150*150, к примеру в таблице показываем ее с width/height 75*75, к примеру на onMouseOver или меняем атрибуты на 150 сразу, или последовательно 75-100-125-150 - получаем иллюзию роста картинки дешево и сердито
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 5 |
|
Member
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336
![]() ![]() |
Borlase,
Я вот замечал, что браузеры не умеют нормально уменьшать картинки. Во всяком случае для данных параметров не проверял, но для большего коэффицента уменьшения стороны получается просто убожище, по сравнению с тем, если уменьшить в Фотошопе. От авторав оффлайне было предложение, чтоб загонять 3-4 картинки разных размеров в gif. Но тоже есть свои недостатки в этом способе. Во-первых вручную такие запаришься делать, надо как-то автоматизировать процесс. А во вторых, gif для фоток, помоему, больше весить будет, чем jpeg. |
|
|
|
|
# 6 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 8 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
по поводу уменьшения... ну, не знаю - я себе быстренько пример сделал, посмотрел - вродь бы приемлемо...
что до размеров - будет больше gif или jpeg - это от картинки зависит. у них разные алгоритмы сжатия, поэтому одна пикча будет больше весить гифкой, другая, наоборот - жпегом. тут нет однозначного ответа.
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 9 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
А что касается уменьшения картинок браузерами, опять же ИМХО конечно, но помоему они весьма неплохо с этим справляются, вот, специально попробовал http://ru.bir.ru/imgtest/ Помоему весьма прилично смотрится во всех браузерах, смотрел в 3 основных.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 10 | |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti |
|
|
|
|
|
# 11 | ||
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Но, даже они не рекомендуют это использовать нормально: Цитата:
(а попробовать было бы интересно)
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
||
|
|
|
|
# 12 | |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti |
|
|
|
|
|
# 13 | ||
|
Member
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336
![]() ![]() |
Цитата:
Цитата:
|
||
|
|
|
|
# 14 | ||
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Ну зато то что я у тебя процитировал дает ответ на другое вполне ясно, что полноцветный ГИФ для фотки будет нааамного больше JPGа. Цитата:
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
||
|
|
|
|
# 15 |
|
::VIP::
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
хм, сделал, как было предложено во 2 посту, т.е. через яваскрипт, но никак не могу добится действия функции window.setInterval
все ставлю, есть задержка, но потом сразу рисуется большая фотка.... т.е. плавности не добится...Вот пример сделал (без плавности, но с плавностью было тоже самое) __http://spb0969.ru/test/test.php
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным. |
|
|
|
|
# 16 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Забирай... для IE работает точно, FF что-то не сильно... но дальше уже сам мучайся
![]() Код HTML:
<html> <head> <script language="JavaScript"> /* * This function will not return until (at least) * the specified number of milliseconds have passed. * It uses a modal dialog. */ function pause(numberMillis) { var dialogScript = 'window.setTimeout(' + ' function () { window.close(); }, ' + numberMillis + ');'; var result = // For IE5. window.showModalDialog( 'javascript:document.writeln(' + '"<script>' + dialogScript + '<' + '/script>")'); /* For NN6, but it requires a trusted script. openDialog( 'javascript:document.writeln(' + '"<script>' + dialogScript + '<' + '/script>"', 'pauseDialog', 'modal=1,width=10,height=10'); */ } function big(a){ a.width=55; pause(100); a.width=60; pause(100); a.width=65; pause(100); a.width=70; } function small (a){ a.width=50; } </script> </head> <body> <table><tbody> <tr> <td> <img src="test.php_files/1.jpg" onmouseover="big(this);" onmouseout="small(this);" border="0" width="50"> </td> <td> <img src="test.php_files/2.jpg" onmouseover="big(this);" onmouseout="small(this);" border="0" width="50"> </td> <td> <img src="test.php_files/4.jpg" onmouseover="big(this);" onmouseout="small(this);" border="0" width="50"> </td> </tr> </tbody></table> </body> </html>
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 17 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Поправочка в догонку
Цитата:
Код:
<script language="JavaScript">
var steep = 1;//По сколько пикселей
var timeout = 10;//Милисекунд, скорость.
function imgResize(obj, reszTo){
if (!window["reszdObj" + obj.name]) robj = window["reszdObj" + obj.name] = obj;
else robj = window["reszdObj" + obj.name];
robj.reszTo = reszTo;
robj.delta = ((obj.width > reszTo)? -steep : steep);
robj.My_reSize = function (objname){
ths = window["reszdObj" + objname];
if ( Math.abs(ths.width - ths.reszTo) > window.steep ){
ths.width += ths.delta;
setTimeout(window["reszdObj" + objname].My_reSize, window.timeout, objname);
}
}
robj.My_reSize(obj.name);
}
</script>
<table>
<tr>
<td><img src="1.jpg" border=0 width=50 name="i1" onMouseOver="imgResize(this, 100);" onMouseOut="imgResize(this, 50);"></td>
<td><img src="2.jpg" border=0 width=50 name="i2" onMouseOver="imgResize(this, 100);" onMouseOut="imgResize(this, 50);"></td>
<td><img src="4.jpg" border=0 width=50 name="i3" onMouseOver="imgResize(this, 100);" onMouseOut="imgResize(this, 50);"></td>
</tr>
</table>
Не буду просто изменять, если кто успел уже посмотреть, посему в догонку исправление, там нужно: Код:
setTimeout(window["reszdObj" + objname].My_reSize, window.timeout, objname); Код:
setTimeout("window.reszdObj" + objname + ".My_reSize('" + objname + "');", window.timeout);
Ну и исправленный вариант в действии http://ru.bir.ru/imgtest/resizetest1.htm
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 12.05.2006 в 13:03. Причина: Исправил для совместимости с ИЕ |
|
|
|