Вопрос или проблема
Вопрос новичка: Я пытаюсь сделать так, чтобы мои кнопки (т.е. .audiobutton) на странице index.html масштабировались по ширине и высоте (но сохраняли соотношение сторон) в зависимости от размера экрана. В данный момент кнопки (которые также являются изображениями) остаются одного и того же размера вне зависимости от размера экрана или его ориентации. Я также пытаюсь сохранить положение моих кнопок таким же независимо от размера экрана. Мой текущий код в styles.css выглядит следующим образом:
body {
background-image: url("Renders/Room2.png");
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
min-height: 100vh;
width: auto;
}
header {
width: 100%;
height: 100%;
position: relative;
}
:root {
--scale: 100; /* Определите желаемое значение шкалы */
--button-scale: 100; /* Определите желаемое значение шкалы кнопки */
--button-scale2: 100; /* Определите желаемое значение шкалы кнопки2 */
--vh: 1vh;
--wh: 1vw;
}
.buttons1 {
margin-left: auto;
margin-right: auto;
/* min-height: 100%; */
/* width: 50%; */
position: fixed;
top: 15rem;
min-height: calc(var(--vh) * 40);
width: calc(var(--vw) * 30);
aspect-ratio: 16/9;
}
.buttons2 {
display: inline-grid;
grid-template-columns: 1fr 1fr;
margin-left: auto;
margin-right: auto;
/* min-height: 100%;
width: 50%; */
position: fixed;
top: 15rem;
left: 40rem;
min-height: calc(var(--vh) * 40);
width: calc(var(--vw) * 30);
aspect-ratio: 16/9;
}
.audiobutton {
appearance: none;
border: none;
height: 40%;
width: 25%;
position: absolute;
left: 5rem;
z-index: 1;
}
.audiobutton:hover {
background-image: url(Renders/0001.png);
z-index: 2;
}
.photobutton {
appearance: none;
border: none;
height: 40%;
width: 25%;
position: absolute;
left: 22rem;
padding-right: 6rem;
z-index: 3;
}
.photobutton:hover {
background-image: url(Renders/0002.png);
z-index: 3;
}
.blenderbutton {
appearance: none;
border: none;
height: 40%;
width: 25%;
position: relative;
left: 14rem;
z-index: 4;
}
.blenderbutton:hover {
background-image: url(Renders/0003.png);
z-index: 4;
}
.videobutton {
appearance: none;
border: none;
height: 40%;
width: 25%;
position: absolute;
left: 34rem;
z-index: 2;
}
.videobutton:hover {
background-image: url(Renders/0004.png);
z-index: 3;
}
Я хотел бы, чтобы веб-страница была как можно более отзывчивой к размеру и ориентации экрана, и я пытался найти решение, но без особого успеха. Я также хотел бы, чтобы горизонтальная ширина окна переставала уменьшаться при 800px. Я новичок в миксинах и Bootstrap, но не знаю, помогут ли они с этим или это правильный способ добиться желаемого. Я добавил их в свою папку проекта, чтобы иметь возможность использовать их, если это будет необходимо.
Спасибо заранее.
Ответ или решение
Масштабирование размеров кнопок в синхронизации с размерами экрана на вашем веб-сайте
В данном ответе мы рассмотрим, как сделать кнопки на вашем веб-сайте адаптивными, чтобы они изменяли свои размеры в зависимости от размера экрана, сохраняя при этом соотношение сторон. Мы также обеспечим правильное позиционирование кнопок, независимо от разрешения экрана.
Основные проблемы
- Фиксированные размеры кнопок: Ваша текущая реализация устанавливает фиксированные размеры для кнопок, что приводит к проблемам с адаптивностью.
- Неправильное позиционирование: Использование фиксированных позиционирований в сочетании с относительными единицами может вызывать проблемы на разных экранах.
- Невозможность ограничить минимальную ширину экрана: Вы хотите, чтобы ширина окна не уменьшалась ниже 800 пикселей.
Решение
Для решения этих проблем необходимо внести некоторые изменения в ваш CSS-код и применить подход, ориентированный на адаптивность.
Шаг 1: Понимание единиц измерения
Вы используете vh
и vw
для определения размеров. Это хороший подход, однако вам стоит использовать их более эффективно. Вместо фиксированных размеров лучше использовать относительные единицы, такие как rem
и em
, что доверяет браузеру самостоятельно управлять масштабированием.
Шаг 2: Изменение CSS для адаптации кнопок
:root {
--button-size: 10vw; /* Базовый размер кнопки в vw */
}
.audiobutton,
.photobutton,
.blenderbutton,
.videobutton {
appearance: none;
border: none;
aspect-ratio: 16 / 9; /* Сохраняем соотношение сторон */
width: var(--button-size); /* Используем переменную для ширины */
height: auto; /* Высота будет автоматически подстраиваться */
position: absolute; /* Позиционирование для каждой кнопки */
z-index: 1;
}
.audiobutton {
left: 5rem; /* Устанавливаем позицию */
}
.photobutton {
left: 22rem; /* Устанавливаем позицию */
}
.blenderbutton {
left: 14rem; /* Устанавливаем позицию */
}
.videobutton {
left: 34rem; /* Устанавливаем позицию */
}
Шаг 3: Запрет сокращения ширины экрана
Для ограничения минимальной ширины окна до 800px вы можете добавить следующий код в ваш CSS:
body {
min-width: 800px; /* Запрет на уменьшение ширины окна меньше 800 пикселей */
overflow-x: hidden; /* Скрываем лишний контент по оси X, если экран меньше 800px */
}
Шаг 4: Использование медиа-запросов
Если вы хотите, чтобы ваше приложение выглядело по-разному на разных экранах, вы также можете использовать медиа-запросы:
@media (max-width: 800px) {
:root {
--button-size: 30vw; /* Увеличиваем размер кнопок для меньших экранов */
}
}
Дополнительные рекомендации
-
Использование Flexbox или Grid: Рассмотрите возможность использования Flexbox или CSS Grid для более точного контроля над размещением и адаптивностью кнопок. Это позволит вам лучше управлять адаптацией по высоте и ширине в зависимости от контента.
-
Подключение Bootstrap: Если вы решили использовать Bootstrap, обратите внимание на классы
d-flex
иjustify-content-between
, чтобы организовать кнопки в адаптивном макете. -
Тестирование: Регулярно тестируйте ваш веб-сайт на различных устройствах и разрешениях экрана, чтобы убедиться, что он адаптивен и выглядит хорошо на всех платформах.
Заключение
Следуя этим шагам и рекомендациям, вы сможете создать адаптивные кнопки, которые изменяют свои размеры в зависимости от размеров экрана, сохраняют соотношение сторон и правильно позиционируются. Успехов в разработке!