2016-05-04 1 views
3

Я пытаюсь изменить порядок двух divs в контейнере, когда они добираются до размера мобильного телефона.Как изменить порядок двух разделов, когда на мобильном?

<div class="container"> 
    <div class="div1"></div> 
    <div class="div2"></div> 
</div> 

Возможно ли это изменить его так, что он изменится на

<div class="container"> 
    <div class="div2"></div> 
    <div class="div1"></div> 
</div> 
+0

Какую поддержку браузера вам нужно для решения? В принципе, какая версия IE и выше? – moettinger

+0

только совместимые браузеры (то есть firefox, chrome) – Mazodude

ответ

1

Вы можете использовать чистый CSS, чтобы сделать это

.container{ 
    display:table; 
} 
.div1{ 
    display:table-footer-group; 
} 
.div2{ 
    display:table-header-group; 
} 

убедитесь, что вы положили его в @media запрос.

+0

Вы заранее подготовили этот ответ? Похоже на носок-марионетку ... – Xufox

+1

Нет. Мне просто пришлось работать над проектом с той же проблемой. Так что у меня уже был код. –

+0

Это сделало трюк. Работает очень хорошо. – Mazodude

-1

Вы можете использовать два отдельных класса и сделать только один видимый за раз в зависимости от ширины носителя.

Сначала создайте CSS вы

//This container is only visible on devices with 1025px or more such as iPad in landscape or portrait view 
@media screen and (min-width: 1025px) { 
    .desktop-container { 
    Display:none; 
    } 
} 


// This container is only visible on smaller devices with screen size 360px - 1024px 
@media screen and (min-width:360px) and (max-width:1024px) { 
    .mobile-container { 
    Display:none; 
    } 
} 

Теперь создайте разметку ...

<div class="desktop-container"> 
    <div class="div1"></div> 
    <div class="div2"></div> 
</div> 

<div class="mobile-container"> 
    <div class="div2"></div> 
    <div class="div1"></div> 
</div> 
+0

Я не хочу иметь два div только для изменения порядка. Спасибо в любом случае – Mazodude

4

В зависимости от which browsers вам нужно поддерживать, вы можете использовать Flexbox для переключения порядка дивы.

.container { 
    display: flex; 
} 
.div1 { 
    order: 0; 
} 
@media screen and (min-width: 780px) { 
    .div1 { 
    order: 1; 
    } 
} 

JS Fiddle

+0

Да, подумал об этом, это будет приятное элегантное решение по треку, но мне нужно поддерживать IE10/11 атм, возможно, для OP –

3

Вы можете сделать это с помощью Flexbox путем изменения порядка.

.container { 
    display: flex; /* or inline-flex */ 
    flex-direction: column; 
} 
@media(min-width:768px){ 
    .container { 
    flex-direction: column-reverse; 
    } 
} 

http://codepen.io/partypete25/pen/oxJNqz

Смежные вопросы