Расположить элемент так, как если бы он был первым

Моя ситуация примерно такая:

<div id = "container">
  <p id = "first">...</p>
  <p id = "second">...</p>
</div>

Я хочу, чтобы second стоял перед первым, как если бы он был первым в HTML. Если возможно, это должно быть без изменения стиля container или first, чтобы не влиять на другие макеты. Вариант использования заключается в том, что второй абзац из плагина, поэтому нет контроля над другими элементами.

ОБНОВЛЕНИЕ: забыл упомянуть, я тоже не могу использовать Javascript.

Вы можете использовать функцию prepend().

Sumit Sharma 12.05.2022 12:08

Вы можете расположить второй элемент относительно первого с помощью positon:relative в css или использовать функцию Javascript для перемещения элемента в объектной модели документа.

Jakub 12.05.2022 12: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 страниц, которые помогут...
1
2
37
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

#first { order: 2;}
#second {order: 1;}

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

или

<div id = "container">
<p id = "first" style='order:2'>...</p>
<p id = "second" style='order:1'>...</p>
</div>
order применяется только к «Элементы Flex, элементы сетки и абсолютно позиционированные дочерние элементы контейнеров Flex и Grid» (developer.mozilla.org/en-US/docs/Web/CSS/…) — мы не знаем, имеет ли место что-либо из этого на самом деле, и мы не знаем, можно ли добавить что-либо из этого или нет, с требованием OP сохранить текущий макет.
CBroe 12.05.2022 12:14

Если #container является флексбоксом, вы можете переместить #second на первую позицию, используя order: -1.

#container
{
display: flex;
}

#second
{
order: -1;
}
<div id = "container">
  <p id = "first">first</p>
  <p id = "second">second</p>
</div>

Если нет, вы можете переместить элемент в верхнюю часть контейнера с помощью position, но это фактически не изменит порядок элементов, и вам, скорее всего, придется стилизовать контейнер или другие элементы, чтобы предотвратить рендеринг #second поверх другого элемента. . Если у #container есть position: relative, это немного поможет вам, так как вы можете переместить элемент прямо наверх с помощью top: 0 и position: absolute вместо того, чтобы использовать отрицательное фиксированное значение top и position: relative, но не зная точно, какие стили применяются к #container, мы не могу знать наверняка.

Поскольку вы не можете стилизовать ни #container, ни его дочерние элементы, ваши возможности очень ограничены.

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

Можете ли вы протестировать с помощью flexbox?

#container {
  display: flex;
  flex-flow: column wrap;
}

#first {
  order:2;
  
}

#second {
    order:1;
}

Флексбокс может помочь вам здесь.

В зависимости от того, хотите ли вы макет столбца или строки, вы можете установить свойство flex-direction для элемента .container.

Вы можете присвоить ему значение row-reverse или column-reverse

.container {
  display: flex;
  justify-content: space-between;
  flex-direction: row-reverse;
}

.item {
  border: 1px solid #ccc;
  border-radius: 5px;
  padding: 5px 20px;
}
    <div class = "container">
      <span class = "item">Example 1</span>
      <span class = "item">Example 2</span>
      <span class = "item">Example 3</span>
      <span class = "item">Example 4</span>
      <span class = "item">Example 5</span>
    </div>

в зависимости от ваших требований.

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