Допустим, у вас был веб-сайт, созданный только для мобильных устройств, и вы хотели, чтобы он был хорош для настольных ПК, вы не использовали бы масштаб преобразования, верно? Просто не используйте преобразование для этого. Используйте медиа-запросы и соответственно корректируйте фактический размер элементов. Подобное масштабирование будет портить значения пикселей и вызывать эффект размытия.
Не имеет значения, насколько большой или маленький носитель, с которым вы работаете, принципы адаптивного дизайна работают одинаково. Используйте относительные единицы вместо абсолютных, и это не так сложно.
Если вы используете rem
единицы для размеров шрифта, полей и отступов и т. Д., А также для высоты строк без единиц измерения, они относятся к корневому шрифту. -size (обычно по умолчанию 16px), поэтому, изменяя размер шрифта для элемента html
, они будут масштабироваться пропорционально. Для общей структуры макета вы можете использовать проценты или, что еще лучше, использовать CSS-сетку и fr
единиц .
Изображения потребуют немного больше работы, так как вы должны использовать различные изображения с определенностью. для разных размеров, но для всего остального это делает.
Демонстрация:
body {
margin: 0;
font-family: sans-serif;
line-height: 1.5;
}
p {
margin-top: 0;
margin-bottom: .75rem;
font-size: 1rem;
line-height: 1.5;
}
.main {
display: grid;
grid-template-rows: 7.5rem max-content 1fr;
min-height: 100vh;
}
.header {
display: flex;
justify-content: center;
align-items: center;
background-color: blue;
color: yellow;
}
.header__title {
font-size: 2rem;
line-height: 2.25;
text-transform: uppercase;
}
.navbar {
display: flex;
background: lightblue;
border-top: 0.125rem solid;
border-bottom: 0.125rem solid;
}
.navbar__item {
flex-grow: 1;
padding: .375rem .75rem;
text-align: center;
text-transform: capitalize;
text-decoration: none;
color: black;
font-size: 1.125rem;
line-height: 1.5;
}
.content {
background: silver;
padding: 1.5rem;
}
.content__title {
font-size: 1.125rem;
line-height: 2.25;
margin-top: 0;
margin-bottom: .75rem;
}
<main class="main">
<header class="header">
<h1 class="header__title">Title</h1>
</header>
<nav class="navbar">
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
</nav>
<article class="content">
<h2 class="content__title">Lorem Ipsum</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate at omnis hic, maxime ab iure facilis. Dolore alias veniam nisi doloribus at corrupti sapiente ipsam quo voluptates? Excepturi, mollitia qui!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate at omnis hic, maxime ab iure facilis. Dolore alias veniam nisi doloribus at corrupti sapiente ipsam quo voluptates? Excepturi, mollitia qui!</p>
</article>
</main>
Достаточно просто, верно? Преобразование в rem
- это, в основном, значение в пикселях, деленное на 16 (размер шрифта корня по умолчанию)Теперь, добавив только одну строку, мы можем масштабировать все:
html { font-size: 32px; } /* added just that, doubling the scale (16*2 = 32) */
body {
margin: 0;
font-family: sans-serif;
line-height: 1.5;
}
p {
margin-top: 0;
margin-bottom: .75rem;
font-size: 1rem;
line-height: 1.5;
}
.main {
display: grid;
grid-template-rows: 7.5rem max-content 1fr;
min-height: 100vh;
}
.header {
display: flex;
justify-content: center;
align-items: center;
background-color: blue;
color: yellow;
}
.header__title {
font-size: 2rem;
line-height: 2.25;
text-transform: uppercase;
}
.navbar {
display: flex;
background: lightblue;
border-top: 0.125rem solid;
border-bottom: 0.125rem solid;
}
.navbar__item {
flex-grow: 1;
padding: .375rem .75rem;
text-align: center;
text-transform: capitalize;
text-decoration: none;
color: black;
font-size: 1.125rem;
line-height: 1.5;
}
.content {
background: silver;
padding: 1.5rem;
}
.content__title {
font-size: 1.125rem;
line-height: 2.25;
margin-top: 0;
margin-bottom: .75rem;
}
<main class="main">
<header class="header">
<h1 class="header__title">Title</h1>
</header>
<nav class="navbar">
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
<a href="#" class="navbar__item">item</a>
</nav>
<article class="content">
<h2 class="content__title">Lorem Ipsum</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate at omnis hic, maxime ab iure facilis. Dolore alias veniam nisi doloribus at corrupti sapiente ipsam quo voluptates? Excepturi, mollitia qui!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cupiditate at omnis hic, maxime ab iure facilis. Dolore alias veniam nisi doloribus at corrupti sapiente ipsam quo voluptates? Excepturi, mollitia qui!</p>
</article>
</main>
Редактировать : Хорошо, я вижу это сейчас - после обсуждения комментариев. Если ваше оборудование выполняет масштабирование, а не браузер, я думаю, вам не повезло. Но вместо этого должна быть возможность настроить мониторы так, чтобы они расширяли друг друга по горизонтали, что сделало бы правильный холст 7680x1080, который вы могли бы обнаружить с помощью медиа-запроса с соотношением сторон 64: 9. Большинство ОС будет иметь эту опцию (исключая такие вещи, как Windows Starter). Ubuntu - это бесплатный вариант, который, например, есть в наличии. Я просто предположил, что это то, что вы имели, так как обычно это самый простой способ.