Наразі є такі варіанти для організації CSS-сітки сайту:
1. Завантажити та підключити Bootstrap (в даний час це версія 3.3.6)
Підключити необхідно буде такі файли.
bootstrap.min.css 118,4 Кб
2. Завантажити власний скомпільований Bootstrap, вибравши лише сітку (Bootstrap.grid) та вказавши необхідні налаштування
3. Придумати свою просту CSS-сітку, яку можна використовувати на не великих проектах.
Цим я і зайнявся.
Ідею позначення ширини стовпців я знайшов десь в Інтернет (наразі не можу знайти цей сайт). Потім я змінив цю ідею під власні задачі та власний стиль верстки. В результаті вийшов свій "велосипед", яким я і вирішив тут поділитися.
В основному при верстці адаптивних тем трапляється дві задачі:
1) поділити простір на стовпчики без проміжків
2) поділити простір на стовпчики з проміжками
Замість фіксованих від'ємних відступів рядків та відступів між стовпчиками (як це у Bootstrap) я використовую проценти.
Це відповідно класи .mpct--0, .mpct--half, .mpct--1 (margin percent x)
Рядок формується класом .row та класом, який задає від'ємні правий і лівий відступи .mpct--x
Стовпчики формуються класом .col, та класами які задають ширину стовпчика та відступи. Ширина стовпчиків формується класами, що починаються з символу w. Наприклад w1-3 значить, що ширина стовпчика буде 1/3 від ширини рядка. Таким чином я не прив'язуюсь до максимальної кількості стовпчиків як це у Bootstrap. 1/3 це те ж саме що 2/6 або 4/12. Але дані класи в css-файлі я не описував.
Ширина з приставками -t, -p діє тільки на планшетах і телефонах.
Може показатися кількість класів надлишковим в коді html, але інколи необхідно саме щоб рядок мав від'ємні відступи (.mpct) для того щоб відповідати ширині іншого вмісту на сторінці, а стовпчики в цьому рядку не мали відступів між собою. Якщо необхідно різне відображення блоків на екранах, планшетах та мобільних - то і класів для задавання ширини буде також 3. В Bootstrap теж використовуються окремі класи для задавання ширини блока на кожному з типів пристроїв.
Класи .hide-t та .hide-p використовуються для приховування стовпчика на пристроях з відповідною шириною екрану.
Код Sass повністю представлений в наступному блоці.
Ось така сітка в пошуках балансу між розміром CSS-коду і HTML-коду.
1. Завантажити та підключити Bootstrap (в даний час це версія 3.3.6)
Підключити необхідно буде такі файли.
bootstrap.min.css 118,4 Кб
bootstrap-theme.min.css 22,9 Кб
bootstrap.min.js 36 Кб
Разом: 177,3 Кб
2. Завантажити власний скомпільований Bootstrap, вибравши лише сітку (Bootstrap.grid) та вказавши необхідні налаштування
В цьому випадку розміри файлів будуть такими:
bootstrap-theme.min.css 23,8 Кб
bootstrap.min.css 12,4 Кб
Разом: 36,2 Кб3. Придумати свою просту CSS-сітку, яку можна використовувати на не великих проектах.
Цим я і зайнявся.
Ідею позначення ширини стовпців я знайшов десь в Інтернет (наразі не можу знайти цей сайт). Потім я змінив цю ідею під власні задачі та власний стиль верстки. В результаті вийшов свій "велосипед", яким я і вирішив тут поділитися.
В основному при верстці адаптивних тем трапляється дві задачі:
1) поділити простір на стовпчики без проміжків
2) поділити простір на стовпчики з проміжками
Замість фіксованих від'ємних відступів рядків та відступів між стовпчиками (як це у Bootstrap) я використовую проценти.
Це відповідно класи .mpct--0, .mpct--half, .mpct--1 (margin percent x)
Рядок формується класом .row та класом, який задає від'ємні правий і лівий відступи .mpct--x
.row.mpct--0 {
margin-left: 0;
margin-right: 0;
}
.row.mpct--half {
margin-left: -.5%;
margin-right: -.5%;
}
.row.mpct--1 {
margin-left: -1%;
margin-right: -1%;
}
<div class="row mpct--half">
</div>
Стовпчики формуються класом .col, та класами які задають ширину стовпчика та відступи. Ширина стовпчиків формується класами, що починаються з символу w. Наприклад w1-3 значить, що ширина стовпчика буде 1/3 від ширини рядка. Таким чином я не прив'язуюсь до максимальної кількості стовпчиків як це у Bootstrap. 1/3 це те ж саме що 2/6 або 4/12. Але дані класи в css-файлі я не описував.
Ширина з приставками -t, -p діє тільки на планшетах і телефонах.
<div class="col w1-6 mpct--half w1-3-t w1-2-p">
</div>
Може показатися кількість класів надлишковим в коді html, але інколи необхідно саме щоб рядок мав від'ємні відступи (.mpct) для того щоб відповідати ширині іншого вмісту на сторінці, а стовпчики в цьому рядку не мали відступів між собою. Якщо необхідно різне відображення блоків на екранах, планшетах та мобільних - то і класів для задавання ширини буде також 3. В Bootstrap теж використовуються окремі класи для задавання ширини блока на кожному з типів пристроїв.
Класи .hide-t та .hide-p використовуються для приховування стовпчика на пристроях з відповідною шириною екрану.
Код Sass повністю представлений в наступному блоці.
/* Oleg Lyubchenko's CSS grid */
.row.mpct--0 {
margin-left: 0;
margin-right: 0;
}
.row.mpct--half {
margin-left: -.5%;
margin-right: -.5%;
}
.row.mpct--1 {
margin-left: -1%;
margin-right: -1%;
}
.col {
float: left;
@include box_sizing--border-box();
}
.col {
&.w1-1 { width: 100%; float: none;}
&.w11-12 { width: 91.6667%; }
&.w7-8 { width: 87.5%; }
&.w5-6 { width: 83.3333%; }
&.w4-5 { width: 80%; }
&.w3-4 { width: 75%; }
&.w2-3 { width: 66.6667%; }
&.w5-8 { width: 62.5%; }
&.w3-5 { width: 60%; }
&.w7-12 { width: 58.3333%; }
&.w1-2 { width: 50%; }
&.w5-12 { width: 41.6667%; }
&.w2-5 { width: 40%; }
&.w3-8 { width: 37.5%; }
&.w1-3 { width: 33.3333%; }
&.w1-4 { width: 25%; }
&.w1-5 { width: 20%; }
&.w1-6 { width: 16.6667%; }
&.w1-8 { width: 12.5%; }
&.w1-12 { width: 8.3333%; }
}
.col.mpct--half {
padding: 0 .5%;
}
.col.mpct--1 {
padding: 0 1%;
}
// t — tablets
@media (max-width: 768px) and (min-width: 480px) {
.row.mpct--0-t { margin-left: 0; margin-right: 0;}
.row.mpct--half-t { margin-left: -.5%; margin-right: -.5%;}
.row.mpct--1-t { margin-left: -1%; margin-right: -1%; }
.col {
&.w0-t { display: none;}
&.w1-1-t { width: 100%; float: none;}
&.w7-8-t { width: 87.5%; }
&.w5-6-t { width: 83.3333%; }
&.w4-5-t { width: 80%; }
&.w3-4-t { width: 75%; }
&.w5-8-t { width: 62.5%; }
&.w1-2-t { width: 50%; }
&.w2-5-t { width: 40%; }
&.w3-8-t { width: 37.5%; }
&.w1-3-t { width: 33.3333%; }
&.w1-4-t { width: 25%; }
&.w1-6-t { width: 16.6667%; }
&.w1-8-t { width: 12.5%; }
}
.col.mpct--0-t { padding: 0; }
.col.mpct--half-t { padding: 0 .5%; }
.col.mpct--1-t { padding: 0 1%; }
.hide-t {display: none;}
}
// p — phones
@media (max-width: 480px) {
.row.mpct--0-p { margin-left: 0; margin-right: 0;}
.row.mpct--half-p { margin-left: -.5%; margin-right: -.5%;}
.row.mpct--1-p { margin-left: -1%; margin-right: -1%; }
.col {
&.w0-p { display: none;}
&.w1-1-p { width: 100%; float: none;}
&.w5-6-p { width: 83.3333%; }
&.w4-5-p { width: 80%; }
&.w3-4-p { width: 75%; }
&.w1-2-p { width: 50%; }
&.w1-3-p { width: 33.3333%; }
&.w1-6-p { width: 16.6667%; }
&.w1-4-p { width: 25%; }
}
.col.mpct--0-p { padding: 0; }
.col.mpct--half-p { padding: 0 .5%; }
.col.mpct--1-p { padding: 0 1%; }
.hide-p {display: none;}
}
Ось така сітка в пошуках балансу між розміром CSS-коду і HTML-коду.
Немає коментарів:
Дописати коментар