CSS: запретить дочернему элементу с текстовым содержимым увеличивать размер окна

У меня есть элемент с длинным текстовым содержимым, который я хочу обрезать / сжать, когда он больше ширины родительского элемента. Однако вместо усечения / сжатия в стиле «текст ...» вся ширина окна увеличивается, и появляется горизонтальная полоса прокрутки. Как я могу это исправить и вообще как предотвратить увеличение дочерним элементом ширины родительского элемента? Обратите внимание, что элемент содержимого находится внутри гибкого элемента.

Пример кода https://codepen.io/anon/pen/BqMNXe:

HTML

<body>
  <nav>
  </nav>

  <main>
    <article>
        lorem ipsum dolores lorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum doloreslorem ipsum dolores
    </article>
  </main>
</body>

CSS

    body{
        display: flex;
        height: 100%;
    }

    html {
      height: 100%;
    }

    nav {
        background-color: aquamarine;
        width: 20em;

        flex-shrink: 0;
        overflow-y: scroll;
        border-right: 0.2em solid black;
    }

    main {
        background-color: bisque;
        flex-shrink: 1;
        flex-grow: 1;
    }

    article {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

Спасибо, Z

Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
3
0
310
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Удалять:

 white-space: nowrap; 

из вашей статьи css class.

Или, если вы имеете в виду, что хотите обрезать текст. Вам понадобится фиксированная ширина или, если вы хотите сделать это с помощью flexbox: видеть это

Решение, приведенное в ссылке, а именно «добавить min-width: 0; в дочерний элемент flex», работает хорошо, даже если длинный текстовый контент находится глубже в дереве dom. Спасибо!

zolee 26.10.2018 12:02

Попробуйте указать ширину для навигации и основного процентного соотношения.

Например :

   nav {
    background-color: aquamarine;
    width: 30%;

    flex-shrink: 0;
    overflow-y: scroll;
    border-right: 0.2em solid black;
}

main {
    background-color: bisque;
    width: 70%;

}

Это могло решить эту проблему. Проблема (ограничение) в том, что мне нужно изменить размер навигации на основе em, чтобы он зависел от размера шрифта. Возможно, я хочу, чтобы навигация была еще более гибкой, и я вообще не хочу использовать фиксированный размер.

zolee 26.10.2018 11:53

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