DmitryPavlov

Первая верстка с помощью flexbox.

    Рекомендуемые сообщения

    DmitryPavlov

    Приветствую. Снова.

    Сайт — http://flexboxtryfirst.16mb.com/

    Макет — https://yadi.sk/i/2xULK9O9tjq4R

    Сайт выглядит одинаково почти во всех браузерах, кроме любимого IE. Валидация HTML и CSS пройдена без ошибок.

    769 - 1024

    (max-width: 1024px) and (min-width: 769px)

    Мобильная версия сайта

    (max-width: 480px) and (min-width: 320px)

    Прошу!

    1. Указать на ошибки в использовании Flexbox. (Правильно ли я вообще использовал flexbox?)
    2. Указать на различия между версткой и макетом.
    3. Высказать свое субъективное мнение по поводу верстки в общем. Что стоит изменить или как делать не нужно.
    4. Да и вообще указать на любые ошибки.

    Жду любую критику)

    Спасибо!

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

    Изменено пользователем DmitryPavlov

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    alexriz
    3 часа назад, DmitryPavlov сказал:

    Указать на ошибки в использовании Flexbox. (Правильно ли я вообще использовал flexbox?)

    Можно избавиться от .wrapper. Он у тебя, по сути, ничего не ограничивает. На первом этапе, все что обвязано на .wrapper, можно смело перенести на body. Вообще, строго говоря, прменение на этом участке flexbox, не обязательно. А в режиме flex-direction: row; flex-wrap: wrap; вообще не много странно. Окей, если на флексах, то тогда, для начала, стоит переключиться в режим flex-direction: column;, у тебя ведь корневые секции колонкой идут, вот и выстраивай их по колонке. flex-wrap оставить в состоянии по умолчанию nowrap. Так это будет более складно. В твоем случае это бесполезно, но есть задача, когда нужно прижимать футер к полу, если недостаточно контента при этом футер должен быть способным растягиваться по контенту, то есть нефиксированной высоты. Вот так, например https://jsfiddle.net/alexriz/kdcjo2oo/

     

    3 часа назад, DmitryPavlov сказал:

    Указать на различия между версткой и макетом.

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

    YkgbaccqCgeJYFJOkv1bURYFO3UCEg.png

    3 часа назад, DmitryPavlov сказал:

    Высказать свое субъективное мнение по поводу верстки в общем. Что стоит изменить или как делать не нужно.

    Вцелом все очень неплохо, код чистый, именования понятные, читабельные. Стилистика указания классов понятная. Для основных header и footer, стоит тоже прописать классы и стилизировать по ним, а не по селектору тега. Так как, технически теги header и footer, могут быть не единственными на странице. В ситуации появления на странице какого-то article, например, со своим header  и footer, при стилизации у тебя гарантированно возникнет коллизия стилей с твоими основными хедером и футером. Это, так или иначе, повлечет переписывание кода, по этому, стоит избегать подобных ситуаций. Это сэкономит, в итоге, тебе общее время, нервы и избавит от лишней отладки страницы.

    Еще у тебя в начале css есть такой код:

     

    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td,
    article, aside, canvas, details, embed, 
    figure, figcaption, footer, header, hgroup, 
    menu, nav, output, ruby, section, summary,
    time, mark, audio, video {
            margin: 0;
            padding: 0;
            border: 0;
            font-size: 100%;
            font: inherit;
            vertical-align: baseline;
    }
    /* HTML5 display-role reset for older browsers */
    article, aside, details, figcaption, figure, 
    footer, header, hgroup, menu, nav, section {
            display: block;
    }
    body {
            line-height: 1;
    }
    ol, ul {
            list-style: none;
    }
    blockquote, q {
            quotes: none;
    }
    blockquote:before, blockquote:after,
    q:before, q:after {
            content: '';
            content: none;
    }
    table {
            border-collapse: collapse;
            border-spacing: 0;
    }

    На эту тему, на форуме, уже было немеряно споров. Но мое лично имхо - это абсолютно бесполезный кусок кода. Все эти обнуляторы/reset.css/normalize.css и прочий хлам скорее всё сломает, чем реально поможет. Я понимаю, это по началу может показаться непонятным. Понимание этого факта приходит с опытом, сам проходил через это. Но мой тебе совет, избавляйся от подобного, это ни к чему, серьезно. Рано или поздно ты дойдешь к тому, что напишешь для себя очень не большой начальный снипет, который ты будешь только минимально подстраивать под конкретный проект. Вот это будет эффективно.

    Вот это вот:

    * {
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }

    Во-первых префикс уже давно не нужен. Во-вторых, зачем изменять глобально боксовую модель? Я согласен, в некоторых ситуациях это полезно, поменять для элемента боксовую модель, но это только в некоторых ситуациях. Глобально это делать незачем.

    Еще по поводу классов. Стоит все же не много больше применять классов, заодно избавляться в css от излишней вложенности селекторов. Например, взять блок .client. У тебя внутри этого блока есть элементы: фото, заголовок, должность и краткое описание. Это можно было оформить вот так:

    <div class="client">
        <img src="img/client-logo.png" alt="" class="client-photo">
        <h3 class="client-name">Jonathan Doe</h3>
        <span class="client-role">Co Founder</span>
        <p class="client-description">“Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec id gravida at eget metus. Etiasem malesuada magn”</p>
    </div>

    css

    .client {
      width: 340px;
      height: 300px;
      display: flex;
      flex-flow: column wrap;
      align-items: center;
    }
    
    .client-photo {
      border: 2px solid #1d1e24;
      width: 80px;
      height: 80px;
    }
    
    .client-name {
      margin-top: 25px;
      color: white;
      font-family: Exo;
      font-size: 22px;
      font-weight: 500;
      font-style: normal;
    }
    
    .client-role {
      color: #ff6d6d;
      font-size: 16px;
      font-weight: 500;
      font-family: Exo;
      margin-top: 8px;
      font-style: normal;
    }
    
    .client-description {
      opacity: 0.66;
      color: white;
      font-family: Exo;
      font-size: 16px;
      font-weight: 400;
      font-style: italic;
      text-align: center;
      letter-spacing: 0.64px;
      margin-top: 20px;
      line-height: 26px;
    }

    Тем самым ты отвязываешься от конкретных тегов и лишней вложенности в css. Ты можешь вместо h3, span и p, хоть просто div'ы натыкать и это будет работать.

    Но есть ситуации, когда стоит стилизировать именно через теги от контекста, в местах где контент добавляется с какого-то wysiwyg, например. Тогда стоит создавать какой-то контейнер в который будет вставляться подобный неуправляемый контент, без классов и прочего (может и с классами, тем не менее). И уже от контекста этого контейнера стилизировать контент. В общем для всего свое место. :)

     

    • Like 1

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    DmitryPavlov
    50 минут назад, alexriz сказал:

    стоит переключиться в режим flex-direction: column;

    Точно-точно, не заметил даже как-то.

    57 минут назад, alexriz сказал:

    Стоит все же не много больше применять классов

    Я думал мол, чем меньше классов, тем лучше, но после приведенного примера понял, что можно было все намного проще сделать.

    Учту всё вышеприведенное. Спасибо :)

    • Like 1

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    alexriz
    23 минуты назад, DmitryPavlov сказал:

    Я думал мол, чем меньше классов, тем лучше, но после приведенного примера понял, что можно было все намного проще сделать.

    Да просто во всем есть своя мера и баланс. Любые варианты решают свою задачу. Со временем, будешь на уровне интуиции и опыта, делать как лучше

    • Like 1

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    DmitryPavlov

    В IE flexbox поплыл. Как с этим бороться? 

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    DmitryPavlov
    22 часа назад, DmitryPavlov сказал:

    стоит переключиться в режим flex-direction: column;

    Я попробовал flex-direction: column (Естественно без flex: 1 100%;) И получается вот такая штука на телефоне. При flex-flow: row wrap; и flex-grow: 1; и flex-basis: 100%; все работает нормально.

     eIut-4a8Qw8.jpg

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    alejandro13
    2 часа назад, DmitryPavlov сказал:

    В IE flexbox поплыл. Как с этим бороться? 

    В ИЕ какой версии? До 9-й включительно flexbox не поддерживается

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    alexriz
    2 часа назад, DmitryPavlov сказал:

    Я попробовал flex-direction: column (Естественно без flex: 1 100%;) И получается вот такая штука на телефоне. При flex-flow: row wrap; и flex-grow: 1; и flex-basis: 100%; все работает нормально.

    это надо смотреть живой пример. по скриншотам такие вещи гадать практически бесполезно

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    DmitryPavlov
    В 30.07.2016 в 22:35, alejandro13 сказал:

    В ИЕ какой версии?

    10

     

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    alexriz

    В ie 10 не много отличается синтаксис и значения свойств по умолчанию. скорее всего где-то вокруг этого что сломалось

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.

    Войти сейчас

    • Войти через Facebook
    • Войти через Twitter
    • Войти через Microsoft
    • Войти через LinkedIn
    • Войти через Google

    • Похожие публикации

      • aversa121
        Автор: aversa121
        Помогите, пожалуйста, разобраться как активировать кнопки чтобы при нажатии на них сменялась информация (текст/картинка). Один отзыв заменял другой. Прикрепляю свой код. Большое спасибо)
        <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" type="text/css" href="reviews.css"> </head> <body> <style type="text/css"> .uc-reviws { position: relative; display: block; } .uc-reviews-slider{ overflow: hidden; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none } .uc-reviews-slider-wrapper{ max-width: 100%; overflow: hidden; position: relative; display: block; } .uc-reviews-slider-wrapper > .uc-reviews-list:after { clear: both; } .uc-reviews-slider-wrapper .uc-reviews-list{ -webkit-transform: translate(0px, 0px); -ms-transform: translate(0px, 0px); transform: translate(0px, 0px); -webkit-transition: all 1s; -webkit-transition-property: -webkit-transform,height; -moz-transition-property: -moz-transform,height; transition-property: transform,height; -webkit-transition-duration: inherit !important; transition-duration: inherit !important; -webkit-transition-timing-function: inherit !important; transition-timing-function: inherit !important; } .uc-reviews-list:before { content: " "; display: table; } .uc-reviews-slider-wrapper > *.active { z-index: 10; } .uc-reviews-slider-wrapper > *.active { opacity: 1; } .uc-reviews-block{ cursor: -webkit-grab; float: left; display: list-item; text-align: -webkit-match-parent; margin: 0px 0 0 0; position: relative; } .uc-reviews-img{ width: 100%; height: 100%; position: relative; z-index: 55; } .uc-reviews-wrapper{ position: absolute; z-index: 77; top: 0; margin: -0.7% 0 0 50%; padding-top: 40px; min-height: 100%; max-width: 1600px; box-sizing: border-box; display: block; } .uc-reviews-text { width: 485px; left: 50%; padding: 30px 0 0 45px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; display: block; } .uc-reviews-text-outer-type-a:before{ content: ''; position: absolute; left: 11px; background: #3c3c3c; width: 28px; height: 2px; margin: 9px 0 15px 0; } .uc-reviews-text-outer-type-a p { font-size: 17px; font-family: Lato_regular; line-height: 22px; color: #000; margin: 0 0 20px 0; position: relative;} .uc-reviews-text-outer-type-b p { font-size: 16px; font-family: Lato_italic; color: #747474; margin: 20px 0 0 0; } .uc-reviews-slider:after { clear: both; content: " "; display: table; } .uc-reviews-buttom { display: block; } .uc-reviews-buttom_left { width: 32px; display: block; top: 50%; height: 32px; background-image: url(http://ihub.world/wp-content/themes/ihub/img/controls.png); cursor: pointer; position: absolute; z-index: 9999; opacity: 0.8; margin-top: -16px; background-position: 0 0; left: 30px; -webkit-transition: opacity 0.35s linear 0s; transition: opacity 0.35s linear 0s; } .uc-reviews-buttom_right{ width: 32px; display: block; top: 50%; height: 32px; background-image: url(http://ihub.world/wp-content/themes/ihub/img/controls.png); cursor: pointer; position: absolute; z-index: 9999; margin-top: -16px; opacity: 0.8; -webkit-transition: opacity 0.35s linear 0s; transition: opacity 0.35s linear 0s; background-position: -32px 0; right: 30px; } .uc-reviews-number { position: relative; bottom: 67px; left: 0; right: 0; margin: 0 auto; padding: 0; text-align: center; } .uc-reviews-slider .uc-reviews-number a { background-color: #222222; border-radius: 30px; display: inline-block; height: 8px; overflow: hidden; text-indent: -999em; width: 8px; position: relative; z-index: 99; -webkit-transition: all 0.5s linear 0s; transition: all 0.5s linear 0s; cursor: pointer; } .uc-reviews-slider .uc-reviews-number > li:hover a, .uc-reviews-slider .uc-reviews-number > li.active a { background-color: #428bca; } .uc-reviews-slider .uc-reviews-number { margin: 10px 0 0; padding: 0; text-align: center; } .uc-reviews-slider .uc-reviews-number-position { cursor: pointer; display: inline-block; padding: 0 5px; } </style> <div class="uc-reviews"> <div class="uc-reviews-slider "><div class="uc-reviews-slider-wrapper" style="transition-duration: 1000ms; transition-timing-function: ease;"> <ul class="uc-reviews-list" style="width: 9443px; transform: translate3d(-2698px, 0px, 0px); height: 424px; padding-bottom: 0%;"> <li class="uc-reviews-block" style="width: 1349px; margin-right: 0px;"> <img src="http://storage2.static.itmages.ru/i/18/0104/h_1515086726_8963396_bc057ad031.jpg" alt=""> <div class="uc-reviews-wrapper"> <div class="uc-reviews-text"> <div class="uc-reviews-text-outer-type-a"> <p>“Management of the centre frequently engages media to showcase the success of their residents.</p> <p>iHUB also provides an opportunity for all their startups to participate in interesting events. For example, we have presented our startup in Oslo thanks to iHUB.”</p> </div> <p class="review-bg-text-outer-type-b"> Nikita Dobrynin &amp; Katia Dobrynina, Founders @ AstraFit </p> </div> </div> </li> <li class="uc-reviews-block" style="width: 1349px; margin-right: 0px;"> <img src="http://storage4.static.itmages.ru/i/18/0104/h_1515086781_3914429_0b10231d6a.jpg" alt=""> <div class="uc-reviews-wrapper"> <div class="uc-reviews-text"> <div class="uc-reviews-text-outer-type-a"> <p>“iHUB has all the necessary infrastructure, and most importantly – a community of smart and creative people, as well as a great number of events attended by many investors and leading industry experts.”</p> </div> <p class="uc-reviews-text-outer-type-b"> Stakh Vozniak, CEO @ TONA </p> </div> </div> </li> <li class="uc-reviews-block" style="width: 1349px; margin-right: 0px;"> <img src="http://storage8.static.itmages.ru/i/18/0104/h_1515086875_1757560_ad7a2b467a.jpg" alt=""> <div class="uc-reviews-wrapper"> <div class="uc-reviews-text"> <div class="uc-reviews-text-outer-type-a"> <p>“iHUB has all the necessary infrastructure, and most importantly – a community of smart and creative people, as well as a great number of events attended by many investors and leading industry experts.”</p> </div> <p class="uc-reviews-text-outer-type-b"> Stakh Vozniak, CEO @ TONA </p> </div> </div> </li></ul> <div class="uc-reviews-buttom"> <a class="uc-reviews-buttom_left"></a> <a class="uc-reviews-buttom_right"></a></div></div> <ul class="uc-reviews-number" style="margin-top: 5px; transform: translate3d(0px, 0px, 0px);"> <li class="uc-reviews-number-position"><a href="#">1</a> </li> <li class="uc-reviews-number-position"><a href="#">2</a> </li> <li class="uc-reviews-number-position"><a href="#">3</a></li></ul></div> </div> </body> </html>  
      • Angel_33_3
        Автор: Angel_33_3
        Внутри блока с основным контентом нужна фиксированная кнопка при нажатии по которой будет выезжать div блок и этот блок должен растягивается по все высоте экрана. Внешне это я реализовал вот так Пример кода
        Проблема в том, что сейчас блок fixed-block, который поверх всего, перекрывает контент и не позволяет взаимодействовать с ним.
        Может кто-то подскажет как избежать это проблемы и внешне оставить все так же?
    • advertisement_alt
    • advertisement_alt
    • advertisement_alt