Подтвердить что ты не робот

Указание ширины и высоты в процентах без искажений пропорций фото в HTML

Мне было интересно, если в атрибутах width и height я могу указать ширину и высоту в процентах?

Ну, я думаю, это очевидно, потому что, когда я пытаюсь сделать это, он изменяется, но, похоже, он искажает качество моего изображения.

Вот пример моей разметки с фиксированными атрибутами:

<img src="#" width="346" height="413">

Теперь, пытаясь уменьшить масштаб, скажем, наполовину, через проценты:

<img src="#" width="50%" height="50%">

Я получаю нечто совершенно иное, чем:

<img src="#" width="173" height="206.5">

Я думаю, что я просто принципиально ошибаюсь в своей процентной разметке или чем-то, потому что есть визуальная разница между моим вторым и третьим примерами.

UPDATE: Привет всем за все полезные сообщения!

Мне действительно нравится предложение jQuery, сделанное Пэт только потому, что с помощью одного фрагмента, как он предложил, я могу на самом деле изменить селектор и сделать его применимым ко всем моим изображениям, затронутым fancybox, например:

$('img.FancyBox').each(function(){
  $(this).width($(this).width() * 0.25);
});

Как это здорово!

Вы можете проверить живой эффект здесь на моем сайте: http://www.marioplanet.com/product.htm

Это работает очень хорошо, учитывая тот факт, что как только я подключу его к моей базе данных SQL Server, я могу просто применить этот один фрагмент jQuery ко всем изображениям класса FancyBox на моих страницах продукта.

Спасибо, ребята!

4b9b3361

Ответ 1

Эти процентные ширины в вашем втором примере фактически применяются к контейнеру, в котором находится ваш <img>, а не фактический размер изображения. Скажем, у вас есть следующая разметка:

<div style="width: 1000px; height: 600px;">
    <img src="#" width="50%" height="50%">
</div>

Полученное изображение будет иметь ширину 500 пикселей и высоту 300 пикселей.

jQuery Изменить размер

Если вы пытаетесь уменьшить изображение до 50% его ширины, вы можете сделать это с помощью фрагмента jQuery:

$( "img" ).each( function() {
    var $img = $( this );
    $img.width( $img.width() * .5 );
});

Просто убедитесь, что вы сначала снимаете атрибуты height/width = 50%.

Ответ 2

Вы можете установить один или другой (только не оба), и он должен получить желаемый результат.

<img src="#" height="50%">

Ответ 3

Вот разница:

Устанавливает изображение на половину его первоначального размера.

<img src="#" width="173" height="206.5">

Это устанавливает изображение в половину доступной области презентации.

<img src="#" width="50%" height="50%">

Например, если вы поместите это как единственный элемент на странице, он попытается занять до 50% ширины страницы, что сделает ее потенциально более крупной, чем ее первоначальный размер, а не половину ее первоначального размера, вы ожидаете.

Если он отображается с размером более оригинального размера, изображение будет сильно пикселированным.

Ответ 4

width = "50%" и height = "50%" устанавливает атрибуты width и height для половины ширины и высоты родительского элемента, если я не ошибаюсь. Кроме того, установка ширины или высоты должна устанавливать ширину или высоту в процентах от родительского элемента, если вы используете проценты.

Ответ 5

Учитывая отсутствие информации об исходном размере изображения, задание процентов по ширине и высоте приведет к очень неустойчивым результатам. Если вы пытаетесь обеспечить, чтобы изображение соответствовало определенному местоположению на вашей странице, вам нужно будет использовать код на стороне сервера для управления этим масштабированием.

Ответ 6

От W3Schools

Высота в процентах содержащего элемента (например, "20%" ).

Итак, я думаю, что они означают элемент, в котором находится div?

Ответ 7

Попробуйте использовать свойство scale в css3:

75% оригинала:

-moz-transform:scale(0.75);
-webkit-transform:scale(0.75);
transform:scale(0.75);

50% оригинала:

-moz-transform:scale(0.5);
-webkit-transform:scale(0.5);
transform:scale(0.5);

Ответ 8

На самом деле есть способ сделать это только с помощью html. Просто устанавливает:

<img src="#" width height="50%">