Адаптивная верстка CSS

Адаптивная вёрстка - вид вёрстки, изменяющийся в зависимости от размеров видимой области в браузере. Например, на мобильном устройстве сайт отображается с большими кнопками, меняется расположение элементов. Добавить на сайт адаптивность проще, чем делать отдельную мобильную версию сайта. Делается она с помощью @media
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<style>
.my-content {
   overflow: auto;
   height: 400px;
   border: 1px solid #aaa;
   font-size: 0;
   width: 100%;
   white-space: initial;
}
 
.my-content > img {
   display: inline-block;
   border: none;
   margin: 2.5%;
   width: 95%;
   font-size: 16px;
}
 
@media only screen and (min-width: 0){
   .my-content > img {
      width: 95%;
   }
}
 
@media only screen and (min-width: 800px){
   .my-content > img {
      width: 45%;
   }
}
</style>
 
<div class="my-content">
   <img src="/images/news/153--16-10-07--1-06-00.jpg" />
   <img src="/images/news/153--16-10-07--1-06-00.jpg" />
   <img src="/images/news/153--16-10-07--1-06-00.jpg" />
</div>
Важно: свойства будут применятся сверху вниз, т.е. нижние свойства переопределяют то, что было написано до них. Если окно Вашего браузера больше 800px в ширину, то изображения отобразятся ввиде "плитки". Вы можете попробовать уменьшить размер браузера и изображения выстроятся в вертикальную линию, растянувшись на 95% от ширины экрана (с 2.5% отступами со всем сторон)
Зачем изменять font-size в .my-content / .my-content > img? Когда вложенным элементам выставляется display: inline-block; они воспринимаются браузером как строчные. В таком случае пробелы и переносы строк будут занимать немного дополнительного пространства. При точной верстке (например, Вы хотите по два элемента в строку и выставляете им width: 50%;), блок будет занимать 50%, но после него будет символ пробела (небольшой отступ). В таком случае следующий блок размером в 50% не влезет в эту строку и будет перенесён на следующую. Чтобы избежать таких проблем в можно выставить .container { font-size: 0 } Затем во вложенном блоке восстанавливаете (font-size: 16px;) и контент внутри него будет отображаться (в img, конечно, контента не будет; восстановление font-size: 16px; для примера). p.s. @media only screen and (min-width: 800px) {} - зависит от размера браузера, а не от ширины контента. Нет смысла пытаться управлять каким-то блоком, чтобы изменить так вложенную верстку. p.p.s Если ширина не будет меняться, а Вы свойства прописали, то можно попробовать !important; Возможно, Ваши свойства переопределяются откуда-то ещё:
1
2
3
4
5
@media only screen and (min-width: 800px) {
   .my-content img {
      width: 45% !important;
   }
}
Но будьте аккуратней с !important, потом свойство с ним переопределить будет сложнее Спасибо за внимание.
Если статья Вам показалась незаконченной или Вы знаете как её улучшить, пожалуйста сообщите мне e@gohtml.ru