Jump to content

Прошу Вас оценить верстку.


DmitryPavlov
 Share

Recommended Posts

Приветствую!

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

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

Второй макет. Решил попытаться сделать сайт адаптивным в таких разрешениях. 

(min-width: 768px) and (max-width:1152px)

Валидация CSS и HTML пройдена успешно.

Прошу!

  1. Указать на ошибки в структуре HTML и CSS кода. (К примеру каких div-блоков можно было избежать, я уверен, что таковые имеются)
  2. Указать на различия между версткой и макетом.
  3. Высказать свое субъективное мнение по поводу верстки в общем. (Адаптивность не включая).
  4. Дать пару советов начинающему верстальщику :)

Спасибо!

Спасибо, форумчанин, за потраченное время на оценку верстки. Я очень тебе благодарен!

P.S.

На каких ресурсах, помимо этого, я мог бы выставить свою работу на "всеобщий суд" ?

 

Link to comment
Share on other sites

В глаза сразу бросается отсутствие hover у меню.

Кнопка "Our works" явно должна быть ссылкой, также как и кнопки в блоке "Pricing table"

И я не совсем понял зачем вы title у textarea прописали

На 768px контент кое-где срезается

  • Like 1
Link to comment
Share on other sites

6 минут назад, alejandro13 сказал:

В глаза сразу бросается отсутствие hover у меню

В макете не было указано ничего, а на свое усмотрение делать не решился.

 

7 минут назад, alejandro13 сказал:

И я не совсем понял зачем вы title у textarea прописали

Забыл убрать просто.

Link to comment
Share on other sites

1. При адаптации использовать свойство overflow для скрытия горизонтальной прокрутки считается правилом плохо тона. Размер блоков в сумме не должен превышать ширину вьюпорта.
2. Лого всегда кликабельно с перенаправлением на главную страницу, а так же картинка выводится элементом. Правильнее такая разметка -

<div class="logo">
  <a href="/"><img src="img/logo.png" alt=""></a>
</div>


3. В шапке элементы списка визуально имеют картинки по отдельности, но физически прописаны одной сплошной. Если я добавлю еще один элемент li, то придется вклеивать дополнительное изображение в sprites.png. Тут либо иконки в html разметку, либо фоны для псевдоэлементов li, уже с правильным использованием спрайтов.

4. В местах где картинки заглушки, как я написал уже - это картинки а не фоны)

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

Link to comment
Share on other sites

6 минут назад, by chris сказал:

Размер блоков в сумме не должен превышать ширину вьюпорта

Не смог найти блок, который превышает допустимую ширину.

8 минут назад, by chris сказал:

Лого всегда кликабельно с перенаправлением на главную страницу

Думал, мол, "и так сойдет".

9 минут назад, by chris сказал:

с правильным использованием спрайтов

Так и гуглить ?)

10 минут назад, by chris сказал:

В местах где картинки заглушки

Здесь не понял. Картинки заглушки ?

11 минуту назад, by chris сказал:

подход к верстке устаревший на флоатах и марджинах

Из-за отсутствия сетки ? 

Спасибо!)

Link to comment
Share on other sites

31 минуту назад, DmitryPavlov сказал:

Не смог найти блок, который превышает допустимую ширину.

43 минуты назад, by chris сказал:

Ну, а кто верстал)

31 минуту назад, DmitryPavlov сказал:

Так и гуглить ?)

43 минуты назад, by chris сказал:

Мануалов про спрайты в интернете в изобилии.

32 минуты назад, DmitryPavlov сказал:

Здесь не понял. Картинки заглушки ?

Картинки - 263х270

33 минуты назад, DmitryPavlov сказал:

Из-за отсутствия сетки ?

Сетка есть всегда. На alexis она самописная и не заточена под отзывчивый дизайн. :)

  • Like 1
Link to comment
Share on other sites

5 часов назад, DmitryPavlov сказал:

На каких ресурсах, помимо этого, я мог бы выставить свою работу на "всеобщий суд" ?

на github очень удобно через gh-pages, но для начинающего там будет сложно разобраться https://help.github.com/articles/creating-project-pages-manually/  лучше сосредоточится на обучении. 

Можно пойти простым путем, просто создать репозиторий с именем username.github.io и просто перейти потом по этому адресу чтоб посмотреть работу, но тут минус что имя можно такое назначить только одному репозиторию 

Edited by Pashkes
Link to comment
Share on other sites

17 минут назад, DmitryPavlov сказал:

Я тоже так думаю, только вот что конкретно изучать.

Могу рассказать свой путь, но это индивидуально наверное. 

Я начал свое обучение с конца декабря прошлого года. 

Прошел почти все курсы на html academy,  кроме флексов и less, затем записался на базовый интенсив который начался в середине января, длился он 5 недель, после этого практика, было к сожалению 2 месяца перерыва, потом записался на продвинутый интенсив который начался в середине мая, было адски тяжело, словами не передать, чуть не помер от недосыпания, но проект свой сдал почти на максимум. Кратко о программе обучения(работа в git, gulp, препроцесоры (sass, less, precss), БЭМ, флексы, адаптив, адаптивная графика, работа с svg).  После этого записался на базовый js который начнется через несколько недель, по слухам будет еще сложнее. 

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

Edited by Pashkes
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By zeiger2
      Здравствуйте! У меня стоит задача, что при наведении на блок li строка должна поменять цвет, в том числе и картинка. Я меняю картинку с помощью 
      background-image: none;     background: url(../img/check_icon_red.png) left no-repeat;   Но теперь картинка позицианируется не там где должна, её можно поставить на место только вручную, через -100px. Нужно поставить ровно туда, где она была. Должна быть в одном ряду с другими
    • By Mix9
      есть див с 5 img, при уменьшении экрана див выходит за него. Я добавил overflow: auto для этого div в надежде на то, что я смогу прокручивать фотки с помощью скроллбара, однако даже с ним почему-то я не вижу часть фоток которые вышли за границу. Что с этим можно сделать? класс video повторяется 5 раз, я тут оставил только 1 
      .content{ width: 90%; background-color: #333; } .video{ margin: 0px 4px 0px 4px; width: 310; display: flex; flex-direction:column; } .video_button_text{ margin-top: 10px; display: flex; flex-direction: row; font-size: 20px; color: white; } .video_text_div{ display: inline-block; width: 250px; } .video_text{ text-align: justify-all; margin: 0px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .slidan_videos{ margin: 0px 10px 0px 20px; overflow: auto; width: auto; margin-bottom: 50px; display: flex; flex-direction: row; justify-content: space-around; } <div class="content"> <div class = slidan_videos> <div class = video> <div> <a href = 'ссылка'><img class="img" src=""картинка"></a> </div> <div class = video_button_text> <div class = avatarka_div> <a href="ссылка" target="_blank"><img class = avatarka src="картинка"></a> </div> <div class = video_text_div> <p class = video_text><a href="ссылка">текст</a></p> </div> </div> </div>
    • By Марко
      Добрый день. Начинающий программист, столкнулся с проблемой. Селектор .class не работает должным образом. Несмотря на правильное, я надеюсь, описание, на web-странице не отображается ни одно изображение. С чем может быть связано? Заранее спасибо за помощь. 



    • By Kaido
      Использую готовый плагин для модальных окон(от MaxGraph). Проблема в том, что когда у меня открыто два модальных окна, для примера Форма + Политика конфендициальности, и мне нужно закрыть политику вместе с ней закрывается и другое модальное окно. В JS я не сильно разбираюсь(собственно из за этого и использую готовый плагин), можете помочь кто работал с этим плагином? Я примерно понимаю как он работает, но реализовать чтобы закрывалось только одно не получается.
       
        <div class="content"> <button class="modal-btn" data-path="first" data-animation="fadeInUp" data-speed="1500">Открыть окно 1</button> </div> <div class="modal"> <div class="modal__wrapp" data-target="first"> <div class="modal__content"> <button class="modal__close">Закрыть</button> модальное окно <button data-path="policy">Политика</button> </div> </div> <div class="modal__wrapp" data-target="policy"> <div class="modal__content"> <button class="modal__close">Закрыть</button> политика </div> </div> </div> .modal { --transition-time: 0.3s; position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: 1000; cursor: pointer; overflow-y: auto; overflow-x: hidden; text-align: center; opacity: 0; visibility: hidden; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp { display: none; cursor: default; width: fit-content; height: fit-content; } .modal__content{ position: absolute; left: 500px; width: 500px; height: 500px; display: flex; color: white; flex-direction: column; text-align: left; background-color: #000; } .modal__content button{ width: 200px; height: 50px; margin: 50px 0; } .modal.is-open { opacity: 1; visibility: visible; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp.modal-open { display: flex; } .disable-scroll { position: relative; overflow: hidden; height: 100vh; position: fixed; left: 0; top: 0; width: 100%; } .fade { opacity: 0; transition: opacity var(--transition-time); } .fade.animate-open { opacity: 1; transition: opacity var(--transition-time); } .fadeInUp { opacity: 0; transform: translateY(vw(-100)); transition: opacity var(--transition-time), transform var(--transition-time); } .fadeInUp.animate-open { opacity: 1; transform: translateY(0); transition: opacity var(--transition-time), transform var(--transition-time); } .modal__wrapp[data-target="policy"] .modal__content{ left: 1050px; background-color: #000; opacity: .5; } class Modal { constructor(options) { let defaultOptions = { isOpen: () => {}, isClose: () => {}, } this.options = Object.assign(defaultOptions, options); this.modal = document.querySelector('.modal'); this.speed = false; this.animation = false; this.isOpen = false; this.modalContainer = false; this.previousActiveElement = false; this.fixBlocks = document.querySelectorAll('.fix-block'); this.focusElements = [ 'a[href]', 'input', 'button', 'select', 'textarea', '[tabindex]' ]; this.events(); } events() { if (this.modal) { document.addEventListener('click', function(e){ const clickedElement = e.target.closest('[data-path]'); if (clickedElement) { let target = clickedElement.dataset.path; let animation = clickedElement.dataset.animation; if (clickedElement.classList.contains('modal-close')) { this.close(); } let speed = clickedElement.dataset.speed; this.animation = animation ? animation : 'fade'; this.speed = speed ? parseInt(speed) : 300; this.modalContainer = document.querySelector(`[data-target="${target}"]`); this.open(); return; } if (e.target.closest('.modal__close')) { this.close(); return; } }.bind(this)); window.addEventListener('keydown', function(e) { if (e.keyCode == 27) { if (this.isOpen) { this.close(); } } if (e.keyCode == 9 && this.isOpen) { this.focusCatch(e); return; } }.bind(this)); this.modal.addEventListener('click', function(e) { if (!e.target.classList.contains('modal__wrapp') && !e.target.closest('.modal__wrapp') && this.isOpen) { this.close(); } }.bind(this)); } } open() { this.previousActiveElement = document.activeElement; this.modal.style.setProperty('--transition-time', `${this.speed / 1000}s`); this.modal.classList.add('is-open'); this.disableScroll(); this.modalContainer.classList.add('modal-open'); this.modalContainer.classList.add(this.animation); setTimeout(() => { this.options.isOpen(this); this.modalContainer.classList.add('animate-open'); this.isOpen = true; this.focusTrap(); }, this.speed); } close() { if (this.modalContainer) { this.modalContainer.classList.remove('animate-open'); this.modalContainer.classList.remove(this.animation); this.modal.classList.remove('is-open'); this.modalContainer.classList.remove('modal-open'); this.enableScroll(); this.options.isClose(this); this.isOpen = false; this.focusTrap(); } } focusCatch(e) { const focusable = this.modalContainer.querySelectorAll(this.focusElements); const focusArray = Array.prototype.slice.call(focusable); const focusedIndex = focusArray.indexOf(document.activeElement); if (e.shiftKey && focusedIndex === 0) { focusArray[focusArray.length - 1].focus(); e.preventDefault(); } if (!e.shiftKey && focusedIndex === focusArray.length - 1) { focusArray[0].focus(); e.preventDefault(); } } focusTrap() { const focusable = this.modalContainer.querySelectorAll(this.focusElements); if (this.isOpen) { focusable[0].focus(); } else { this.previousActiveElement.focus(); } } disableScroll() { let pagePosition = window.scrollY; this.lockPadding(); document.body.classList.add('disable-scroll'); document.body.dataset.position = pagePosition; document.body.style.top = -pagePosition + 'px'; } enableScroll() { let pagePosition = parseInt(document.body.dataset.position, 10); this.unlockPadding(); document.body.style.top = 'auto'; document.body.classList.remove('disable-scroll'); window.scroll({ top: pagePosition, left: 0 }); document.body.removeAttribute('data-position'); } lockPadding() { let paddingOffset = window.innerWidth - document.body.offsetWidth + 'px'; this.fixBlocks.forEach((el) => { el.style.paddingRight = paddingOffset; }); document.body.style.paddingRight = paddingOffset; } unlockPadding() { this.fixBlocks.forEach((el) => { el.style.paddingRight = '0px'; }); document.body.style.paddingRight = '0px'; } } const modal = new Modal({ isOpen: (modal) => { console.log(modal); console.log('opened'); }, isClose: () => { console.log('closed'); }, });  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy