Статьи

Адаптивный веб-сайт с использованием Responsive Framework

В статье рассказывается о новой адаптивной структуре, разработанной одним из веб-разработчиков из России. Фреймворк основан на загрузке Twitter с некоторыми дополнительными функциями и улучшениями. Оригинальный разработчик подготовил для нас эту подготовительную статью, описывающую возможности этого фреймворка, поэтому давайте прочитаем, что об этом сказано.

Отзывчивая структура

Привет всем. Я разработчик внешнего интерфейса из России. Я начал создавать собственную структуру для адаптивного веб-дизайна. Это называется ResponsiveFramework (RF) . Я использовал идею Twitter Bootstrap (скорость и удобство), когда разрабатывал свой собственный фреймворк. Но у него есть несколько отличий от туберкулеза, давайте посмотрим подробнее.

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

Во-вторых. Многие анимированные элементы здесь. Они гладкие и быстрые. Я оптимизирую и выпускаю их, все время.

В третьих. Он содержит чистые компоненты JS и jQuery. Измените все, чтобы использовать чистый JS в моем списке дел.

В-четвертых. Здесь используются 3 самых популярных препроцессора: LESS, SASS / SCSS, Stylus. Вы можете использовать все, что использовали.

В этом основные отличия Twitter Bootstrap. Позвольте мне показать, как вы можете его использовать. Мы создадим адаптивную веб-страницу, используя RF. Он будет содержать меню, слайдер, контент (о нас и портфолио), форму обратной связи и контакты. Мы будем использовать только ResponsiveFramework. ResponsiveGrid используется для создания каркаса для нашей страницы.

Live Demo

Шаг 1. Заголовок.

Заголовок будет состоять из логотипа и меню. Логотип — это просто ссылка на страницу. ResponsiveMenu будет использоваться для создания меню. HTML код:

<div class="wrapper_header" id="home">
  <header class="container header">
    <a href="#home" class="logo"><h1>Responsive UX <span class="logo_item">template</span></h1></a>
    <nav id="wrapper_menu" class="wrapper_menu">
      <span id="icon_menu" class="position_right" data-effect="slide_top" data-menu="drop_down_block"> </span>
      <ul class="menu">
        <li class="menu_item">
          <a href="#about" class="menu_link">About<span class="line_bottom"> </span></a>
        </li>
        <li class="menu_item">
          <a href="#works_portfolio" class="menu_link">Works<span class="line_bottom"> </span></a>
        </li>
        <li class="menu_item">
          <a href="#feedback" class="menu_link">Feedback<span class="line_bottom"> </span></a>
        </li>
        <li class="menu_item">
          <a href="#contacts" class="menu_link">Contacts<span class="line_bottom"> </span></a>
        </li>
        <li class="menu_item wrapper_drop_down_block">
          <a href="#" class="menu_link">Pages</a>
          <ul class="drop_down_block">
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="shortcodes.html">Shortcodes</a></li>
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="blog.html">Blog</a></li>
          </ul>
        </li>
        <li class="menu_item wrapper_drop_down_block">
          <a href="#" class="menu_link">Portfolio</a>
          <ul class="drop_down_block">
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="portfolio3.html">3 Columns</a></li>
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="portfolio4.html">4 Columns</a></li>
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="dynamic_portfolio.html">Dynamic portfolio</a></li>
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="project.html">Single Project</a></li>
            <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="3dproject.html">3d Single Project</a></li>
          </ul>
        </li>
      </ul>
    </nav>
  </header>
</div>

Тег `nav` включает в себя селекторы` # icon_menu` и `.menu`. Селектор `icon_menu` будет использоваться в качестве меню на мобильных устройствах. Главное меню будет показано, когда пользователь нажмет `icon_menu`.

Давайте углубимся в меню. HTML код:

<nav id="wrapper_menu" class="wrapper_menu">
  <span id="icon_menu" class="position_right" data-effect="slide_top" data-menu="drop_down_block"> </span>
  <ul class="menu">
    <li class="menu_item">
      <a href="#about" class="menu_link">About<span class="line_bottom"> </span></a>
    </li>
    <li class="menu_item">
      <a href="#works_portfolio" class="menu_link">Works<span class="line_bottom"> </span></a>
    </li>
    <li class="menu_item">
      <a href="#feedback" class="menu_link">Feedback<span class="line_bottom"> </span></a>
    </li>
    <li class="menu_item">
      <a href="#contacts" class="menu_link">Contacts<span class="line_bottom"> </span></a>
    </li>
    <li class="menu_item wrapper_drop_down_block">
      <a href="#" class="menu_link">Pages</a>
      <ul class="drop_down_block">
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="shortcodes.html">Shortcodes</a></li>
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="blog.html">Blog</a></li>
      </ul>
    </li>
    <li class="menu_item wrapper_drop_down_block">
      <a href="#" class="menu_link">Portfolio</a>
      <ul class="drop_down_block">
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="portfolio3.html">3 Columns</a></li>
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="portfolio4.html">4 Columns</a></li>
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="dynamic_portfolio.html">Dynamic portfolio</a></li>
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="project.html">Single Project</a></li>
        <li class="drop_down_menu_item"><a class="drop_down_menu_link" href="3dproject.html">3d Single Project</a></li>
      </ul>
    </li>
  </ul>
</nav>

Тег `ul` — верхний уровень меню, он очень распространен. Давайте посмотрим на тег `span` с классом` line_bottom`. Этот тег украшает элементы меню. Когда пользователь наводит на пункт меню, пункт будет плавно подчеркнут.

Тег `ul` с классом` drop_down_block` представляет собой выпадающий список. Каждый список появляется, когда соответствующий элемент будет наведен курсором. Вот и все.

Шаг 2. Слайдер.

Для его построения мы будем использовать ResponsiveFullslider. HTML код:

<div id="slideshow">
  <span class="arrow prev"  id="leftControl"></span>
  <div id="slidesContainer" >
    <div id="slideInner">
      <div id="slide1" class="slide active_slide">
        <div class="layer scale icon_slide"></div>
        <p class="layer slide_info slide_right">
          I've seen the <span class="decor"> future</span>
        </p>
        <p class="layer slide_info slide_left paragraph_two">
          It's in my <span class="decor"> Browser</span>
        </p>
      </div>
      <div id="slide2" class="slide">
        <div class="layer slide_top icon_slide"></div>
        <p class="layer slide_info flipY">
          delightful<span class="decor"> animations</span>
        </p>
        <p class="layer slide_info slide_bottom paragraph_two">
          In your<span class="decor"> devices</span>
        </p>
      </div>
      <div id="slide3" class="slide">
        <div class="layer slide_bottom icon_slide"></div>
        <p class="layer slide_info slide_left">
          Create interactive<span class="decor"> interfaces</span>
        </p>
        <p class="layer slide_info scale paragraph_two">
          Bring joy
        </p>
      </div>
    </div>
  </div>
  <span class="arrow next"  id="rightControl"></span>
</div>

Мы создадим 3 слайдера, чтобы продемонстрировать, как это работает. Для каждого слайдера мы должны добавить атрибут id (slide1, slide2, slide3). Мы добавляем контент к этим слайдерам. Для анимации ползунков мы добавляем класс `layer` в слайдер и выбираем тип анимации. Здесь я использую `slide_left`,` slide_bottom`, `flipY`,` scale`, `slide_right`.

Также мы должны указать необходимые настройки в файле `fullslider.js`.

speed = '0.5s', // time animation
carusel = true, //endless scrolling
autoplay = false, //automatic beggining
time = 6000, // item changing time
src = 'images/', // background path (we don't use it in demo)
format = '.jpg', //background format (we don't use it in demo)

Шаг 3. Содержание.

Мы можем разделить этот шаг на две отдельные части:

1 — Здание «о нас»

2 — Здание «Портфолио»

Шаг 3.1. О нас.

Этот блок содержит 3 столбца. ResponsiveGrid снова работает. HTML код:

<section id="about" class="main_container columns3">
  <h3>About</h3>
  <p>
    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
  </p>
  <div class="main_container_item">
    <a href="#" class="hover_circle">
      <img class="img_post" src="images/designer.jpg" alt="designer" />
      <div class="wrapper_circle">
        <div class="circle">
          <span class="circle_item">Development of UX interfaces</span>
        </div>
      </div>
    </a>
    <h3 class="title_post">Design</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
  </div>
  <div class="main_container_item">

    <a href="#" class="hover_circle">
      <img class="img_post" src="images/frontenddev.jpg" alt="frontenddev" />
      <div class="wrapper_circle">
        <div class="circle">
          <span class="circle_item">Development of the high-loaded systems</span>
        </div>
      </div>
    </a>
    <h3 class="title_post">Development</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
  </div>
  <div class="main_container_item">
    <a href="#" class="hover_circle" id="hover_left_circle">
      <img class="img_post" src="images/seo.jpg" alt="seo" />
      <div class="wrapper_circle">
        <div class="circle">
          <span class="circle_item">SEO-analysts</span>
        </div>
      </div>
    </a>
    <h3 class="title_post">Analysts</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
  </div>
  <article class="skills">
    <h3>Skills</h3>
    <div class="skills_item">
      <div class="skill">HTML5/CSS3/JS</div>
      <div class="value blue"></div>
    </div>
    <div class="skills_item">
      <div class="skill">Design</div>
      <div class="value green"></div>
    </div>
    <div class="skills_item">
      <div class="skill">PHP/Ruby/Python</div>
      <div class="value yellow"></div>
    </div>
  </article>
</section>

Для выравнивания текста мы используем тег `selection` с классом` main_container`. Также мы добавляем класс `column3`, который говорит RF разделить его на 3 столбца. Так что просто создадим каркас для нашего контента. Мы также добавим анимацию (анимированный круг). ResponsiveHover делает все для нас. Тег `img` оборачивается тегом` a` с классом `hover_circle`. Добавьте тег `div` с классом` wrapper_circle` на том же уровне, что и тег `img`.

Шаг 3.2. Портфолио.

ResponsiveFilter используется для построения раздела портфолио. HTML код:

<section id="works_portfolio">
  <h2>Works</h2>
  <div id="type_products" class="type_products">
    <span id="category1" class="type_products_item">Web-design</span>
    <span id="category2" class="type_products_item">Back-end</span>
    <span id="category3" class="type_products_item">Front-end</span>
    <span id="all_category" class="type_products_item active_type">All</span>
  </div>
  <div id="all_production">
    <div class="production_item show_category wrapper_svg" data-id="category1">
      <svg width="300" height="225">
        <filter id="light"> 
          <feComponentTransfer>
            <feFuncR type="linear"  slope="2" />
            <feFuncG type="gamma" amplitude="2" exponent="1" />
            <feFuncB type="linear"  slope="1" />
            <feFuncA type="linear"  intercept ="1"/>
          </feComponentTransfer>
          <feColorMatrix  type="hueRotate" values="350" />
          </filter>
        <image x="0" y="0" width="300" height="225"  filter= "url(#light)" xlink:href="images/cat3.jpg" />
      </svg>
      <img  class="img_production"  src="images/cat3.jpg" alt="img" />
    </div>
  </div>
</section>

Здесь мы включаем файлы JS и CSS. После этого мы устанавливаем размеры блоков в CSS и стилизуем кнопку «Закрыть». Мы используем ResponsiveHover для анимации изображений.

Шаг 4. Форма обратной связи.

RF также имеет ResponsiveForm, и мы можем использовать его для создания формы обратной связи. HTML код:

<section id="feedback" class="wrapper_form">
  <h2>Feedback</h2>
  <form class="form" id="form_contact">
    <div class="left_column">
      <input type="text" id="full_name" name="full_name" class="input_text" placeholder="Name"  required />
      <input class="input_text" type="email" id="email"  name="email" placeholder="Email" required />
      <div id="rating" class="element_form">
        <div class="wrapper_stars">
          <span class="icon-star"></span>
          <span class="icon-star"></span>
          <span class="icon-star"></span>
          <span class="icon-star"></span>
          <span class="icon-star"></span>
          
        </div>
        <input type="hidden" id="total_rating" />
        <p>Your rating: <span id="total_value">0</span></p>
      </div>
    </div>
    <textarea class="input_text textarea" id="comment" name="comment" placeholder="Review" required></textarea>
    <button type="submit" id="button" class="button" disabled="disabled">send</button>
  </form>
</section>

Здесь мы включаем файлы JS и CSS для выбора рейтинга.

Шаг 5. Карта и нижний колонтитул.

Карта и нижний колонтитул были построены без RF, так как здесь нет необходимости.