Spec-Zone.ru › jQuery Mobile

Гибкая сетка

Гибкая сеткаверсия добавлена: 1.3

Описание: Гибкие макетные сетки

Гибкие сетки

При использовании макетных сеток для создания полноразмерных макетов может быть целесообразно применять принципы адаптивного веб-дизайна (RWD), чтобы макет адаптировался к различным ширинам экрана.

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

Создание адаптивных сеток

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

Мы обычно рекомендуем начинать с подхода «сначала мобильная версия» для медиазапросов: начинать с стилей, которые применяются к самым маленьким размерам экрана в основных стилях виджета, а затем постепенно добавлять точки останова до больших экранов с помощью min-width медиазапросов.

Однако в случае сеток мы можем использовать max-width медиазапрос, чтобы применять стили выстроенной в стопку сетки только ниже точки останова ширины. Это позволяет использовать все стандартные стили сетки, но просто корректировать их при узких ширинах.

Без пользовательских стилей наша сетка будет иметь 3 колонки на всех ширинах экрана:

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

Чтобы сделать это адаптивным, начните с добавления класса my-breakpoint к контейнеру сетки, который ссылается на пользовательскую точку останова в вашем пользовательском стиле:

<div class="ui-grid-b my-breakpoint">
  <div class="ui-block-a">Block A</div>
  <div class="ui-block-b">Block B</div>
  <div class="ui-block-c">Block C</div>
</div><!-- /grid-b -->

Добавление точки останова выстраивания в стопку при узких ширинах

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

В ваших медиазапросах используйте единицы em вместо пикселей, чтобы медиазапрос учитывал размер шрифта помимо ширины экрана. Для вычисления ширины экрана в единицах em разделите целевую ширину в пикселях на 16, что является стандартным размером шрифта тела.

@media all and (max-width: 50em) {
  .my-breakpoint .ui-block-a,
  .my-breakpoint .ui-block-b,
  .my-breakpoint .ui-block-c,
  .my-breakpoint .ui-block-d,
  .my-breakpoint .ui-block-e {
    width: 100%;
    float:none;
  }
}

В этом медиазапросе мы устанавливаем ширину в 100% и отменяем свойство float, чтобы блоки сетки выстраивались в стопку ниже ширины 50em. Эти правила применяются ко всем типам сеток путем объединения селекторов для всех классов сеток от ui-block-a до ui-block-e в стилях.

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

Добавление точки останова для широких экранов для изменения соотношений

Продолжая пример выше, мы можем добавить дополнительную точку останова, чтобы изменить ширины, чтобы первая колонка занимала 50% ширины, а две другие — по 25% выше 75em (1200 пикселей), добавив дополнительный min-width медиазапрос для изменения ширин в нашем пользовательском стиле, как показано ниже:

@media all and (min-width: 75em) {
  .my-breakpoint.ui-grid-b .ui-block-a { width: 49.95%; }
  .my-breakpoint.ui-grid-b .ui-block-b,
  .my-breakpoint.ui-grid-b .ui-block-c { width: 24.925%; }
  .my-breakpoint.ui-grid-b .ui-block-a { clear: left; }
  }
}

Обратите внимание на немного меньшие ширины, установленные для решения проблем с округлением на разных платформах.

Применение готовой точки останова

Хотя мы настоятельно рекомендуем писать пользовательские точки останова самостоятельно, в фреймворке есть одна предварительно настроенная точка останова, которая ориентируется на стиль выстраивания в стопку для небольших телефонов и переключается на многоколоночное представление на больших телефонах, планшетах и настольных компьютерах.

Чтобы использовать эту предварительно настроенную точку останова, добавьте класс ui-responsive к контейнеру сетки, чтобы применить выстраивание в стопку ниже 560px (35em). Если эта точка останова не подходит для вашего контента, мы рекомендуем создать пользовательскую точку останова, как описано выше.

<div class="ui-grid-b ui-responsive">

Это стандартные сетки, которые сделаны адаптивными с помощью ui-responsive класса для контейнера сетки:

Сетка A (50/50)

Сетка B (33/33/33)

Сетка C (25/25/25/25)

Сетка D (20/20/20/20/20)

Пример:

Базовый пример адаптивных сеток

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>responsive-grid demo</title>
  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
  <style>
    @media all and (max-width: 35em) {
    .my-breakpoint .ui-block-a,
    .my-breakpoint .ui-block-b,
    .my-breakpoint .ui-block-c,
    .my-breakpoint .ui-block-d,
    .my-breakpoint .ui-block-e {
      width: 100%;
      float:none;
    }
  }
 
  @media all and (min-width: 45em) {
    .my-breakpoint.ui-grid-b .ui-block-a { width: 49.95%; }
    .my-breakpoint.ui-grid-b .ui-block-b,
    .my-breakpoint.ui-grid-b .ui-block-c { width: 24.925%; }
  }
  </style>
</head>
<body>
<div data-role="header">
    <h1>Responsive Grid Example</h1>
  </div>
  <div role="main" class="ui-content">
    <div class="ui-grid-b my-breakpoint">
      <div class="ui-block-a"><div class="ui-body ui-body-d">Block A</div></div>
      <div class="ui-block-b"><div class="ui-body ui-body-d">Block B</div></div>
      <div class="ui-block-c"><div class="ui-body ui-body-d">Block C</div></div>
    </div>
</body>
</html>

Демонстрация:

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquerymobile.com/responsive-grid

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API