Может ли элемент html быть пропущен css?

TL;DR:

Может ли css игнорировать элемент html, но не его дочерние элементы? Такой элемент будет обрабатываться css так, как будто его там нет; но его дочерние элементы будут рассматриваться как обычные, т. е. как дочерние элементы родителя игнорируемого элемента.

Детали, Мотивация:

Допустим, у нас есть хороший стилизованный макет, например. с display: flex.

<div className = "outer"><!-- this one has display: flex (just example) -->
  <div className = "inner">Foo</div>
  <div className = "inner">Bar</div>
  <div className = "inner">Baz</div>

  <div className = "inner">Foo 2</div>
  <div className = "inner">Bar 2</div>
  <div className = "inner">Baz 2</div>
</div>

Но затем нам нужно обернуть одну группу наших элементов inner в form или nav (по семантическим или другим причинам):

<div className = "outer">
  <div className = "inner">Foo</div>
  <div className = "inner">Bar</div>
  <div className = "inner">Baz</div>

  <form>
    <div className = "inner">Foo 2</div>
    <div className = "inner">Bar 2</div>
    <div className = "inner">Baz 2</div>
  </form>
</div>

Ну, конечно, это нарушает наш желаемый макет (например, flex), потому что <form> стал дочерним элементом outer и братом первых трех inner.

Можно ли сделать так, чтобы элемент, в данном случае form, игнорировался css, как если бы его не было в дереве элементов html?

Если это невозможно, рассматривалась ли когда-либо эта функция, работала ли она, отклонялась ли она...?

Это возможно с помощью подсетки CSS. Однако не похоже, что что-то подобное существует для flex.

connexo 26.12.2022 20:05

@connexo Круто. Что ж, было бы действительно неплохо иметь хотя бы специальное решение для flex. Но я ищу более общий «пропуск CSS». Я не вижу теоретической причины, почему этого не может быть. Так что мне интересно, это вещь?

mrkvon 26.12.2022 20:11
Улучшение производительности загрузки с помощью 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
2
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

просто установите форму на display: flex

теперь форма является прямым дочерним элементом... поэтому вы можете, например, установить ее на flex:1 или около того. и вы получите нового «родителя» для дочерних элементов формы.

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

Это именно то, для чего предназначен display:contents. Так:

form { display:contents }

.outer { 
  display: flex;
  justify-content: space-evenly;
}

form { 
  display: contents;
}
<div class = "outer">
  <div class = "inner">Foo</div>
  <div class = "inner">Bar</div>
  <div class = "inner">Baz</div>

  <form>
    <div class = "inner">Foo 2</div>
    <div class = "inner">Bar 2</div>
    <div class = "inner">Baz 2</div>
  </form>
</div>

Имейте в виду, что в настоящее время в браузерах есть ошибка, которая делает наш элемент form недоступным для программ чтения с экрана. Это проблематично для семантических/логических элементов из точки зрения доступности. Надеюсь, это будет исправлено в будущем.

mrkvon 27.12.2022 00:12

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