Почему этот компонент не заполняет всю ширину?

Я не понимаю, почему первая кнопка здесь не заполняет всю ширину:

<div style = "display:flex;">
  <button style = "width:100%;"> </button>
  <button style = "flex-shrink: 0;"> </button>
  <button> </button>
</div>

Почему flexbox прерывает ширину?

первая кнопка выполняет ровно 100% из width разрешенных ей моделью flexBox. чего ты ожидал ?

Mister Jojo 05.08.2024 22:38

@MisterJojo Нет, это не так. Разве вы не видите две кнопки в одной строке?

JobHunter69 06.08.2024 07:15

Конечно, я их вижу! Они находятся за пределами отведенного для первой кнопки места! Когда вы используете display:flex для родительского элемента, его размер не используется в качестве ссылки. каждый дочерний элемент имеет свое собственное распределенное пространство, где целостность его содержимого имеет приоритет. Таким образом, результат, который вы получаете, располагая кнопки на одной строке, является нормальным для гибкого дисплея, как вы его определили здесь. Таким образом, здесь нет дефекта дисплея. Но будьте уверены, благодаря подтвержденному вами ответу я понял вашу ошибку в формулировке вашего вопроса.

Mister Jojo 06.08.2024 09:39

@MisterJojo понял, спасибо

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

Ответы 3

первая кнопка не заполняет всю ширину из-за того, как flexbox распределяет пространство. По умолчанию гибкие элементы имеют flex-shrink: 1, что позволяет им сжиматься. Когда вы устанавливаете width: 100% на первой кнопке, она изначально занимает все пространство, но затем flexbox перераспределяет пространство для размещения других кнопок.

Вы спрашиваете не у того человека и не в том месте. Пожалуйста, добавьте демо-версию в свой ответ, чтобы продемонстрировать свое решение.

isherwood 05.08.2024 23:19
Ответ принят как подходящий

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

Если вы ожидаете, что элементы будут перенесены, значением по умолчанию для flex-wrap, если оно не указано, является nowrap. Вы можете установить собственное значение, чтобы разрешить перенос элементов:

<div style = "display:flex;flex-wrap:wrap;">
  <button style = "width:100%;"> </button>
  <button style = "flex-shrink: 0;"> </button>
  <button> </button>
</div>

Оно делает. Как отражено в вашем фрагменте кода.

<div style = "display:flex; height: 50px;">
  <button style = "width:100%;"> </button>
  <button style = "flex-shrink: 0;"> </button>
  <button> </button>
</div>

Однако, если вы ожидаете, что две родственные кнопки уменьшатся до нуля, вам придется удалить отступы и границы по умолчанию для элементов кнопок.

<div style = "display:flex; height: 50px">
  <button style = "width:100%;"> </button>
  <button style = "padding: 0; border: 0;"> </button>
  <button style = "padding: 0; border: 0;"> </button>
</div>

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