Страница 1 из 1

Ширина рисунка

Добавлено: 14 мар 2005, 08:22
shpi0
мне надо вот сделать, чтоб если изображение широкое (шире 480 пикс), то оно подгонялось по ширине, а если оно не шире 480 пикс, то оставалось бы как есть...
я вот написал, но не всегда работает почему-то, с некоторыми картинками идет, с некоторыми - нет... что такое?

попытка 1.

Код: Выделить всё

<a href=# onClick="PictWin=window.open('pict.src','PictWin','toolbar=no,status=no,width=480,height=600,topmargin=0,leftmargin=0');">
<script language=JavaScript>
pict=new Image();
pict.src="nnk.jpg";
if (pict.width >= 480) {
document.write("[img]+pict.src+[/img]");
} else {
document.write("[img]+pict.src+[/img]");
}
</script></a>
не получилось, с некоторыми изображениями работает, с некоторыми - нет.
попытка 2.

Код: Выделить всё

<a href=# onClick="PictWin=window.open('pict.src','PictWin','toolbar=no,status=no,width=480,height=600,topmargin=0,leftmargin=0');">
<script language=JavaScript>
pict=new Image();
pict.src="nnk.jpg";
if (pict.width >> 480 || pict.width >=480) {
document.write("[img]+pict.src+[/img]");
} else {
document.write("[img]+pict.src+[/img]");
}
</script></a>
аналогично.
попытка 3.

Код: Выделить всё

<a href=# onClick="PictWin=window.open('nnk.jpg','PictWin','toolbar=no,status=no,width=480,height=600,topmargin=0,leftmargin=0');">
<script language=JavaScript>
pict=new Image();
pict.src="nnk.jpg";
if (pict.width >> 480) {
document.write("[img]+pict.src+[/img]");
} else {
if (pict.width >= 480) {
document.write("[img]+pict.src+[/img]");
} else
document.write("[img]+pict.src+[/img]");
}
</script></a>

помогите плиз

З.Ы. просто ">" тоже пробовал ставить - работает не со всеми изображениями... :(

Добавлено: 15 мар 2005, 15:25
UUU
-Петька, приборы!
-Пятьдесят, Василь Иванович!
-Чего Пятьдесят?
-А чего приборы?

Что такое 480? Килограммы, метры, пиксели. Попробуй через стили style="width:480px"
Это раз. Два. Ширина картинки появляется у картинки только после загрузки картинки (нащши поезда...). Чую, что когда ты картинку проверяешь на ширину, она еще не загружена и ее ширина равна нулю. Повесь присвоение ширины на событие onLoad картинки.

Добавлено: 17 мар 2005, 15:27
shpi0
shpi0 писал(а):мне надо вот сделать, чтоб если изображение широкое (шире 480 пикс), то оно подгонялось по ширине, а если оно не шире 480 пикс, то оставалось бы как есть...
явно пикс - это не килограммы, метры и т.п., а именно пиксели...

З.Ы. Я не знаю яваскрипт настолько, чтоб повесить присвоение ширины на onLoad... можете написать пример?

Добавлено: 17 мар 2005, 15:56
shpi0
Набросал вот тут, и опять проблемка... :) )

Код: Выделить всё

<a href=# onClick="PictWin=window.open('<:FILENAME:>','PictWin','toolbar=no,status=no,width=<:WIDTH:>,height=<:HEIGHT:>,topmargin=0,leftmargin=0');">
<script language=JavaScript>
function chsize() {
pict=new Image();
pict.src="nnk.jpg";
if (pict.width > 480) {
document.write("<img src=nnk.jpg width=480 border=0>");
}
}
</script>
<img src=nnk.jpg onLoad="chsize();" border=0>
</a>
оно как загрузит рисунок, убирает весь документ и оставляет один рисунок (от всей страницы остается только код, который вот тут:
document.write("<img src=nnk.jpg width=480 border=0>");
и все...как это поправить можно? ))

Добавлено: 17 мар 2005, 21:03
Oscar

Код: Выделить всё

<script language=JavaScript>
function chsize(img_tag) {
pict=new Image();
pict.src=img_tag.src;
if (pict.width > 480)  img_tag.width=480;
}
</script> 
<img src=nnk(width400).jpg onLoad="chsize(this);" border=0> 


<img src=nnk(width500).jpg onLoad="chsize(this);" border=0> 
мне когда-то уже многоуважаемый Админ этого форума обьяснял, что если использовать document.write после того, как документ был загружен - можно получить весьма неожиданные результаты.

Добавлено: 18 мар 2005, 08:42
UUU
Дополнительные данные в тело документа лучше, имхо, вставлять через InnerHTML. В данном случае ничего не запортится. Касательно данной задачи. Помню, лавно экспериментировал и выяснил, что ширина рисунка появляется не только после загрузки, а еще и после отображения документа (если она не задана первоначально). Т.е. эксперименты с загрузкой рисунка в невидимый слой, высчитывание размеров и потом делание слой видимым результатов не принесли.
Если есть возможность делать серверные скрипты, то, самый лучший вариант, размер рисунка вычислить на стороне сервераЮ и в ШТМЛ передать уже готовые (правильные) размеры. (это работает, если рисунки - у тебя на сервере).

Добавлено: 18 мар 2005, 09:28
shpi0
спасибо, теперь все работает :)