Изменение порядка элементов DOM с помощью CSS (Crocodoc)

Можно ли изменить порядок элементов DOM с помощью CSS? У меня есть iframe, где я бы хотел изменить панель инструментов сверху вниз для основного содержимого iframe.

Итак, из этого:

<iframe>
<html>
  <body>
    <div id='toolbar'></div>
    <div id='main_content'></div>
    <div id='other_stuff'></div>
  </body>
</html>
</iframe>

К этому:

<iframe>
<html>
  <body>
    <div id='main_content'></div>
    <div id='toolbar'></div>
    <div id='other_stuff'></div>
  </body>
</html>
</iframe>

Если это невозможно с помощью CSS, кто-то может посоветовать, как это сделать в Javascript? Манипулирование содержимым iframe всегда сбивает с толку *^%$ из меня. В качестве практического приложения я имею в виду https://crocodoc.com/docs/walkthrough/skinning/, поэтому я намерен сделать этот вопрос и ответить ценным для тех, кто использует этот сервис тоже.

2 ответа

Я довольно поздно на вечеринку, но я просто хочу, чтобы вы, ребята, знали, что вы действительно можете изменить порядок DOM только с помощью CSS.

Хотя для этого нам нужно использовать синтаксис CSS3 flexbox. Так что в основном IE10+, в моем случае, часто не проблема, так как я использую его для манипулирования сайтами для мобильных устройств.

Так как нам это сделать? Родитель должен стать элементом flexbox. Например:

(здесь используется только префикс вендора webkit. css поразителен без него)

#main {
    display: -webkit-box;
    display: -webkit-flex;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-flex-direction: column;
    flex-direction: column;
    -webkit-box-align: start;
    -webkit-align-items: flex-start;
    align-items: flex-start;
}

Затем поменяйте местами div, указав их порядок:

#main > div#one{
    -webkit-box-ordinal-group: 2;
    -moz-box-ordinal-group: 2;
    -ms-flex-order: 2;
    -webkit-order: 2;
    order: 2;
    overflow:visible;
}

#main > div#two{
    -webkit-box-ordinal-group: 1;
    -moz-box-ordinal-group: 1;
    -ms-flex-order: 1;
    -webkit-order: 1;
    order: 1;
}

Удачи!

Вы не можете изменить порядок DOM с помощью CSS. Вы могли бы однако применить position: absolute; CSS стиль и позиционирование элемента, устанавливая верхний, нижний, левый, правый стили по мере необходимости.

Возможно, лучше в вашем случае будет position: fixed; bottom: 0; расположить панель инструментов внизу окна браузера.

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