Ответ 1
Сегодня я столкнулся с этим решением: https://github.com/rodneyrehm/viewport-units-buggyfill Он проверяет каждый элемент для блока vh/vw и превращает его в px. Ну, стоит проверить, думаю.
Я использовал vh (единицы просмотра) css в одном из моих проектов, но в мобильном сафари это не работает. Кажется, что Safari не знает, что делать с vh, но отлично работает в других браузерах. Я хотел бы сделать тот же эффект с или без vh, пожалуйста, помогите мне. Кстати, я использую facebox. (высота: 50% не работает нормально)
HTML:
<div id="facebox" style="top: 0px; left: 0px; display: block;">
<div class="popup">
<div class="body">
<div class="content_light">
<div class="Lcontent_left"></div>
<div class="Lcontent_right">
<div class="Lright_content"></div>
</div>
</div>
</div>
</div>
</div>
Это мой css:
#facebox .popup {
display:block;
position:relative;
margin:auto;
margin-top:0%;
min-height:100vh;
height:1px;
border-radius:5px;
}
#facebox .body {
padding:0px;
display:block;
position:relative;
background: #fff;
width:100%;
min-height:100vh;
height:1px;
margin:auto;
border-radius:5px;
}
.Lcontent_left{
position:relative;
float:left;
width:100%;
height:50vh;
/*min-height:250px;*/
text-align:center;
overflow:hidden;
}
.Lcontent_left_fullscreen{
display:none;
}
.Lcontent_right{
float:left;
text-justify:inter-word;
position:relative;
width:100%;
height:50vh;
background-color:white;
overflow:auto;
font-family:"Open Sans",Helvetica,sans-serif;
}
.Lright_content{
position:relative;
width:95%;
margin:auto;
margin-left:5px;
overflow:auto;
height:50vh;
word-wrap:break-word;
line-height: 1.5;
font-size:16px;
overflow:auto;
}
Сегодня я столкнулся с этим решением: https://github.com/rodneyrehm/viewport-units-buggyfill Он проверяет каждый элемент для блока vh/vw и превращает его в px. Ну, стоит проверить, думаю.
Вы можете использовать jQuery, чтобы исправить это.
$('container').height($(window).height()/2);
Это работает в каждом браузере. Надеюсь, что это поможет.
У меня тоже была эта проблема, вот мое решение.
Это равно высоте: 100vh;
document.getElementById("your-element").style.height = window.innerHeight + 'px';
Вы также можете использовать приведенный ниже код с jQuery,
$('your-element').height(window.innerHeight + 'px');
Проверено с сафари :)
Я использовал этот CSS только hax сегодня, и он сработал. iOS 8.2 iPhone Safari:
html, body {
...
width: -webkit-calc(100% - 0px);
...
}
Мысль: Использование calc, похоже, позволяет Safari конвертировать единицы в самих px. Теперь моя страница правильно заполнена в Chrome и Safari на iOS.
Если вам нужен полноэкранный div для мобильных браузеров, попробуйте использовать обертку с фиксированной позицией и высотой, установленной на 100%. Затем установите 100% -ную высоту для всплывающего окна. Вы можете настроить положение обертки и всплывающего окна так, как вам нравится с верхними, левыми, правыми, нижними свойствами, а также высотой и шириной.
Это устраняет проблему с автогидингом адресной строки мобильных браузеров в моем случае, когда мне приходилось создавать всплывающее всплывающее окно на мобильном хроме.
Я нашел эту библиотеку очень полезной: https://github.com/Hiswe/vh-check
Он рассчитает значение смещения для правильного vh и поместит его в переменную css, чтобы вы могли использовать его в css:
.main {
height: calc(100vh - var(--vh-offset, 0px));
}
Моя версия "querySelector", потому что: если я использую класс элемента "getelementbyid" не работал.
И этот способ наиболее универсален, если библиотеки jQuery не подключены.
document.querySelector("your-element").style.height = window.innerHeight + 'px';
На CSS Tricks есть хороший ответ на этот вопрос - https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
.my-element {
height: 100vh; /* Fallback for browsers that do not support Custom Properties */
height: calc(var(--vh, 1vh) * 100);
}
// First we get the viewport height and we multiple it by 1% to get a value for a vh unit
let vh = window.innerHeight * 0.01;
// Then we set the value in the --vh custom property to the root of the document
document.documentElement.style.setProperty('--vh', '${vh}px');