Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.12.2012, 16:31
Аватар для Vdomah
Интересующийся
Отправить личное сообщение для Vdomah Посмотреть профиль Найти все сообщения от Vdomah
 
Регистрация: 30.12.2012
Сообщений: 29

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

закомментил - ничего не поменялось

Последний раз редактировалось Vdomah, 30.12.2012 в 16:37.
Ответить с цитированием
  #12 (permalink)  
Старый 30.12.2012, 16:44
Аватар для Vdomah
Интересующийся
Отправить личное сообщение для Vdomah Посмотреть профиль Найти все сообщения от Vdomah
 
Регистрация: 30.12.2012
Сообщений: 29

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');
	}
}

Типа того.
Цитата:
А может всётаки сравнивать размеры нужно приходящего изображения ,после его полного получения.
Это да, а то сейчас правильный размер ставится только после второго нажатия по thumb.
Ответить с цитированием
  #13 (permalink)  
Старый 30.12.2012, 16:46
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Vdomah
не знаю зачем Вы мне эти ссылки кинули, но я допер в чем проблема. Просто надо при задании параметров
Сообщение от Vdomah
удалять заданный ранее, а то получается квадрат. спасибо всем за помощь!
странно -у вас вышло? я удивлён
Сообщение от dmitriymar
-не нужно высоту или ширину предварительно задавать у тега вообще.
а в этих ссылках разве нет как работают атрибуты ширина и высота?
а по ссылкам нужно всётаки ознакомиться

Сообщение от Vdomah
но я допер в чем проблема.
Не доперли вы в чём проблема . Вобще ни капли не доперли

Сообщение от Vdomah
Это да, а то сейчас правильный размер ставится только после второго нажатия по thumb.
это типо одолжение?
а изображения нужно готовить на сервере , при их загрузке на сервер

Последний раз редактировалось dmitriymar, 30.12.2012 в 16:55.
Ответить с цитированием
  #14 (permalink)  
Старый 30.12.2012, 17:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

if(Math.round(largeImg.height)/Math.round(largeImg.width) > 550/550) {largeImg.height='550px';largeImg.width="auto"}

Последний раз редактировалось Deff, 30.12.2012 в 17:12.
Ответить с цитированием
  #15 (permalink)  
Старый 30.12.2012, 17:41
Аватар для Vdomah
Интересующийся
Отправить личное сообщение для Vdomah Посмотреть профиль Найти все сообщения от Vdomah
 
Регистрация: 30.12.2012
Сообщений: 29

Сообщение от Vdomah Посмотреть сообщение
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');
	}
}



Это да, а то сейчас правильный размер ставится только после второго нажатия по thumb.
dmitriymar, никакого сарказма. Вы здесь правильную идею дали. Надо было просто строчку
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');
	}
}

И все красиво.
Ответить с цитированием
  #16 (permalink)  
Старый 30.12.2012, 17:59
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Vdomah
поставить после загрузки изображения, т.е.
largeImg.src = href;
это не загрузка изображения -это указание адреса изображения.
и "работает" это только потому что изображения закешировались.
а при полной загрузке изображения возникает событие onload
Ответить с цитированием
  #17 (permalink)  
Старый 30.12.2012, 18:36
Аватар для Vdomah
Интересующийся
Отправить личное сообщение для Vdomah Посмотреть профиль Найти все сообщения от Vdomah
 
Регистрация: 30.12.2012
Сообщений: 29

По-моему, для этого галерее изначально была эта функция:
/* предзагрузка */
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 правильно сделать?
Ответить с цитированием
  #18 (permalink)  
Старый 30.12.2012, 18:47
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

img.src = url;
img.onload=function(){alert('загрузилось')}
alert('меняем размеры')

Сообщение от Vdomah
Я бы остановился, но просто интересно как надо бы с onload правильно сделать?
а вообще для подобного есть гугл. а скрипт -на свалку-без вариантов

Последний раз редактировалось dmitriymar, 30.12.2012 в 19:12.
Ответить с цитированием
  #19 (permalink)  
Старый 30.12.2012, 19:42
Аватар для Vdomah
Интересующийся
Отправить личное сообщение для Vdomah Посмотреть профиль Найти все сообщения от Vdomah
 
Регистрация: 30.12.2012
Сообщений: 29

как onload работает я знаю. интересовала конкретная реализация.
последний совет конечно ок. только заработало - на свалку. а предложения по делу...
Ответить с цитированием
  #20 (permalink)  
Старый 30.12.2012, 20:31
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Vdomah
Нашел аналог getimagesize для js: http://www.rsdn.ru/forum/web/987244.1
аналог то говно, размер он не покажет если браузер не успел загрузить картинку.

Вот так нужно примерно:
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]);
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
resize изображения OklickSpb Общие вопросы Javascript 2 01.10.2012 13:51
Drag&Drop and resize wawandas Элементы интерфейса 0 05.08.2012 14:59
Расчет реальных размеров изображения в галерее Vision Элементы интерфейса 7 10.07.2012 21:56
DropDown menu в части изображения Hardip Элементы интерфейса 1 20.04.2012 00:20
карта увеличенного изображения Luna82 Элементы интерфейса 11 15.06.2011 10:17