не знаю зачем Вы мне эти ссылки кинули, но я допер в чем проблема. Просто надо при задании параметров
if (is.width > is.height) largeImg.width = '500';
else largeImg.height = '500';
удалять заданный ранее, а то получается квадрат. спасибо всем за помощь!
#largeImg {
09 /*width: 500px;*/
10 /* height: 400px;*/
11 display: block;
12 margin: auto;
закомментил - ничего не поменялось |
function showThumbnail(href, title) {
var is = getImageSize( 'largeImg');
largeImg.src = href;
largeImg.alt = title;
if (is.width > is.height) {
largeImg.width = '500';
largeImg.removeAttribute('height');
}
else {
largeImg.height = '500';
largeImg.removeAttribute('width');
}
}
Типа того. Цитата:
|
Цитата:
Цитата:
Цитата:
а по ссылкам нужно всётаки ознакомиться Цитата:
Цитата:
а изображения нужно готовить на сервере , при их загрузке на сервер |
if(Math.round(largeImg.height)/Math.round(largeImg.width) > 550/550) {largeImg.height='550px';largeImg.width="auto"}
|
Цитата:
var is = getImageSize( 'largeImg');поставить после загрузки изображения, т.е. largeImg.src = href;
function showThumbnail(href, title) {
largeImg.src = href;
largeImg.alt = title;
var is = getImageSize( 'largeImg');
if (is.width > is.height) {
largeImg.width = '500';
largeImg.removeAttribute('height');
}
else {
largeImg.height = '500';
largeImg.removeAttribute('width');
}
}
И все красиво. |
Цитата:
и "работает" это только потому что изображения закешировались. а при полной загрузке изображения возникает событие onload |
По-моему, для этого галерее изначально была эта функция:
/* предзагрузка */
var imgs = thumbs.getElementsByTagName('img');
for(var i=0; i<imgs.length; i++) {
var url = imgs[i].parentNode.href;
var img = document.createElement('img');
img.src = url;
}
Удалил кэш - все по прежнему работает. Я бы остановился, но просто интересно как надо бы с onload правильно сделать? |
img.src = url;
img.onload=function(){alert('загрузилось')}
alert('меняем размеры')
Цитата:
|
как onload работает я знаю. интересовала конкретная реализация.
последний совет конечно ок. только заработало - на свалку. а предложения по делу... |
Цитата:
Вот так нужно примерно:
function getImageSize(src, callback) {
var img = new Image();
img.onload = img.onerror = function() {
callback(img.width, img.height);
}
img.src = src;
}
getImageSize('http://javascript.ru/forum/image.php?u=25460&dateline=1356854759', function(w, h){
alert([w, h]);
});
|
| Часовой пояс GMT +3, время: 07:42. |