Уменьшение изображения при сохранении пропорций?

0

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

HTML

the inline width and height come from wordpress and can luckily be successfully get overwritten by the class definition.
<br/>
<img src="http://artfiles.alphacoders.com/613/61309.jpg" width="4443" height="5555" class="someclass"/>

CSS

.someclass{
  width: 50%;
  height: 50%;
  position: absolute;

}



body {
    background-color: cyan;
}

Есть ли простой способ сделать это в CSS, а если нет, то какой самый чистый способ сделать это с помощью jquery?

  • 0
    Почему изображение абсолютное?
  • 0
    если оно не абсолютное, ширина и высота не будут влиять
Показать ещё 1 комментарий
Теги:

4 ответа

1
Лучший ответ

Чтобы сохранить пропорции, вы должны думать, что ваш процент "из". Это 50% от ближайшего относительно позиционированного родителя... в этом случае окно, так как его нет... (вот почему ваш абсолютный хак, похоже, работает) Выберите ширину или высоту и оставьте другой авто. - основывайте это на своем понимании этого родителя. Возьмите gander в абсолютном и относительном и как они работают вместе.

Является ли это загружаемой в среду медиа-загрузкой? Если это так, вы можете настроить таргетинг следующим образом:

(здесь jsFiddle из следующего)

HTML

<div class="main-content">

  <?php the_content(); ?>

</div>


CSS

.main-content img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 50%;
}

img.special-class { /* or like you have it, with a class - and the CSS above */
    property: value;
}

и вы можете использовать: nth типа, чтобы чередовать поплавки и прочее.


Если вы используете миниатюру... (изображение с изображением) или что-то еще...

Чем я буду использовать обертку вокруг изображения для целей сетчатки (и, как правило, иметь больше контроля) и стиль размера контейнера и установить ваш img следующим образом:


HTML

<div class="image-w">
  <?php the_post_thumbnail( $size, $attr ); ?>
</div>


CSS

.image-w {
    width: 100%;
    max-width: your-size;
}

.image-w img {
  display: block;
  width: 100%;
  height: auto;
} /* this will set all img in .image-w to respond to their parent */
  • 0
    это даже лучше. Не знал трюк с width + max-width . Занимает position: absolute устарела.
  • 0
    Следует отметить, что это не уловка. Это просто правильный способ написания правила (по состоянию на 2014 год в адаптивной среде с несколькими экранами и мягкими изображениями, меняющими размер). Абсолютная вещь - просто случайность в этом случае. :)
1

вы можете удалить height атрибута:

$('.someclass').removeAttr('height');

и в вашем классе css удалите свойство height:

.someclass{
   width: 50%;
   position: absolute;
}

демонстрация

  • 0
    Не забудьте также изменить ширину и высоту элемента изображения в соответствии с размерами изображения.
  • 0
    Высота объявлена на теге изображения, ему понадобится height: auto; удаление свойства высоты сделает высоту всегда 5555 .
Показать ещё 3 комментария
0

Существует четкий встроенный HTML-код, который присваивает ширину в процентах, а затем устанавливает высоту с правильной пропорцией. Попробуйте это...

<img src="http://www.yourwebste/imageurl.jpg" height=65% width= height/width*65%>

Этот пример имеет 65% (дважды), но вы можете изменить это на любой

0

Происходит то, что вы устанавливаете ширину и высоту элемента изображения на 50% от того, что содержит, а не на 50% от его первоначальной ширины и высоты. Вот почему он не пропорционален. Если вы хотите сделать это в чистом css, вы можете попробовать что-то вроде этого:

http://codepen.io/anon/pen/Lzaej

В котором изображение было заменено на div, а затем само изображение, которое мы установили в качестве фона. Используемые мной свойства css, возможно, не поддерживаются в каждом браузере.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню