- doctor Brain
- Изображение фиксированного размера
- Изображение нефиксированного размера
- Заключение
- Полезно прочитать
- Новые публикации
- JavaScript: сохраняем страницу в pdf
- HTML: Полезные примеры
- CSS: Ускоряем загрузку страницы
- JavaScript: 5 странностей
- JavaScript: конструктор сортировщиков
- Категории
- О нас
- Делаем все фотографии квадратными через css
- Ответы (6)
- Как «обрезать» прямоугольное изображение в квадрат с помощью CSS?
- Вот демонстрация вышеуказанной логики.
doctor Brain
В этом очень небольшом обзоре мы изучим, как установить соотношение сторон (пропорции) для изображения, размещаемого на HTML-странице. Для чего это нужно? К примеру, полученные знания будут полезны, если возникает необходимость уместить картинки различных размеров и пропорций в квадратный блок (или любой другой блок с четко определенными размерами и соотношением сторон), не искажая изображения.
Следует понимать, что в данном случае мы будем манипулировать CSS-свойствами, ни одно изображении не пострадает и сохранит свое первозданное состояние.
Изображение фиксированного размера
Если на страницу нужно вывести картинку заранее определенных размеров, можно воспользоваться атрибутами width и height .
Так как мы не знаем размеры и пропорции исходного изображения, применим CSS-свойство object-fit . Таким образом, мы сможем быть уверены, что картинка не деформируется.
Результат можно увидеть на нижеприведенной иллюстрации. Заметьте: исходное изображение имеет большую ширину, но оно не подверглось искажениям, вместо этого оно “обрезано” по центру:
Свойство object-fit принимает значения fill , contain , cover , none , scale-down . Подробно информацию можно изучить на сайте MDN.
Изображение нефиксированного размера
Чтобы привести картинку, изменяющую свои размеры вместе с родительским блоком, к определенным пропорциям нужно воспользоваться оберткой. Оборачивающий элемент заставит изображение сохранять определенные пропорции, так как само изображение заполнит всю его площадь.
/* Position child elements relative to this element */ .aspect-ratio-box < position: relative; >/* Create a pseudo element that uses padding-bottom to take up space */ .aspect-ratio-box::after < display: block; content: ''; /* 16:9 aspect ratio */ padding-bottom: 56.25%; >/* Image is positioned absolutely relative to the parent element */ .aspect-ratio-box img < /* Image should match parent box size */ position: absolute; left: 0; top: 0; width: 100%; height: 100%; >
Приблизительно так будет выглядеть результат при соотношении сторон 16:9:
Свойство padding-bottom определяет высоту родительского контейнера, выраженную в процентах от его ширины. Например, при ширине блока 400px результирующая высота составит 56,25% от 400px, то есть около 225px.
Для того, чтобы определить нужное нам значение padding-bottom необходимо разделить высоту на ширину.
Например, при соотношении сторон 16:9, арифмитические манипуляции будут выглядеть так:
Выразим результ в процентах (умножим полученное число на 100):
Заключение
Мы научились выводить на HTML-изображение в различных пропорциях без деформации исходной картинки. Предложенные варианты работы с изображениями фиксированных и нефиксированных охватывают значительную часть стандартных ситуаций, возникающих при верстке.
Полезно прочитать
Новые публикации
JavaScript: сохраняем страницу в pdf
HTML: Полезные примеры
CSS: Ускоряем загрузку страницы
JavaScript: 5 странностей
JavaScript: конструктор сортировщиков
Категории
О нас
Frontend & Backend. Статьи, обзоры, заметки, код, уроки.
© 2021 dr.Brain .
мир глазами веб-разработчика
Делаем все фотографии квадратными через css
Я пытаюсь сделать серию фотографий квадратными. Они могут быть прямоугольными по горизонтали (например, 600 x 400) или по вертикали (400 x 600), но я хочу, чтобы они были 175 x 175 в любом случае. Моя мысль заключалась в том, чтобы установить максимальную высоту или максимальную ширину на меньшей стороне и не допускать переполнения за пределы 175 пикселей на большей стороне. однако у меня с этим проблемы. Возможно ли это с помощью css? Ниже моя попытка, но она все еще дает прямоугольники:
Я не хочу просто делать width=175 height=175, так как это будет выглядеть очень искаженным. Но если немного исказить, то нормально. — person user749798   schedule 22.11.2012
Ответы (6)
Вы можете установить ширину/высоту родительского div, а затем установить для дочернего тега img значение width:100%; высота: авто; Это уменьшит масштаб изображения, чтобы попытаться подогнать родителя с учетом соотношения сторон. Вы также можете установить изображение в качестве фонового изображения в div. Затем, если вы можете использовать css3, вы можете испортить свойство background-size. Его атрибуты: содержат, обложка или заданная высота (50%, 50%) (175 пикселей, 175 пикселей). Вы также можете попробовать отцентрировать изображение с фоновым положением.
Хорошо, я получил это. Не знаю, слишком поздно или что, но я придумал 100% чистый CSS способ создания квадратных миниатюр. Это то, что я пытался найти решение в течение некоторого времени и не повезло. После некоторых экспериментов у меня получилось. Два основных атрибута для использования: ПЕРЕПОЛНЕНИЕ:СКРЫТЫЙ и ШИРИНА/ВЫСОТА:АВТО. Хорошо, вот что делать: Допустим, у вас есть пачка изображений разной формы и размера, какой-то пейзаж, какой-то портрет, но все, разумеется, прямоугольные. Первое, что нужно сделать, это классифицировать ссылки на изображения (миниатюры) по книжной или альбомной ориентации, используя селектор классов. Хорошо, допустим, вы хотите просто создать две миниатюры, чтобы упростить задачу. у вас есть: img1.jpg (портрет) и img2.jpg (пейзаж) Для HTML это будет выглядеть так:
person Community schedule 24.01.2013