Инструменты пользователя

Инструменты сайта

  • Показать страницу
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • software:development:demo:responsive_site_layout

    Различия

    Показаны различия между двумя версиями страницы.

    Ссылка на это сравнение

    Предыдущая версия справа и слеваПредыдущая версия
    Следующая версия
    Предыдущая версия
    software:development:demo:responsive_site_layout [2023/09/06 11:06] – [7. Стили для шапки и её содержимого] vladpolskiysoftware:development:demo:responsive_site_layout [2024/01/26 21:19] (текущий) – [Пример сайта] vladpolskiy
    Строка 2: Строка 2:
     Адаптивная верстка сайта (от английского, responsive web design, иногда — adaptive web design) — это создание структуры HTML-документа на базе HTML-разметки, предусматривающей автоматическую адаптацию веб-страницы в зависимости от размера экрана устройства пользователя. Иными словами - это макет веб-страницы, автоматически подстраивающийся под размер экрана разнообразных гаджетов пользователя, таких как планшеты и смартфоны.  Адаптивная верстка сайта (от английского, responsive web design, иногда — adaptive web design) — это создание структуры HTML-документа на базе HTML-разметки, предусматривающей автоматическую адаптацию веб-страницы в зависимости от размера экрана устройства пользователя. Иными словами - это макет веб-страницы, автоматически подстраивающийся под размер экрана разнообразных гаджетов пользователя, таких как планшеты и смартфоны. 
     {{:software:development:demo:blender3d_demo_0.jpg?550 |}} В адаптивной вёрстка предполагается использование современных технологий, делающих основные элементы, изменяющими свой размер и расположение на странице, исходя из ширины окна. При этом отсутствуют и полосы прокрутки. Для просмотра контента достаточно просто листать страницы вниз. Для отображения на смартфонах и планшетах лишние элементы отсеивают: убирают графические объекты, сворачивают меню, оставляя только самые значимые блоки. Параллельно увеличивается размер элементов управления, чтобы нужную кнопку без труда можно было нажать пальцем, ведь на обычном сайте попасть по ссылке с первого раза удается не всегда. Все это достигается с помощью медиа-запросов, которые лежат в основе данной технологии, меняют масштаб элементов, а CSS свойства дают полную свободу действий, управляя компоновкой и расположением блоков на странице, автоматически преобразуя шаблон. {{:software:development:demo:blender3d_demo_0.jpg?550 |}} В адаптивной вёрстка предполагается использование современных технологий, делающих основные элементы, изменяющими свой размер и расположение на странице, исходя из ширины окна. При этом отсутствуют и полосы прокрутки. Для просмотра контента достаточно просто листать страницы вниз. Для отображения на смартфонах и планшетах лишние элементы отсеивают: убирают графические объекты, сворачивают меню, оставляя только самые значимые блоки. Параллельно увеличивается размер элементов управления, чтобы нужную кнопку без труда можно было нажать пальцем, ведь на обычном сайте попасть по ссылке с первого раза удается не всегда. Все это достигается с помощью медиа-запросов, которые лежат в основе данной технологии, меняют масштаб элементов, а CSS свойства дают полную свободу действий, управляя компоновкой и расположением блоков на странице, автоматически преобразуя шаблон.
    -Данная статья рассматривает применение адаптивной резиновой вёрстки при создании главной страницы.+Данная статья рассматривает применение адаптивной резиновой вёрстки при создании главной страницы. Основные примеры создания приведены в статье [[software:development:web:docs:learn:css:css_layout:responsive_design|Отзывчивый дизайн]].
      
     =====Шаблон страницы при верстки===== =====Шаблон страницы при верстки=====
    Строка 28: Строка 28:
      
     =====Пример сайта===== =====Пример сайта=====
    -Пример сайта выполненного в [[https://book51.ru/wiki/demo/code/blender3d_demo.html|адаптивной вёрстке]] можно посмотреть в разделе пример или перейдя по  [[https://book51.ru/wiki/demo/code/blender3d_demo.html|ссылке]]. для понимания примера необходимо сузить просматриваемую страницу в браузере или просмотреть на компьютере и в браузере мобильного устройства.+Пример сайта выполненного в [[https://book51.ru/demo/code/blender3d_demo.html|адаптивной вёрстке]] можно посмотреть в разделе пример или перейдя по  [[https://book51.ru/demo/code/blender3d_demo.html|ссылке]]. для понимания примера необходимо сузить просматриваемую страницу в браузере или просмотреть на компьютере и в браузере мобильного устройства.
      
     <html> <html>
    Строка 304: Строка 304:
     :# :#
     ====6. Общие CSS-стили==== ====6. Общие CSS-стили====
    -Общие стилисброс стилей браузера по умолчанию:+Все нижеприведенные стили вынесены в один внешний файл CSS.
      
     <code css CSS> <code css CSS>
     +/*сброс стилей браузера по умолчанию. */
     *, *:after, *:before { *, *:after, *:before {
        box-sizing: border-box;/*ширины и высоты элемента(width и height = значения полей и границ, но не отступов (margin))*/    box-sizing: border-box;/*ширины и высоты элемента(width и height = значения полей и границ, но не отступов (margin))*/
    Строка 352: Строка 353:
     </code> </code>
      
    -====7. Стили для шапки и её содержимого====+====7. Стили содержимого блока header ====
      
     <code css CSS> <code css CSS>
    Строка 462: Строка 463:
     </code> </code>
      
    -====8. Стили для блока с основным содержимым====+====8. Стили содержимого блока main====
      
      
    Строка 468: Строка 469:
     /* левый контейнер */ /* левый контейнер */
     .posts-list { .posts-list {
    -   margin-bottom: 30px; +   margin-bottom: 30px;/*отступ от нижнего края элемента*/ 
    -   width: 64%; +   width: 64%;/*ширина блока*/ 
    -   float: left;+   float: left;/*элемент выравнивается по левой стороне*/
     } }
     /* блок для статьи */ /* блок для статьи */
     .post { .post {
    -   margin-bottom: 35px;+   margin-bottom: 35px;/*отступ от нижнего края элемента*/
     } }
     .post-content p { .post-content p {
    -   line-height: 1.5; +   line-height: 1.5;/*межстрочный интервал текста*/ 
    -   padding-bottom: 1em;+   padding-bottom: 1em;/*значение поля от нижнего края содержимого элемента*/
     } }
     .post-image { .post-image {
    -   margin-bottom: 30px;+   margin-bottom: 30px;/*отступ от нижнего края элемента*/
        box-shadow: 3px 3px 0 0 #c0c0c0;/* цвет тени картинки поста */    box-shadow: 3px 3px 0 0 #c0c0c0;/* цвет тени картинки поста */
     } }
     .category { .category {
    -   margin-bottom: 15px;+   margin-bottom: 15px;/*отступ от нижнего края элемента*/
     } }
     .category a { .category a {
    -   color: #d3d3d3; +   color: #d3d3d3; /*цвет текста категорий в поле анонса под картинкой #d3d3d3 - бороды абдель-керима*/ 
    -   text-transform: uppercase;+   text-transform: uppercase;/*все символы текста становятся прописными (верхний регистр)*/
     } }
     .post-title { .post-title {
    -   margin-bottom: 12px; +   margin-bottom: 12px;/*отступ от нижнего края элемента*/ 
    -   font-size: 26px;+   font-size: 26px;/* размер шрифта элемента */
     } }
     /* блок с кнопкой "продолжить чтение" и кнопками социальных сетей */ /* блок с кнопкой "продолжить чтение" и кнопками социальных сетей */
    Строка 499: Строка 500:
        border-top: 1.5px solid #2f4f4f;/* цвет и размер верхней полосы разделителей блока "продолжить чтение" */    border-top: 1.5px solid #2f4f4f;/* цвет и размер верхней полосы разделителей блока "продолжить чтение" */
        border-bottom: 1.5px solid #2f4f4f;/* цвет и размер нижней полосы разделителей блока "продолжить чтение" */    border-bottom: 1.5px solid #2f4f4f;/* цвет и размер нижней полосы разделителей блока "продолжить чтение" */
    -   position: relative;+   position: relative;/*положение элемента устанавливается относительно его исходного места*/
        margin-top: 10px;/*отступ блока от текста-контента*/    margin-top: 10px;/*отступ блока от текста-контента*/
     } }
     .more-link { .more-link {
    -   position: relative; +   position: relative;/*положение элемента устанавливается относительно его исходного места*/ 
    -   display: inline-block; +   display: inline-block;/*элемент обтекает другими  элементами страницы*/ 
    -   font-size: 10px; +   font-size: 10px;/* размер шрифта элемента */ 
    -   text-transform: uppercase; +   text-transform: uppercase;/*все символы текста становятся прописными (верхний регистр)*/ 
    -   color: white; +   color: white;/*цвет шрифта надписи "Продолжить чтение" white; белый*/ 
    -   line-height: 34px;/блока блока "продолжить чтение" */ +   line-height: 34px;/*межстрочный интервал между линиями блока "продолжить чтение" */ 
    -   padding: 0 20px;+   padding: 0 20px;/* значение полей вокруг содержимого*/
        background: #2f4f4f;/* цвет фона блока "продолжить чтение" */    background: #2f4f4f;/* цвет фона блока "продолжить чтение" */
        letter-spacing: 0.1em;    letter-spacing: 0.1em;
    Строка 516: Строка 517:
     .more-link:after { .more-link:after {
        content: '';    content: '';
    -   display: block; +   display: block;/*элемент показывается как блочный*/ 
    -   position: absolute; +   position: absolute;/*указывает, что элемент абсолютно позиционирован*/ 
    -   width: 0; +   width: 0;/*ширина блока*/ 
    -   height: 0; +   height: 0;/*высота блочного элемента*/ 
    -   top: 0; +   top: 0;/*расстояние от верхнего края родительского элемента*/ 
    -   right: 0; +   right: 0;/*расстояние от правого края родительского элемента*/ 
    -   border: solid transparent;+   border: solid transparent;/*бордюр жирный прозрачный*/
        border-width: 17px 25px;/*высота и длина  треугольника блока "продолжить чтение" */    border-width: 17px 25px;/*высота и длина  треугольника блока "продолжить чтение" */
        border-left-color: #2f4f4f;/* цвет фона треугольника блока "продолжить чтение" */    border-left-color: #2f4f4f;/* цвет фона треугольника блока "продолжить чтение" */
    -   transform: translateX(100%);+   transform: translateX(100%);/*сдвиг элемента по горизонтали влево на указанное значение*/
     } }
     .post-social { .post-social {
    -   position: absolute; +   position: absolute;/*указывает, что элемент абсолютно позиционирован*/ 
    -   left: auto; +   left: auto;/*расстояние от левого края родительского элемента расчитывается браузером*/ 
    -   top: 50%; +   top: 50%;/*расстояние от верхнего края родительского элемента*/ 
    -   right: 0; +   right: 0;/*расстояние от правого края родительского элемента*/ 
    -   text-align: right; +   text-align: right;/*горизонтальное выравнивание текста в пределах элемента*/ 
    -   transform: translateY(-50%); +   transform: translateY(-50%);/*сдвиг элемента по горизонтали вправо на указанное значение*/ 
    -   padding: 0; +   padding: 0;/* значение полей вокруг содержимого*/ 
    -   font-size: 12px;+   font-size: 12px;/* размер шрифта элемента */
     } }
     .post-social a { .post-social a {
    -   display: inline-block; +   display: inline-block;/*элемент обтекает другими  элементами страницы*/ 
    -   margin-left: 8px;+   margin-left: 8px;/*отступ от левого края элемента*/
        color: #2f4f4f;/* цвет фона иконок соц сетей в блока "продолжить чтение" */    color: #2f4f4f;/* цвет фона иконок соц сетей в блока "продолжить чтение" */
    -   width: 25px; +   width: 25px;/*ширина блока*/ 
    -   height: 25px; +   height: 25px;/*высота блочного элемента*/ 
    -   line-height: 23px; +   line-height: 23px;/*межстрочный интервал*/ 
    -   text-align: center; +   text-align: center;/*горизонтальное выравнивание текста в пределах элемента*/ 
    -   border-radius: 50%; +   border-radius: 50%;/*радиус скругления уголков рамки*/ 
    -   border: 1px solid;+   border: 1px solid; /*размер бордюра 1px жирный*/
     } }
     </code> </code>
      
    -====9. Стили для боковой колонки====+====9. Стили блока aside====
      
     <code css CSS> <code css CSS>
     /* правый контейнер */ /* правый контейнер */
     aside { aside {
    -   width: 33%; +   width: 33%;/*ширина блока*/ 
    -   float: right;+   float: right;/*элемент выравнивается по правой стороне*/
     } }
     /* блок для виджетов */ /* блок для виджетов */
     .widget { .widget {
    -   padding: 20px 15px;+   padding: 20px 15px;/* значение полей вокруг содержимого*/
        background: #dcdcdc;/* цвет блока для виджетов */    background: #dcdcdc;/* цвет блока для виджетов */
    -   font-size: 13px; +   font-size: 13px;/* размер шрифта элемента */ 
    -   margin-bottom: 30px;+   margin-bottom: 30px;/*отступ от нижнего края элемента*/
        box-shadow: 4px 4px 2px rgba(0, 0, 0, .05);/* тень рамки блоков */    box-shadow: 4px 4px 2px rgba(0, 0, 0, .05);/* тень рамки блоков */
     } }
    Строка 570: Строка 571:
        padding: 10px;/* значение полей вокруг содержимого*/    padding: 10px;/* значение полей вокруг содержимого*/
        margin-bottom: 10px;/* отступ от рамки блоков */    margin-bottom: 10px;/* отступ от рамки блоков */
    -   text-align: center;/положение текста блоков */+   text-align: center;/*горизонтальное выравнивание текста в пределах элемента*/
        border: 2px solid #2f4f4f;/* цвет рамки категорий */    border: 2px solid #2f4f4f;/* цвет рамки категорий */
        box-shadow: 3px 3px 0 0 #c0c0c0;/* цвет тени блока категорий */    box-shadow: 3px 3px 0 0 #c0c0c0;/* цвет тени блока категорий */
    Строка 581: Строка 582:
     } }
     .widget-category-list li:last-child { .widget-category-list li:last-child {
    -   border-bottom: none;+   border-bottom: none;/*толщина, стиль и цвет границы внизу элемента отсутствует*/
     } }
     .widget-category-list li a { .widget-category-list li a {
    Строка 590: Строка 591:
     .widget-category-list li a:before { .widget-category-list li a:before {
        content: "\f105"; /* стрелки перед текстом наименований категорий постов*/    content: "\f105"; /* стрелки перед текстом наименований категорий постов*/
    -   display: inline-block; +   display: inline-block;/*элемент обтекает другими  элементами страницы*/ 
    -   font-family: 'FontAwesome'; +   font-family: 'FontAwesome';/*шрифты колекции иконок FontAwesome*/ 
    -   margin-right: 10px;+   margin-right: 10px;/*отступа от правого края элемента*/
        color: #2f4f4f;/* цвет стрелки перед текстом наименований категорий постов*/    color: #2f4f4f;/* цвет стрелки перед текстом наименований категорий постов*/
     } }
    Строка 600: Строка 601:
     } }
     .widget-posts-list li:nth-child(1) { .widget-posts-list li:nth-child(1) {
    -   border-top: none;+   border-top: none;/* цвет и размер полос разделителей блока постов отсутствует*/
     } }
     .post-image-small { .post-image-small {
    -   width: 60%; /*размер картинки*/ +   width: 60%; /*размер - ширина картинки*/ 
    -   float: left;/*положение картинки*/+   float: left;/*положение картинки -элемент выравнивается по левой стороне*/
        margin-right: 15px;/*отступ от правого края картинки*/    margin-right: 15px;/*отступ от правого края картинки*/
        box-shadow: 3px 3px 0 0 #c0c0c0;/* цвет тени картинки */    box-shadow: 3px 3px 0 0 #c0c0c0;/* цвет тени картинки */
     } }
     .widget-post-title { .widget-post-title {
    -   float: left;+   float: left;/*элемент выравнивается по левой стороне*/
     } }
     </code> </code>
      
    -====10. Стили для нижнего колонтитула====+====10. Стили блока footer====
     Подвал сайта разделим на три равных столбца: Подвал сайта разделим на три равных столбца:
      
     <code css CSS> <code css CSS>
     footer { footer {
    -   padding: 20px 0; +   padding: 20px 0;/* значение полей вокруг содержимого*/ 
    -   background: #3C3D41; +   background: #3C3D41;/*цвет фона подвала #3C3D41 - сланцево-серый*/ 
    -   color: white;+   color: white;/*цвет шрифта подвала #write - белый*/
     } }
     .footer-col { .footer-col {
    -   width: 100%; +   width: 100%;/*ширина блока растянута на всю страницу*/ 
    -   float: left; +   float: left;/*элемент выравнивается по левой стороне*/
    -+
    -.footer-col a { +
    -   color: white;+
     } }
     </code> </code>
    Строка 634: Строка 632:
      
     <code css CSS> <code css CSS>
    -@media (max-width: 768px) {+@media (max-width: 768px) {/* правило запроса для ширины viewport от 768px*/
        /* показываем кнопку для переключения верхней навигации */    /* показываем кнопку для переключения верхней навигации */
        .nav-toggle {    .nav-toggle {
    -      display: block;+      display: block;/*элемент показывается как блочный*/
        }    }
        header {    header {
    -      padding: 10px 0;+      padding: 10px 0;/* значение полей вокруг содержимого*/
        }    }
        /* скрываем верхнее меню, отменяем обтекание, позиционируем его, сместив на высоту шапки сайта */    /* скрываем верхнее меню, отменяем обтекание, позиционируем его, сместив на высоту шапки сайта */
        #menu {    #menu {
    -      max-height: 0; +      max-height: 0;/*высота блочного элемента*/ 
    -      background: white+      background: #2f4f4f;/*цвет фона кнопок мобильного меню #2f4f4f - аспидно-серый*/ 
    -      float: none; +      float: none;/*выравнивание элемента отсутствует*/ 
    -      position: absolute; +      position: absolute;/*указывает, что элемент абсолютно позиционирован*/ 
    -      overflow: hidden; +      overflow: hidden;/*отображается только область внутри элемента, остальное скрыто*/ 
    -      top: 63px; +      top: 63px;/*расстояние от верхнего края родительского элемента*/ 
    -      right: 0; +      right: 0;/*расстояние от правого края родительского элемента*/ 
    -      left: 0; +      left: 0;/*расстояние от левого края родительского элемента*/ 
    -      margin: 0; +      margin: 0;/*значение отступа от каждого края элемента*/ 
    -      padding: 0; +      padding: 0;/* значение полей вокруг содержимого*/ 
    -      z-index: 3;+      z-index: 3;/*налажение элементов друг на друга в определенном порядке*/
        }    }
        /* делаем элементы списка блочными, чтобы они располагались друг под другом */    /* делаем элементы списка блочными, чтобы они располагались друг под другом */
        #menu li {    #menu li {
    -      display: block; +      display: block;/*элемент показывается как блочный*/ 
    -      text-align: center; +      text-align: center;/*горизонтальное выравнивание текста в пределах элемента*/ 
    -      border-bottom: 1px solid black; +      border-bottom: 1px solid black;/*толщина 1px стиль жирный и цвет границы черный внизу элемента*/ 
    -      margin-right: 0;+      margin-right: 0;/*отступа от правого края элемента*/
        }    }
        /* отменяем обтекание левой и правой колонок, устанавливаем им ширину 100%*/    /* отменяем обтекание левой и правой колонок, устанавливаем им ширину 100%*/
        .posts-list, aside {    .posts-list, aside {
    -      width: 100%; +      width: 100%;/*ширина блока растянута на всю страницу*/ 
    -      float: none;+      float: none;/*выравнивание элемента отсутствует*/
        }    }
        .widget-post-title {    .widget-post-title {
    -      font-size: 1.5em;+      font-size: 1.5em;/* размер шрифта элемента */
        }    }
     } }
      
    -@media (max-width: 480px) {+@media (max-width: 480px) {/* правило запроса для ширины viewport от 480px*/
        /* отменяем обтекание для логотипа и выравниваем по центру*/    /* отменяем обтекание для логотипа и выравниваем по центру*/
        .logo {    .logo {
    -      float: none; +      float: none;/*выравнивание элемента отсутствует*/ 
    -      margin: 0 auto 15px; +      margin: 0 auto 15px;/*значение отступа от каждого края элемента*/ 
    -      display: table;+      display: table;/*представление -блочная таблица*/
        }    }
        .logo span {    .logo span {
    -      margin: 0 2px;+      margin: 0 2px;/*значение отступа от каждого края элемента*/
        }    }
        /* позиционируем меню на увеличившуюся высоту шапки */    /* позиционируем меню на увеличившуюся высоту шапки */
        #menu {    #menu {
    -      top: 118px;+      top: 118px;/*расстояние от верхнего края родительского элемента*/
        }    }
        /* позиционируем форму поиска по левому краю */    /* позиционируем форму поиска по левому краю */
        #searchform {    #searchform {
    -      float: left; +      float: left;/*элемент выравнивается по левой стороне*/ 
    -      margin-left: 0;+      margin-left: 0;/*отступ от левого края элемента*/
        }    }
        /* убираем верхнюю и нижнюю границы и выравниваем кнопку по центру */    /* убираем верхнюю и нижнюю границы и выравниваем кнопку по центру */
        .post-footer {    .post-footer {
    -      border-top: none; +      border-top: none;/* толщина, стиль и цвет границы сверху элемента отсутствует*/ 
    -      border-bottom: none; +      border-bottom: none;/*толщина, стиль и цвет границы внизу элемента отсутствует*/ 
    -      text-align: center;+      text-align: center;/*горизонтальное выравнивание текста в пределах элемента*/
        }    }
        /* отменяем позиционирование кнопок соцсетей */    /* отменяем позиционирование кнопок соцсетей */
        .post-social {    .post-social {
    -      position: static; +      position: static;/*элемент отображаются как обычно*/ 
    -      text-align: center; +      text-align: center;/*горизонтальное выравнивание текста в пределах элемента*/ 
    -      transform: none; +      transform: none;/*трансформации элемента нет*/ 
    -      margin-top: 20px;+      margin-top: 20px;/*отступ блока от текста-контента*/
        }    }
        .widget-post-title {    .widget-post-title {
    -      font-size: 1.2em;+      font-size: 1.2em;/* размер шрифта элемента */
        }    }
        /* отменяем обтекание для столбцов подвала страницы */    /* отменяем обтекание для столбцов подвала страницы */
        .footer-col {    .footer-col {
    -      float: none; +      float: none;/*выравнивание элемента отсутствует*/ 
    -      margin-bottom: 20px; +      margin-bottom: 20px;/*отступ от нижнего края элемента*/ 
    -      width: 100%; +      width: 100%;/*ширина блока растянута на всю страницу*/ 
    -      text-align: left;+      text-align: left;/*горизонтальное выравнивание текста в пределах элемента*/
        }    }
     } }
    Строка 739: Строка 737:
       $('#menu').toggleClass('active');   $('#menu').toggleClass('active');
     });%%** <color #22b14c>- в теле **%%<header>%%** -> таблицы стиля CSS **%%.nav-toggle%%** -> блока скрытого меню **%%<div class="nav-toggle"><span></span></div>%%** имеет значение таблицы стиля CSS **%%display: none;%%** (т.е. скрыт по умолчанию и появляющейся при ширине странице меньше 768px) -> нажатие кнопки блока показа/скрытия главного меню -> стиль CSS **%%#menu%%** активный, т.е. будет показано скрытое меню -> (стиль CSS **%%#menu.active%%**).</color> });%%** <color #22b14c>- в теле **%%<header>%%** -> таблицы стиля CSS **%%.nav-toggle%%** -> блока скрытого меню **%%<div class="nav-toggle"><span></span></div>%%** имеет значение таблицы стиля CSS **%%display: none;%%** (т.е. скрыт по умолчанию и появляющейся при ширине странице меньше 768px) -> нажатие кнопки блока показа/скрытия главного меню -> стиль CSS **%%#menu%%** активный, т.е. будет показано скрытое меню -> (стиль CSS **%%#menu.active%%**).</color>
    - 
     :# :#
     +====14. Архив файлов примера==== 
     +Все файлы данного примера включая все скрипты и таблицы шрифтов и иконок упакованы в архив и доступны для скачивания.\\   
     +<color #ed1c24>Вам необходимо поменять пути к файлам, согласно будущего месторасположения папок и файлов на вашем сервере.</color>\\   
     +{{ :software:development:demo:code.rar |rar arhiv 71,8mb}}
      
    software/development/demo/responsive_site_layout.1693987601.txt.gz · Последнее изменение: 2023/09/06 11:06 — vladpolskiy