Почему не может быть гибких контейнеров?
я пытался стиль a fieldset элемент display: flex и display: inline-flex.
однако, это не работает: flex вели себя как block и inline-flex вели себя как inline-block.
это происходит как на Firefox и Chrome, но странно это работает на IE.
это баг? Я не мог найти это fieldset должно иметь какое-либо особое поведение, ни в HTML5, ни в CSS гибкий макет коробки характеристики.
fieldset, div {
display: flex;
border: 1px solid;
}<fieldset>
<p>foo</p>
<p>bar</p>
</fieldset>
<div>
<p>foo</p>
<p>bar</p>
</div> 5 ответов:
по данным ошибка 984869 -
display: flexне работает для элементов кнопка,
<button>не реализуется (браузерами) в чистом CSS, поэтому они являются немного черного ящика, с точки зрения CSS. Это означает, что они не обязательно реагировать так же, как, например, a<div>будет.это не относится к flexbox -- например, мы не визуализируем полосы прокрутки, если вы ставите
overflow:scrollна кнопке, и мы не визуализируем его как таблица, Если вы ставитеdisplay:tableна нем.отступив еще дальше, это не относится к
<button>. Считать<fieldset>икоторые также имеют специальное поведение рендеринга:<table>data:text/html,<fieldset style="display:flex"><div>abc</div><div>def</div>в этих случаях Chrome соглашается с нами и игнорирует
flexрежим отображения. (как показал тот факт, что "abc" и "def" заканчиваются укладывается вертикально). Тот факт, что они делают то, что ты делаешь ожидая на<button style="display:flex">скорее всего, просто из-за деталь реализации.в реализации кнопки геккона, мы жестко
<button>(и<fieldset>,и) как имеющие определенный класс кадров (и, следовательно,, конкретный способ выкладки дочерних элементов), независимо от<table>displayсобственность.если вы хотите надежно иметь детей надежно аранжированных В а особый режим макета в кросс-браузерной моде, ваш лучший выбор используйте обертку-div внутри кнопки, как нужно внутри из
aa<table>или<fieldset>.поэтому эта ошибка была отмечена как"разрешенная недопустимая".
есть еще ошибка 1047590 -
display: flex;не работает<fieldset>, в настоящее время "неофициальный".
хорошие новости: Firefox 46 + реализует Flexbox для
<fieldset>. Смотрите ошибка 1230207.
я узнаю, что это может быть ошибка в Chrome и Firefox, где
legendиfieldsetare замена элементов.Ошибки:
возможное решение:
возможный обходной путь будет использовать
<div role="group">в HTML, и применение в CSSdiv[role='group']в качестве селектора.
по моему опыту, я обнаружил, что ни
<fieldset>, ни<button>, ни<textarea>может правильно использоватьdisplay:flexили унаследованных свойств.как уже упоминалось, были зарегистрированы ошибки. Если вы хотите использовать flexbox для управления заказом (например
order:2), то вам нужно будет обернуть элемент в div. Если вы хотите, чтобы flexbox контролировал фактическую компоновку и размеры, то вы можете рассмотреть возможность использования div вместо элемента управления вводом (который воняет, я знаю).
<div role="group"> <p>foo</p> <p>bar</p> </div> <div> <p>foo</p> <p>bar</p> </div>возможно, потребуется использовать role-group, потому что firefox, chrome и я думаю, что у safari есть ошибка с наборами полей. Тогда селектор в CSS будет просто
div[role='group'], div { display: flex; border: 1px solid; }Edit: вот некоторые проблемы, которые испытывают и другие люди.
вы можете поставить дополнительный div в
<fieldset>со следующими реквизитами:flex-inner-wrapper { display: inherit; flex-flow: inherit; justify-content: inherit; align-items: inherit; }
Comments