Почему дочерний элемент не помещается внутри родительского элемента (что приводит к полосам прокрутки)?

У меня есть дочерний элемент, который не помещается внутри родительского элемента (похоже на 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%;
    }

вы можете скрыть полосу прокрутки с помощью этого overflow-y: hidden;

xmaster 03.05.2019 13:18

Хорошо, но я бы предпочел вообще не иметь полосы прокрутки.

Markeee 03.05.2019 13:20

О каком возрасте мы говорим? Это версия IE, которая не распознает такие элементы, как header и nav, как блоки? Если это так, установите файл HTML5shim.

Mr Lister 03.05.2019 13:23

Я думаю, что это была Windows 7, где я заметил проблему. Мой CSS содержит следующий код: header, nav { display: block; }. Я думал, что это должно сработать для старых браузеров, которые не поддерживают HTML5?

Markeee 03.05.2019 13:33

Может быть, браузер настолько устарел, что ему нужен префикс поставщика для float? Как правило, если что-то не работает только в одном браузере (особенно в IE), всегда стоит попробовать запустить код через автопрефикс.

Christopher Bennett 03.05.2019 13:53

@xmastertje overflow: hidden не позволит старому IE отображать полосы прокрутки, а <header> сохранит свою высоту (я думал, что если я уберу overflow:auto, он уменьшится до 0 высоты).

Markeee 03.05.2019 15:03

@Markeee, да, ха-ха, ты хочешь, чтобы я ответил на это?

xmaster 03.05.2019 15:04

@xmastertje, возможно, правильный ответ, но я хотел бы изучить любые последствия изменения переполнения с автоматического на скрытый. Мне нужно, чтобы элемент сохранял свою высоту, даже если дочерние элементы плавают.

Markeee 03.05.2019 15:07

@Markeee Я понимаю. Я просто поставлю это как ответ, и вы можете принять его, если хотите :)

xmaster 03.05.2019 15:09
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
9
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме