Jump to content
  • 0

Адаптивная верска и размер шрифта


Kot137
 Share

Question

Пытаюсь спроектировать сайт с адаптивной верской. А именно подгонять размер шрифта под размер экрана, так, чтобы на любом экране в строке было примерно одинаковое кол-во слов/символов.

 Как лучше/правильней/кроссбраузерней это сделать?

Пока я представляю себе это так: в css тегу <html> задаем некий базовый размер шрифта, например 20px, а далее при помощи @media(max-width) назначем размеры шрифта тегу <body>(а остльные будут плясать от родителя в em) в rem. И тут возникают вопросы: 1) Какой размер шрифта в html по умолчанию? Может в зависимости от девайса - там уже все как надо? Или лучше сразу назначать размер тегу html в зависимости от экрана, а CSS всем прописывать в rem?

В сети нашел пример:

html { font-size: 62.5%; } 

Что это значит? 62,5% от чего?

 

И еще одна непонятность: с размером шрифта стратегия хотябы понятна. А как быть с контентом и кнопочками менишечками всякими. Сейчас у среднистатистического смартфона разрешение больше чем у среднистатистического ноута например. Поэтому @media(max-width) не подайдет. По @media handheld - мало информации: судя по документации это свойство срабатывает на каких-то КПК. Как определить на 100% что девайс смарфон?

 

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Пытаюсь спроектировать сайт с адаптивной верской. А именно подгонять размер шрифта под размер экрана, так, чтобы на любом экране в строке было примерно одинаковое кол-во слов/символов.

 Как лучше/правильней/кроссбраузерней это сделать?

Пока я представляю себе это так: в css тегу <html> задаем некий базовый размер шрифта, например 20px, а далее при помощи @media(max-width) назначем размеры шрифта тегу <body>(а остльные будут плясать от родителя в em) в rem. И тут возникают вопросы: 1) Какой размер шрифта в html по умолчанию? Может в зависимости от девайса - там уже все как надо? Или лучше сразу назначать размер тегу html в зависимости от экрана, а CSS всем прописывать в rem?

В сети нашел пример:

html { font-size: 62.5%; } 

Что это значит? 62,5% от чего?

 

И еще одна непонятность: с размером шрифта стратегия хотябы понятна. А как быть с контентом и кнопочками менишечками всякими. Сейчас у среднистатистического смартфона разрешение больше чем у среднистатистического ноута например. Поэтому @media(max-width) не подайдет. По @media handheld - мало информации: судя по документации это свойство срабатывает на каких-то КПК. Как определить на 100% что девайс смарфон?

Сам с этим столкнулся. Пока только верстальщик, но в сети нашёл код на javascript:

<link rel="stylesheet" type="text/css" href="styles/style.css" /> 
<script>
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
var x = document.getElementsByTagName("link");
var i;
for (i = 0; i < x.length; i++) {
x.href="styles/style_for_phone.css";
}
</script>
А вообще для адаптивного дизайна вот такой полный код:
<link rel="stylesheet" type="text/css" href="styles/style.css" /> 
<link media="only screen and (max-width:1650px)" rel="stylesheet" href="styles/style_1650.css" />
<link media="only screen and (max-width:1560px)" rel="stylesheet" href="styles/style_1550.css" />
<link media="only screen and (max-width:1450px)" rel="stylesheet" href="styles/style_1450.css" />
<link media="only screen and (max-width:1350px)" rel="stylesheet" href="styles/style_1350.css" />
<link media="only screen and (max-width:1210px)" rel="stylesheet" href="styles/style_1210.css" />
<link media="only screen and (max-width:1000px)" rel="stylesheet" href="styles/style_1000.css" />
<link media="only screen and (max-width:850px)" rel="stylesheet" href="styles/style_800.css" />
<script>
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
var x = document.getElementsByTagName("link");
var i;
for (i = 0; i < x.length; i++) {
x.href="styles/style_for_phone.css";
}
</script>
Link to comment
Share on other sites

  • 0

 

Сам с этим столкнулся. Пока только верстальщик, но в сети нашёл код на javascript:

<link rel="stylesheet" type="text/css" href="styles/style.css" /> 
<script>
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
var x = document.getElementsByTagName("link");
var i;
for (i = 0; i < x.length; i++) {
x.href="styles/style_for_phone.css";
}
</script>
А вообще для адаптивного дизайна вот такой полный код:

<link rel="stylesheet" type="text/css" href="styles/style.css" /> 
<link media="only screen and (max-width:1650px)" rel="stylesheet" href="styles/style_1650.css" />
<link media="only screen and (max-width:1560px)" rel="stylesheet" href="styles/style_1550.css" />
<link media="only screen and (max-width:1450px)" rel="stylesheet" href="styles/style_1450.css" />
<link media="only screen and (max-width:1350px)" rel="stylesheet" href="styles/style_1350.css" />
<link media="only screen and (max-width:1210px)" rel="stylesheet" href="styles/style_1210.css" />
<link media="only screen and (max-width:1000px)" rel="stylesheet" href="styles/style_1000.css" />
<link media="only screen and (max-width:850px)" rel="stylesheet" href="styles/style_800.css" />
<script>
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
var x = document.getElementsByTagName("link");
var i;
for (i = 0; i < x.length; i++) {
x.href="styles/style_for_phone.css";
}
</script>

 

Зачем так все сложно? Никто так не делает, во всяком случае я не встречал сайты где так подключены стили.

Подключайте один файл в котором обычные media queries.

 

 

 

И еще одна непонятность: с размером шрифта стратегия хотябы понятна. А как быть с контентом и кнопочками менишечками всякими. Сейчас у среднистатистического смартфона разрешение больше чем у среднистатистического ноута например. Поэтому @media(max-width) не подайдет. По @media handheld - мало информации: судя по документации это свойство срабатывает на каких-то КПК. Как определить на 100% что девайс смарфон?

Подойдет max-width как для смартфона так и для пк, никакой разницы нет. Написав например вот так @media(min-width: 1366px), это применится для среднестатистического ноутбука в котором по ширине 1366px, но не применится для fullhd+ смартфона (например iphone 6+). Вот тут табличка http://www.canbike.org/CSSpixels/ где указаны кол-во пикселей для разных устройств

Edited by swandev
Link to comment
Share on other sites

  • 0

 

А вообще для адаптивного дизайна вот такой полный код:
 

лучше использовать http://htmlbook.ru/css/mediaв одном css файле

 

Можно и так, но просто мне удобно использовать несколько файлов стилей.

Link to comment
Share on other sites

  • 0

 

 

А вообще для адаптивного дизайна вот такой полный код:
 

лучше использовать http://htmlbook.ru/css/mediaв одном css файле

 

Можно и так, но просто мне удобно использовать несколько файлов стилей.

 

Это медленнее. Если уж так надо, то используйте Gulp или Grunt для сборки в 1 файл.

<link rel="stylesheet" type="text/css" href="styles/style.css" /><script>if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {var x = document.getElementsByTagName("link");var i;for (i = 0; i < x.length; i++) {x[i].href="styles/style_for_phone.css";}}</script>А вообще для адаптивного дизайна вот такой полный код:<link rel="stylesheet" type="text/css" href="styles/style.css" /><link media="only screen and (max-width:1650px)" rel="stylesheet" href="styles/style_1650.css" /><link media="only screen and (max-width:1560px)" rel="stylesheet" href="styles/style_1550.css" /><link media="only screen and (max-width:1450px)" rel="stylesheet" href="styles/style_1450.css" /><link media="only screen and (max-width:1350px)" rel="stylesheet" href="styles/style_1350.css" /><link media="only screen and (max-width:1210px)" rel="stylesheet" href="styles/style_1210.css" /><link media="only screen and (max-width:1000px)" rel="stylesheet" href="styles/style_1000.css" /><link media="only screen and (max-width:850px)" rel="stylesheet" href="styles/style_800.css" /><script>if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {var x = document.getElementsByTagName("link");var i;for (i = 0; i < x.length; i++) {x[i].href="styles/style_for_phone.css";}}</script>

Вы хоть прочитайте, что здесь написано. Если это телефон, то стиль styles/style.css заменяется на styles/style_for_phone.css. А потом, если это телефон, то все ваши @media заменяются на styles/style_for_phone.css:

<link rel="stylesheet" type="text/css" href="styles/style_for_phone.css" /><link media="only screen and (max-width:1650px)" rel="stylesheet" href="styles/style_for_phone.css" /><link media="only screen and (max-width:1560px)" rel="stylesheet" href="styles/style_for_phone.css" /><link media="only screen and (max-width:1450px)" rel="stylesheet" href="styles/style_for_phone.css" /><link media="only screen and (max-width:1350px)" rel="stylesheet" href="styles/style_for_phone.css" /><link media="only screen and (max-width:1210px)" rel="stylesheet" href="styles/style_for_phone.css" /><link media="only screen and (max-width:1000px)" rel="stylesheet" href="styles/style_for_phone.css" /><link media="only screen and (max-width:850px)" rel="stylesheet" href="styles/style_for_phone.css" />

Так что так делать нельзя.

Edited by afdw
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy