не знаю зачем Вы мне эти ссылки кинули, но я допер в чем проблема. Просто надо при задании параметров
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, время: 18:47. |