У меня есть дочерний элемент, который не помещается внутри родительского элемента (похоже на 1 пиксель), что приводит к вертикальным полосам прокрутки. Проблема возникает только в старых версиях Windows/Internet Explorer. Я думаю, что это была Windows 7.
Более подробно: <label for = "toggle">Menu</label> — это элемент с полосами прокрутки, поскольку он не помещается в <header>. Но высота header определяется label, поэтому я не понимаю, почему это так.
Пример скрипта JS: https://jsfiddle.net/a9zkgyx7/
<header>
<div class = "logo"><a href = "index.html"><img src = "resources/logo.svg"></a></div>
<input type = "checkbox" id = "toggle">
<label for = "toggle">Menu</label>
<nav>
<ul>
<li><a href = "link.html">Text</a></li>
<li><a href = "link.html">Text</a></li>
<li><a href = "link.html">Text</a></li>
<li><a href = "link.html">Text</a></li>
<li><a href = "link.html">Text</a></li>
</ul>
</nav>
</header>
article, aside, figure, footer, header, main, nav, section {
display: block;
}
header {
padding:0 3.6rem;
border-bottom:1px solid;
overflow:auto;
}
.logo {
float:left;
width:13.2rem;
}
#toggle {
display: none;
}
#toggle ~ label {
display: inline-block;
cursor: pointer;
float:right;
font-size:2.4rem;
line-height:7.1rem;
}
nav {
height:0;
overflow:hidden;
position:absolute;
top:7.2rem;
left:0;
right:0;
background-color:rgb(255,255,255);
z-index:102;
text-align:center;
font-size:4.8rem;
line-height:1.75em;
}
#toggle:checked ~ nav {
height: 100%;
}
Хорошо, но я бы предпочел вообще не иметь полосы прокрутки.
О каком возрасте мы говорим? Это версия IE, которая не распознает такие элементы, как header и nav, как блоки? Если это так, установите файл HTML5shim.
Я думаю, что это была Windows 7, где я заметил проблему. Мой CSS содержит следующий код: header, nav { display: block; }. Я думал, что это должно сработать для старых браузеров, которые не поддерживают HTML5?
Может быть, браузер настолько устарел, что ему нужен префикс поставщика для float? Как правило, если что-то не работает только в одном браузере (особенно в IE), всегда стоит попробовать запустить код через автопрефикс.
@xmastertje overflow: hidden не позволит старому IE отображать полосы прокрутки, а <header> сохранит свою высоту (я думал, что если я уберу overflow:auto, он уменьшится до 0 высоты).
@Markeee, да, ха-ха, ты хочешь, чтобы я ответил на это?
@xmastertje, возможно, правильный ответ, но я хотел бы изучить любые последствия изменения переполнения с автоматического на скрытый. Мне нужно, чтобы элемент сохранял свою высоту, даже если дочерние элементы плавают.
@Markeee Я понимаю. Я просто поставлю это как ответ, и вы можете принять его, если хотите :)






В вашем заголовке css вы должны изменить overflow:auto; на overflow:hidden;, это скроет вашу полосу прокрутки.
вы можете скрыть полосу прокрутки с помощью этого
overflow-y: hidden;