imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 25.04.2006, 17:03     # 1
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
Плавное увелечение картинки (HTML, CSS, JavaScript)

Народ вопрос такой: есть сайт __http://studionw.ru/ , на этой страничке:
__http://www.studionw.ru/port/index.htm есть эффект при наведении на миниатюрную картинку она становится немного больше, при этом остальные раздвигаются... На этом сайте это реализовано на флеше, как можно это сделать на связке html, css и javascript, чтобы это не тормозило даже на модеме (ну или не очень сильно тормозило) и эффект был приблизительно такой же.
Спасибо
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  
Старый 25.04.2006, 22:44     # 2
savad
Newbie
 
Регистрация: 16.07.2005
Сообщения: 19

savad Путь к славе только начался
Как один из возможных вариантов:
- таблица, в каждой ячейки по мини-картинки,
- в onload тега body, загрузка соответствующих увеличенных картинок (хотя их можно использовать и как мини, установив соответствующий размер),
- обработка событий картинок onmouseover и onmouseout, где меняем картинки (увеличиваем размер), изменяем размер ячейки, а плавность достигаем путем использования window.setInterval.

Последний раз редактировалось savad; 25.04.2006 в 23:02.
savad вне форума  
Старый 05.05.2006, 18:19     # 3
shurik90
Guest
 
Сообщения: n/a

Проблема в том что во флеше при растягивании изображение не теряет чёткости, т.к. векторное. Здесь же у тебя будет резкая потяря качества при уменьшении/увеличении. Я когда то делал похожее и мне не понравилось, пришлось сделать что при наведении мышки поверх просто показывалась чуть большая картинка.
 
Старый 06.05.2006, 11:40     # 4
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
да можно и одной обойтись

берем картинку 150*150, к примеру
в таблице показываем ее с width/height 75*75, к примеру
на onMouseOver или меняем атрибуты на 150 сразу, или последовательно 75-100-125-150 - получаем иллюзию роста картинки

дешево и сердито
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 06.05.2006, 16:28     # 5
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
Borlase,
Я вот замечал, что браузеры не умеют нормально уменьшать картинки. Во всяком случае для данных параметров не проверял, но для большего коэффицента уменьшения стороны получается просто убожище, по сравнению с тем, если уменьшить в Фотошопе.

От авторав оффлайне было предложение, чтоб загонять 3-4 картинки разных размеров в gif. Но тоже есть свои недостатки в этом способе. Во-первых вручную такие запаришься делать, надо как-то автоматизировать процесс. А во вторых, gif для фоток, помоему, больше весить будет, чем jpeg.
Kvarx вне форума  
Старый 09.05.2006, 17:43     # 6
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Kvarx:
А во вторых, gif для фоток, помоему, больше весить будет, чем jpeg.
Весить-то меньше будет, только ГИФ для фоток, с его 256 цветами... это какие же фотки-то???
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 09.05.2006, 21:03     # 7
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
Hubbitus,

Я имел ввиду, что если полноченно фотку перегнать(не 256 цветов) в ГИФ, то у меня лично ГИФ получался больше так.
Kvarx вне форума  
Старый 09.05.2006, 22:54     # 8
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
по поводу уменьшения... ну, не знаю - я себе быстренько пример сделал, посмотрел - вродь бы приемлемо...

что до размеров - будет больше gif или jpeg - это от картинки зависит. у них разные алгоритмы сжатия, поэтому одна пикча будет больше весить гифкой, другая, наоборот - жпегом. тут нет однозначного ответа.
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 10.05.2006, 10:25     # 9
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Kvarx:
Я имел ввиду, что если полноченно фотку перегнать(не 256 цветов) в ГИФ
То она станет максимум 256 цветов максимум, ограничение ГИФ-формата. ИМХО, для фоток это не приемлемо.


А что касается уменьшения картинок браузерами, опять же ИМХО конечно, но помоему они весьма неплохо с этим справляются, вот, специально попробовал http://ru.bir.ru/imgtest/ Помоему весьма прилично смотрится во всех браузерах, смотрел в 3 основных.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 10.05.2006, 17:25     # 10
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Цитата:
Hubbitus:
256 цветов максимум, ограничение ГИФ-формата
кто ж тебе сказал-то такое? А это что?
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 11.05.2006, 10:22     # 11
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Saruman:
кто ж тебе сказал-то такое? А это что?
Да, выпендрились ребята, действительно интересный эксперимент, весьма любопытно, спасибо.
Но, даже они не рекомендуют это использовать нормально:
Цитата:
While using more than 256 colors in GIF is in most cases a bad practice, and should be limited to certain technical cases where extreme size can be tolerated, a statement that the GIF image file format is limited to 256 colors is simply false.
К тому же сайт библиотеки http://angif.slashusr.org/ недоступен, поэтому я так и не вижу возможности создавать такие ГИФы (а попробовать было бы интересно)
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 11.05.2006, 13:33     # 12
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Цитата:
Hubbitus:
поэтому я так и не вижу возможности создавать такие ГИФы
Ну вот в GIMPе эксперимента ради попробовал - создает без проблем труколорный гиф, полагаю, Photoshop тоже создаст. А не рекомендуют только по причине extreme size, так что в случае небольших картинок, интранета и т.п. - думаю, проблем нет. Формат прописан в спецификации гифа, посему суть стандарт, а не грязный хак.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 11.05.2006, 14:31     # 13
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
Цитата:
Сообщение от Saruman
полагаю, Photoshop тоже создаст.
Да, я пробовал такое делать именно в Photoshop'e

Цитата:
Сообщение от Hubbitus
опять же ИМХО конечно, но помоему они весьма неплохо с этим справляются
С лилиями действительно не плохо смотриться, но я имел дело с фотками, которых люди, и в этом случае мне не понравилось.
Kvarx вне форума  
Старый 11.05.2006, 15:12     # 14
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Saruman:
Ну вот в GIMPе эксперимента ради попробовал - создает без проблем труколорный гиф, полагаю, Photoshop тоже создаст. А не рекомендуют только по причине extreme size, так что в случае небольших картинок, интранета и т.п. - думаю, проблем нет.
Ладно, ладно, сказал же что не знал, не прав, могут быть по стандарту больше - значит могут, я же не спорю! Почему-то всегда считал что ГИФ ограничен 256 цветами...

Ну зато то что я у тебя процитировал дает ответ на другое вполне ясно, что полноцветный ГИФ для фотки будет нааамного больше JPGа.

Цитата:
Kvarx:
С лилиями действительно не плохо смотриться, но я имел дело с фотками, которых люди, и в этом случае мне не понравилось.
Ну нет так нет, я лишь решил попробовать. Много опытов не ставил - взял первую попавшуюся картинку из винды.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 11.05.2006, 16:57     # 15
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
хм, сделал, как было предложено во 2 посту, т.е. через яваскрипт, но никак не могу добится действия функции window.setInterval все ставлю, есть задержка, но потом сразу рисуется большая фотка.... т.е. плавности не добится...
Вот пример сделал (без плавности, но с плавностью было тоже самое) __http://spb0969.ru/test/test.php
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  
Старый 11.05.2006, 18:49     # 16
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
Забирай... для 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.
BorLase вне форума  
Старый 12.05.2006, 12:17     # 17
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Поправочка в догонку

Цитата:
Naked:
хм, сделал, как было предложено во 2 посту, т.е. через яваскрипт, но никак не могу добится действия функции window.setInterval все ставлю, есть задержка, но потом сразу рисуется большая фотка.... т.е. плавности не добится...
Можно добиться, вот примерчик:
Код:
<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>
Посмотреть можно здесь http://ru.bir.ru/imgtest/resizetest.htm

Не буду просто изменять, если кто успел уже посмотреть, посему в догонку исправление, там нужно:
Код:
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. Причина: Исправил для совместимости с ИЕ
Hubbitus вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:23.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.