• Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Открыть меню    

    Простая модульная сетка

    Модульная сетка представляет собой набор невидимых направляющих, вдоль которых располагаются элементы веб-страницы. Это облегчает размещение данных в документе, обеспечивает визуальную связь между отдельными блоками и сохраняет преемственность дизайна при переходе от одной страницы к другой.

    сетка Подавляющее большинство сайтов в той или иной мере используют сетку. Сайт может не иметь явную сеточную систему, но если каркас сайта имеет основной блок, смещенный влево, и правую колонку,смещенную вправо, то у этого сайта присутствует сетка.

    Пользователи, рассуждая о сложных макетах, представляют, как правило, что такие макеты должны иметь сеточную структуру. Они предполагают, что сетка это супер сложная вещь, которую лучше оставить CSS-ботаникам. Их идея укореняется, стоит лишь им взглянуть на запутанную систему сетки.

    Вот как я создаю сетки. Это и не трудно и не запутано. Проблем не возникнет, даже создавая сетку под "резиновый" сайт.

    Контекст

    Блочный элемент, ширина которого равна ширине родительского элемента (width: auto;). Мы можем сказать, что его ширина равна 100% . Это так называемая оболочка сетки, для ее воспроизведения воспользуемся тегом div.

    <div class="grid">
      <!-- 100% ширина -->
    </div>
    
    контекст сетки

    Колонки

    Давайте начнем с общих (популярных) требований: область с основным контентом будет занимать 2/3 ширины, а правая колонка 1/3 ширины. Под колонки нам необходимо создать два div с соответствующими классами:

     <div class="grid">
      <div class="col-2-3">
        Основной контент
      </div>
      <div class="col-1-3">
         Колонка (правая/левая)
      </div>
    </div>

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

    [class*='col-'] {
      float: left;
    }
    .col-2-3 {
      width: 66.66%;
    }
    .col-1-3 {
      width: 33.33%;
    }

    Отличные предпосылки для превосходной сетки.

    Очищающий метод

    Родительские элемент (контекст) будет иметь высоту равную 0px, так как его дети плавающие элемента. Давайте исправим это. Все что нам нужно - это очищающий хак:

    .grid:after {
      content: "";
      display: table;
      clear: both;
    }

    Канавки

    Одна из самых трудных частей сетки - канавки (промежутки, желоба и так далее). До сих пор для создания резиновой сетки мы использовали ширину, заданную в процентах. Мы могли бы совсем погрузиться в математику и использовать проценты для канавок, но лично мне больше нравятся канавки с фиксированной шириной (в пикселях).

    Первый шаг: я буду использовать объявление box-sizing: border-box; мне нравится использовать это объявление везде.

    *, *:after, *:before {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    Свойство box-sizing применяется для изменения алгоритма расчета ширины и высоты элемента.
    Значение border-box:
    свойства width и height включают в себя значения отступов и границ, но не полей (margin)

    Теперь, если мы установим ширину, ширина элемента останется нетронутой, даже, несмотря на изменение отступов или границ (лучше всего понять на примере: откройте firebug, для элемента .grid установите ширину 1000px, посмотрите на изменение размеров дочерних блоков).

    Шаг второй: установите фиксированный правый отступ для всех колонок, кроме последней колонки.

     [class*='col-'] {
      padding-right: 20px;
    }
    [class*='col-']:last-of-type {
      padding-right: 0;
    }
    канавки

    Базовые канавки готовы.

    Внешние промежутки

    Нужны внешние промежутки? Для этого я использую дополнительный класс:

    <div class="grid grid-pad">
      Сетка с внешними канавками
    </div>

    Шаг первый: добавьте левый отступ элементу с классом grid (и опционально верхний и нижний отступ).

    .grid-pad {
      padding: 20px 0 20px 20px;
    }

    Шаг второй: восстановите правый отступ у последней колонки

    .grid-pad > [class*='col-']:last-of-type {
      padding-right: 20px;
    }
    внешние канавки

    Регулируем число колонок

    Очень просто:

    .col-1-2 {
      width: 50%;
    }
    .col-1-4 {
      width: 25%;
    }
    .col-1-8 {
      width: 12.5%;
    }

    Делайте все что хотите. Не забывайте, что общая сумма классов должна быть равна единичке. На приведенном ниже изображении это отчетливо видно.

    регулируем число колонок

    Sass

    Здесь я это не использую, но все становится еще более кратким при использовании SCSS/Compass.

    * {
      @include box-sizing(border-box);
    }
    
    $pad: 20px;
    
    .grid {
      background: white;
      margin: 0 0 $pad 0;
      
      &:after {
        /* Or @extend clearfix */
        content: "";
        display: table;
        clear: both;
      }
    }
    
    [class*='col-'] {
      float: left;
      padding-right: $pad;
      .grid &:last-of-type {
        padding-right: 0;
      }
    }
    .col-2-3 {
      width: 66.66%;
    }
    .col-1-3 {
      width: 33.33%;
    }
    .col-1-2 {
      width: 50%;
    }
    .col-1-4 {
      width: 25%;
    }
    .col-1-8 {
      width: 12.5%;
    }
    
    /* Opt-in outside padding */
    .grid-pad {
      padding: $pad 0 $pad $pad;
      [class*='col-']:last-of-type {
        padding-right: $pad;
      }
    }

    Модули

    При работе с сеткой лучше всего использовать модули. При помощи модулей вы сможете разбить блок на несколько частей. Также, регулируя отступы у каждого модуля в отдельности, вы сможете расположить (отодвинуть) текст как угодно.

    <div class="grid">
      <div class="col-2-3">
         <article class="module">
            stuff
         </article>
         <article class="module">
            stuff
         </article>
      </div>
      <div class="col-1-3">
        <aside class="module">
           Sidebar stuff. Sub modules?
        </aside>
      </div>
    </div>

    Поддержка браузерами

    Работает отлично, начиная с IE8 и выше. Один момент, если вам требуется поддержка браузера IE7 - используйте что-то другое.

    По совокупности мне думается, что использовать данную сетку можно будет через год.

    Результат:

    Источник

    Комментарии к статье