
С появлением большого количества мобильных устройств сайты становятся все более «адптивными», это требует новых, более удобных способов отображения контента. В скором будущем помочь в этом смогут CSS-регионы (CSS Regions) — новый веб-стандарт Adobe.
Говоря просто, CSSRegions предназначены для «умного» обтекания объектов текстом. Пока этот стандарт не готов к использованию на живых сайтах, но уже сейчас можно поэкспериментировать с регионами.
Поддержка браузерами
Проверить, поддерживает ли CSS regions ваш браузер можно на сайте caniuse.com. В Хроме включаем поддержку следующим образом:
- Заходим в экспериментальные функции — chrome://flags
- Находим пункт «Включить CSS-регионы (Enable CSS regions)» и включаем его:

- Перезапускаем Хром
Один блок текста в несколько колонок (демо)
Это самый простой пример использования CSS-регионов — один блок текста перетекает в три колонки:

HTML простой:
<p class="example-text">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</p> <div class="regions"></div> <div class="regions"></div> <div class="regions"></div>
CSS не сложнее:
.example-text { -webkit-flow-into: example-text-flow; padding: 0; margin: 0; } .regions { -webkit-flow-from: example-text-flow; border: 1px solid black; padding: 2px; margin: 5px; width: 200px; height: 50px; }
Результат можно посмотреть в демо, там же несколько примеров чуть более сложнее.
Расположение блоков внутри контента (демо)
В адаптивных макетах при изменении ширины окна браузера контент обычно ведет себя по одному сценарию — текст сжимается в одну колонку, а сайдбары оказываются под ним. Для более правильного расположения блоков на странице скоро можно будет использовать CSS-регионы.
Например вот так выглядит страница с контентом и рекламными блоками:

А на мобильном устройстве на необходимо, чтобы получился вариант справа:

HTML-код конструкции:
<section class="main-content"> <article> ... </article> <div class="ad-region-1"> <!-- empty, ads flow into here as needed --> </div> <article> ... </article> <div class="ad-region-2"> <!-- empty, ads flow into here as needed --> </div> <article> ... </article> <div class="ad-region-3"> <!-- empty, ads flow into here as needed --> </div> </section> <aside> <!-- Fallback content in this flow region, probably clone #ad-source --> </aside> <!-- Source of flowing content, essentially hidden as an element --> <div id="ad-source"> <a href="#"><img src="ads/1.jpg"></a> <a href="#"><img src="ads/2.jpg"></a> <a href="#"><img src="ads/3.jpg"></a> <a href="#"><img src="ads/4.png"></a> </div>
CSS для блоков рекламы — «ad-source»:
#ad-source { -webkit-flow-into: ads; -ms-flow-into: ads; }
CSS для контента:
aside, [class^='ad-region'] { -webkit-flow-from: ads; -ms-flow-from: ads; }
CSS для разной ширины окна браузера:
[class^='ad-region'] { display: none; height: 155px; width: 100%; /* Weird that this is required */ } @media (max-width: 800px) { [class^='ad-region'] { display: block; } [class^='ad-region']:last-child { height: 300px; /* I wish height auto worked */ } aside { display: none; } }
Примеры от Adobe
Отличные примеры использования CSS-регионов показала сама компания Adobe.
Еще можно будет делать такое:


А при использовании Javascript можно заставить текст динамически обтекать объекты:



Документация
Подробная документация по CSS-регионам от Adobe. Пока еще находится в разработке и постоянно меняется.
Использованные материалы и полезные ссылки по теме
- CSS3 regions: Rich page layout with HTML and CSS3 на сайте adobe.com, автор Arno Gourdol
- Diving Into CSS Regions на tutplus.com, автор Umar Hansa
- Content Folding на csstricks.com, автор Chris Coyier
- CSS Regions: Coming Soon to a Webpage Near You на webmonkey.com, автор Scott Gilbertson
- Другие новые веб-стандарты от Adobe
- Paul Irish, разработчик Google Chrome рассказывает о CSS-регионах на Google Developers SXSW (смотреть с 1:50:00):
