У меня есть этот код, где я пытаюсь уменьшить размер изображения, в зависимости от окружения. Проблема состоит в том, что он уменьшает размеры без ограничений.
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?
Чтобы сохранить пропорции, вы должны думать, что ваш процент "из". Это 50% от ближайшего относительно позиционированного родителя... в этом случае окно, так как его нет... (вот почему ваш абсолютный хак, похоже, работает) Выберите ширину или высоту и оставьте другой авто. - основывайте это на своем понимании этого родителя. Возьмите gander в абсолютном и относительном и как они работают вместе.
Является ли это загружаемой в среду медиа-загрузкой? Если это так, вы можете настроить таргетинг следующим образом:
(здесь jsFiddle из следующего)
<div class="main-content">
<?php the_content(); ?>
</div>
.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 следующим образом:
<div class="image-w">
<?php the_post_thumbnail( $size, $attr ); ?>
</div>
.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 */
width
+ max-width
. Занимает position: absolute
устарела.
вы можете удалить height
атрибута:
$('.someclass').removeAttr('height');
и в вашем классе css удалите свойство height:
.someclass{
width: 50%;
position: absolute;
}
height: auto;
удаление свойства высоты сделает высоту всегда 5555
.
Существует четкий встроенный HTML-код, который присваивает ширину в процентах, а затем устанавливает высоту с правильной пропорцией. Попробуйте это...
<img src="http://www.yourwebste/imageurl.jpg" height=65% width= height/width*65%>
Этот пример имеет 65% (дважды), но вы можете изменить это на любой
Происходит то, что вы устанавливаете ширину и высоту элемента изображения на 50% от того, что содержит, а не на 50% от его первоначальной ширины и высоты. Вот почему он не пропорционален. Если вы хотите сделать это в чистом css, вы можете попробовать что-то вроде этого:
http://codepen.io/anon/pen/Lzaej
В котором изображение было заменено на div, а затем само изображение, которое мы установили в качестве фона. Используемые мной свойства css, возможно, не поддерживаются в каждом браузере.