Как сделать адаптивный квадрат на css
Перейти к содержимому

Как сделать адаптивный квадрат на css

  • автор:

Как сделать адаптивный квадрат на css

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

Основным концептуальным и буквальным строительным блоком наиболее отзывчивых форм CSS является прямоугольник. С точки зрения геометрии прямоугольник является параллелограммом, где каждый угол является прямым углом. Это означает, что как только вы узнаете как сделать отзывчивый прямоугольник CSS, вы автоматически узнаете, как сделать отзывчивый квадрат CSS.

Давайте перейдем к созданию, так как оказалось это не сложно.

Это будет по умолчанию:

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

ZorNet: Создание сайта на uCoz

.zornet_ru_kerdsa <
position: relative;
width: 50%;
overflow: hidden;
background: #2e5fa0;
>
.zornet_ru_kerdsa:before <
content: «»;
display: block;
padding-top: 100%;
>
.adaptberskin <
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
color: #f3efef;
>
.adaptberskin div <
display: table;
width: 100%;
height: 100%;
>
.adaptberskin span <
display: table-cell;
text-align: center;
vertical-align: middle;
color: #fbf7f7;
font-size: 17px;
font-weight: bold;
>

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

Как сделать Резиновый квадрат с контентом?

НО, так не нормально, потому что все работает так же как если бы я указывал раззмеры в vw/vh.

  • Вопрос задан более трёх лет назад
  • 5262 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 3

Amirez

В чем секрет кота Бориса?

будет уменьшаться относительно высоты.

Ответ написан более трёх лет назад
Нравится 2 1 комментарий

Amirez

Можно еще через padding-bottom, так как padding и margin берут значения ширины блока. VW и vh не подлерживаются safari. P.S. давно сюда не заходил

serg160485

Сергей Петроченко @serg160485

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

Ответ написан более трёх лет назад
Нравится 1 5 комментариев
Banny_Boom @Banny_Boom Автор вопроса
с js знаю решение, но не хотелось бы прибегать лишний раз к js)

serg160485

Сергей Петроченко @serg160485

На чистом css не уверен что получится пропорционально изменять блок! только если в него квадраного ребенка вставлять))) типо картинки

Banny_Boom @Banny_Boom Автор вопроса
Сергей Петроченко: тогда это выйдет статичный квадрат :c

serg160485

Сергей Петроченко @serg160485

Даже не знаю что сказать) думаю ничто не пострадает если вы все-таки jquery примените, к блоку нужному jQuery(«.square»).on(«resize»,function() <
ну а тут вычисляйте размеры типо что больше высота или ширина и в зависимости от этого , одно под другое подстраивается
>);

Адаптивные круглые и другие пропорциональные блоки на CSS

Блок считает свободную ширину родительского блока , то есть 25% — 30px(левый и правый внутренние отступы) и устанавливает верхний внутренний отступ padding-top в значение 100% от высчитаной свободной ширины родительского блока , то есть теперь высота блока равна его ширине.

Блоку также установлено свойство position: relative; , чтобы относительно этого блока позиционировался дочерний блок

Далее просто добавляем блок и задаем ему следующие стили, чтобы он занял всю область блока

.aspect-ratio__body

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

Чтобы сделать из квадрата круг, блоку добавляем сделующие стили

.aspect-ratio__body < position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; overflow: hidden; /* скрывает часть контента, которых выходит за пределы круга, в данном примере изображение */ border-radius: 50%; /* устанавливает со всех сторон радиус по половине стороны квадрата и получаем круг */ >

Таким же образом можно сделать адаптивный пропорциональный прямоугольник любого размера

При произвольных размерах прямоугольника очень просто воспользоваться формулой для установки значения padding-top — calc((высота / ширина)*100%) (calc() можно использовать для всех браузеров)

Например, в макете горизонтальный прямоугольник шириной 754px и высотой 312px и нам нужно его пропорционально адаптировать, то блоку устанавливаем

.aspect-ratio__item < padding-top: calc((312/754)*100%); position: relative; >

Если в макете вертикальный прямоугольник шириной 200px и высотой 350px то устанавливаем следующее

.aspect-ratio__item < padding-top: calc((350/200)*100%); position: relative; >

Вёрстка адаптивного квадрата

Author24 — интернет-сервис помощи студентам

Задача лежит в том, чтобы сделать адаптированный квадрат.
ТО есть страница динамическая, может иметь и 500px в ширину может и 1000, как мне сохраняя пропорции сделать квадрат?

Просто обычный квадратный. В динамической форме.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вёрстка адаптивного слайдера
Может быть кто то может поделиться слайдером адаптивным. Высотой 300 а ширина будет в блоке до.

Вёрстка адаптивного меню
Здравствуйте. Делаю (точнее, пытаюсь делать) адаптивный дизайн для сайта. Встала задача сделать.

Вёрстка адаптивного меню
Подскажите пожалуйста, как сделать адаптивное меню такого плана, как на картинке.

Вёрстка адаптивного меню
Всем привет. Ребята, подскажите пожалуйста, как сделать чтобы блок в котором менюшка, увеличивался.

Эксперт JSЭксперт HTML/CSS

3825 / 2675 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4

Лучший ответ

Сообщение было отмечено Fedor92 как решение

Решение

1 2 3 4 5 6 7 8 9 10
html,body,.wrapper{ height: 100%; width:100%; } .block{ display: inline-block; padding-left:10%; padding-bottom:10%; border:1px solid; }
1 2 3
div class="wrapper"> div class="block">/div> /div>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *