2010-10-01 6 views
2

Мои сообщения в блоге живут в контейнере шириной 600 пикселей. Когда у меня есть изображение шириной более 600 пикселей, я изменяю его размер с помощью CSS (.post img {max-width: 600px})Обнаружение, когда изображение было изменено в CSS

Я хочу, чтобы пользователи могли нажимать на эти измененные размеры и просмотреть полноразмерную версию в лайтбокс, но для этого Мне нужно обнаружить в Javascript, что изображения были таким образом изменены (так как я не хочу, чтобы изображения в виде лайтбоксов отображались в полноразмерном виде в строке)

ответ

2

Вы можете проверить width свойство регистрирующего изображение элемента, чтобы получить обработанную ширину изображения. Если это 600, изображение, скорее всего, будет сжато. Тем не менее, изображение может первоначально быть ровно 600 пикселей в ширину.

Если браузер поддерживает новое свойство HTML 5 naturalWidth, вы можете получить исходную ширину изображения (в пикселях) и сравнить это со значением clientWidth.

1

Я не верю, что вы можете в том смысле, что говорите как JS собирается прочитать изображение, которое находится в DOM. Однако, что если вы установите max-width в JS:

Просто Psuedocode

onload 
{ 
    if (img.width > 600px) 
    { 
     img.style = max-width: 600px; 
     img.lightbox(); 
    } 
} 
+0

Недостаточный недостаток будет эффектом «прыжка» после загрузки изображений из-за повторной передачи страницы. Не говоря уже о том ужасе, который вы увидите, когда JS отключен/недоступен по той или иной причине (но это происходит не так часто). –

+0

CSS может быть переопределен JS, чтобы обеспечить «изящную деградацию». Также скачок страницы можно было бы сгладить с помощью JS. В конце концов, как плохо @Horace хотят желаемого эффекта. Я лично хотел бы использовать лайтбокс на всех изображениях для более последовательного пользовательского интерфейса. –

Смежные вопросы