Проблему можна вирішити за допомогою медіа-запиту та певної математики. Ось рішення для орієнтації на портат:
@media (max-device-aspect-ratio: 3/4) {
height: calc(100vw * 1.333 - 9%);
}
@media (max-device-aspect-ratio: 2/3) {
height: calc(100vw * 1.5 - 9%);
}
@media (max-device-aspect-ratio: 10/16) {
height: calc(100vw * 1.6 - 9%);
}
@media (max-device-aspect-ratio: 9/16) {
height: calc(100vw * 1.778 - 9%);
}
Оскільки vh зміниться, коли панель url зникне, вам потрібно визначити висоту іншим способом. На щастя, ширина вікна перегляду є постійною, а мобільні пристрої мають лише декілька співвідношень сторін; якщо ви можете визначити ширину і співвідношення сторін, трохи математики дасть вам висоту огляду точно так, як слід vh працювати . Ось процес
1) Створіть ряд медіа-запитів для пропорцій, на які потрібно націлити.
використовуйте співвідношення сторін-пристроїв замість співвідношення сторін, оскільки остання змінять розмір, коли панель URL-адреси відпадає
Я додав "max" до співвідношення сторін між пристроєм, щоб націлити будь-які співвідношення сторін, які, як правило, дотримуються між найпопулярнішими. Вони не будуть настільки точними, але вони будуть лише для меншості користувачів і все ще будуть досить близькими до належного vh.
запам’ятайте медіа-запит, використовуючи горизонтальну / вертикальну, тому для перенесення потрібно перегорнути номери
2) для кожного медіа-запиту помножте будь-який відсоток вертикальної висоти, на який потрібно, щоб елемент знаходився в vw на зворотній частині співвідношення сторін.
- Оскільки ви знаєте ширину та відношення ширини до висоти, ви просто помножите потрібний% (у вашому випадку 100%) на співвідношення висота / ширина.
3) Ви повинні визначити висоту смуги URL, а потім мінус висоту. Я не знайшов точних вимірів, але я використовую 9% для мобільних пристроїв у пейзажі, і це, здається, працює досить добре.
Це не дуже елегантне рішення, але інші варіанти теж не дуже хороші, враховуючи, що вони:
Оскільки ваш веб-сайт здається користувачеві баггі,
які мають елементи неправильного розміру, або
Використовуючи javascript для деяких базових стилів,
Недолік - деякі пристрої можуть мати різну висоту смуги URL або співвідношення сторін, ніж найпопулярніші. Однак, використовуючи цей метод, якщо додавання / віднімання кількох пікселів страждає лише невеликій кількості пристроїв, це здається мені набагато кращим, ніж всі, хто має веб-сайт при зміні розміру.
Щоб зробити це простіше, я також створив SASS mixin:
@mixin vh-fix {
@media (max-device-aspect-ratio: 3/4) {
height: calc(100vw * 1.333 - 9%);
}
@media (max-device-aspect-ratio: 2/3) {
height: calc(100vw * 1.5 - 9%);
}
@media (max-device-aspect-ratio: 10/16) {
height: calc(100vw * 1.6 - 9%);
}
@media (max-device-aspect-ratio: 9/16) {
height: calc(100vw * 1.778 - 9%);
}
}