Каков наилучший способ перемещения элемента, который находится сверху вниз в адаптивном дизайне

У меня есть следующий формат HTML, каков эффективный способ позиционирования данного элемента сверху на рабочем столе и снизу на мобильных устройствах (ширина

<html>
<head>
..
</head>
<body>
..
<p>I am on the top of desktop page, and bottom of mobile page</p>
...
</body>
</html>

4 ответов


переупорядочивание элементов неизвестных высот в отзывчивой манере лучше всего делать с помощью Flexbox. Хотя поддержка не подходит для настольных браузеров (т. е. является основным ограничивающим фактором здесь, поддержка начинается с v10), большинство мобильных браузеров do поддержать его.

http://cssdeck.com/labs/81csjw7x

@media (max-width: 30em) {
  .container {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-orient: vertical;
    -moz-box-orient: vertical;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
    /* optional */
    -webkit-box-align: start;
    -moz-box-align: start;
    -ms-flex-align: start;
    -webkit-align-items: flex-start;
    align-items: flex-start;
  }

  .container .first {
    -webkit-box-ordinal-group: 2;
    -moz-box-ordinal-group: 2;
    -ms-flex-order: 1;
    -webkit-order: 1;
    order: 1;
  }
}

http://caniuse.com/#feat=flexbox

имейте в виду, что Flexbox может конфликтовать с другими методами компоновки, такими как типичные методы сетки. Элементы Flex, настроенные на float, могут привести к неожиданным результатам в браузерах Webkit, использующих спецификацию 2009 (display: -webkit-box).


Лучшая совместимость чем flexbox можно достигнуть с display: table-footer-group (IE8+)
Обратное действие: переместить элемент выше, чем в HTML-коде, вы можете попробовать table-caption и table-header-group.

не работает самостоятельно заменить такие элементы, как img или input, по крайней мере, на Chrome (и это вполне нормально), но хорошо с div например.

EDIT: это 2016 так Flexbox (и Autoprefixer) все вещи \o/


Я не знаю, лучший ли это подход, но вы можете воспроизвести тот же элемент, где хотите, и играть с display: none/


Я предполагаю, что когда вы говорите "положение", вы имеете в виду, что он не перемещается при прокрутке. В этом случае вы можете использовать:

p.className {
  position: fixed;
  bottom: 0; // for mobile devices
  top: 0; // for desktops
}

где P элемент получает атрибут класса, как это:

<p class="className">I am on the...</p>

bottom & top не будет существовать в то же время вам нужно будет загрузить соответствующий на основе устройства. Для рабочего стола Вам также нужно будет смещать содержимое с высотой div, чтобы оно не было скрыто под фиксированным div