Масштабирование всего тела при изменении размера окна
Я хотел бы создать веб-сайт, который не реагирует, но если окна будут изменены, все будет масштабироваться вверх/вниз и сохранить одинаковое соотношение. Не имеет значения, слишком ли маленькие слова на маленьком экране, первым приоритетом является предотвращение перекрытия элемента при изменении размера
Я попытался использовать:
<meta id="meta" name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
и
<script type="text/javascript">
$(document).ready(function () {
$(window).resize(function () {
calculateNewScale();
});
calculateNewScale(); // if the user go to the page and his window is less than 1920px
function calculateNewScale() {
var percentageOn1 = $(window).width() / 1920);
$("body").css({
"-moz-transform": "scale(" + percentageOn1 + ")",
"-webkit-transform": "scale(" + percentageOn1 + ")",
"transform": "scale(" + percentageOn1 + ")"
});
}
});
А также с CSS
body {
width:100vw;
height:100vh;
}
Веб-сайт находится здесь:
kotechweb.com/new_focus/page/about_us
Проблема заключается в том, что прямо сейчас содержимое перекрывается при изменении размера.
Ответы
Ответ 1
Порт представления: <meta name="viewport" content="width=device-width, initial-scale=1">
. Это заставит браузер отображать ширину страницы по ширине собственного экрана.
В этой статье содержится дополнительная информация о метатегах viewport:
https://developer.mozilla.org/en/docs/Mozilla/Mobile/Viewport_meta_tag
Ответ 2
< meta id = "meta" name= "viewport" content = "width = device-width; initial-scale = 1.0; maximum-scale = 1.0; user-scaleable = 0;" >
работает только при загрузке окна без изменения размера
Функция calculateNewScale() просто пытается изменить размер тела
Размер шрифта установлен в px - измените их на% или rem
Я знаю, что вы не хотите, чтобы сайт реагировал, но настройка мультимедийных запросов CSS может помочь с тем, что вы хотите.
Ответ 3
вы можете использовать для ответа
1.width = единица ширины устройства задает ширину страницы, чтобы следовать ширине экрана устройства (которая будет меняться в зависимости от устройства).
2.initial-scale = 1.0 part устанавливает начальный уровень масштабирования, когда страница сначала загружается браузером.
например meta name= "viewport" content = "width = device-width, initial-scale = 1.0"
некоторые дополнительные правила:
1. НЕ используйте большие фиксированные элементы ширины
2. НЕ разрешайте содержимому полагаться на определенную ширину окна просмотра, чтобы хорошо отображать
3. Используйте мультимедийные запросы CSS для применения различных стилей для небольших и больших экранов.
также вы можете использовать свойство media и применять скринсейвер css.
Ответ 4
Тэг viewport неправильный, должен быть <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
Но возможно <meta name="viewport" content="user-scalable=no" />
будет работать.
Ответ 5
Есть несколько вещей, которые вы можете сделать:
1. измените свой макет HTML. Поместите изображение, содержимое и нижний колонтитул в контейнер или обертку, например
<html>
<head></head>
<body>
<div id="wrapper">
//everything goess inside here
</div>
</body>
</html>
-
используйте rem/em вместо px. Вы не использовали rem/em/vw последовательно. Значение, для левой границы вы использовали 50 пикселей. И будет время, когда это вызовет сдвиг слов.
-
ваш тег включает загрузку. Если вы используете bootstrap..., то вам лучше использовать BootStrap Grid. Сначала я бы создал страницу для мобильного просмотра, а затем я буду использовать тот же макет для большего экрана.
удачи.
Ответ 6
Если вы используете bootstrap, вы можете просто изменить класс контейнера на class= "container-fluid"
Ответ 7
Используя чистое преобразование: scale (x), вы столкнетесь с множеством проблем с разметкой, центрированием и позиционированием, если только вы не компенсируете некоторой логикой JavaScript.
Некоторые вещи CSS, которые вы можете сделать:
1) Вы можете сделать основной фоновой масштаб на основе ширины браузера, применяя
body {
background-size: cover;
background-repeat: no-repeat;
}
2) Вы можете сделать все единицы измерения на основе единиц vw похожими на это:
Масштабирование шрифтов на основе ширины контейнера
например, если вы хотите, чтобы ваши шрифты масштабировались пропорционально вашей ширине, вы можете установить
body {
font-size: 0.835vw; //around 14px at 1920px
}
Еще один пример: если вы хотите, чтобы контейнер размером 300px с шириной 1920px для масштабирования по ширине, вы можете сделать этот контейнер
.container {
height: 150vw; //around 300px at 1920px
}
Предположительно, вы не пытаетесь сохранить нижний колонтитул внизу на всех размерах? В противном случае вы можете просто использовать позицию: fixed; на нижнем колонтитуле.
Кроме того, если вы сохраняете фиксированное соотношение сторон, у вас будет очень смешной интервал, если высота браузера выше ширины. Вы уверены, что это то, что вы хотите?
Имейте в виду, что это очень странный способ изменения размера контента, что может привести к проблемам производительности и доступности (что вам известно). Большинство людей рекомендуют использовать метатег для устройств или реагировать на ваши элементы.