Masalahnya dapat diselesaikan dengan kueri media dan beberapa matematika. Inilah solusi untuk orientasi portait:
@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%);
}
Karena vh akan berubah ketika bilah url menghilang, Anda harus menentukan ketinggian dengan cara lain. Untungnya, lebar viewport konstan dan perangkat seluler hanya memiliki beberapa rasio aspek yang berbeda; jika Anda dapat menentukan lebar dan rasio aspek, sedikit matematika akan memberi Anda ketinggian viewport persis seperti yang seharusnya bekerja. Inilah prosesnya
1) Buat serangkaian kueri media untuk rasio aspek yang ingin Anda targetkan.
gunakan rasio aspek-perangkat alih-alih rasio aspek karena yang terakhir akan mengubah ukuran ketika bilah url menghilang
Saya menambahkan 'max' ke rasio aspek-perangkat untuk menargetkan setiap rasio aspek yang terjadi di antara yang paling populer. Mereka tidak akan setepat itu, tetapi mereka hanya akan untuk sebagian kecil pengguna dan masih akan cukup dekat dengan vh yang tepat.
ingat kueri media menggunakan horisontal / vertikal, jadi untuk portait Anda perlu membalik angka
2) untuk setiap kueri media, gandakan persentase tinggi vertikal apa pun yang Anda inginkan elemen di dalam dengan kebalikan dari rasio aspek.
- Karena Anda tahu lebar dan rasio lebar ke tinggi, Anda hanya mengalikan% yang Anda inginkan (100% dalam kasus Anda) dengan rasio tinggi / lebar.
3) Anda harus menentukan tinggi bar url, dan kemudian minusnya dari ketinggian. Saya belum menemukan pengukuran yang tepat, tetapi saya menggunakan 9% untuk perangkat seluler dalam lanskap dan itu tampaknya bekerja cukup baik.
Ini bukan solusi yang sangat elegan, tetapi opsi lain juga tidak terlalu bagus, mengingat mereka adalah:
Membuat situs web Anda terlihat bermasalah bagi pengguna,
memiliki elemen berukuran tidak tepat, atau
Menggunakan javascript untuk beberapa gaya dasar ,
Kekurangannya adalah beberapa perangkat mungkin memiliki ketinggian url bar berbeda atau rasio aspek dari yang paling populer. Namun, menggunakan metode ini jika hanya sejumlah kecil perangkat mengalami penambahan / pengurangan beberapa piksel, yang tampaknya jauh lebih baik bagi saya daripada semua orang yang memiliki ukuran situs web ketika menggesek.
Untuk membuatnya lebih mudah, saya juga membuat mixin SASS:
@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%);
}
}