Jump to content

Оцените верстку новичка.


oblomov95
 Share

Recommended Posts

Здравствуйте, около месяца назад я увлекся веб-разработкой и свой путь я решил начать с изучения верстки, в дальнейшем планирую развиваться, как fron-end разработчик.

Хотелось бы получить конструктивную критику по верстке статичного макета. Какие главные ошибки? Что можно улучшить? Переходить ли к верстке адаптивных сайтов или стоит попрактиковаться ещё на статичных?

 

http://oblomov95.github.io/

 

Спасибо.

Link to comment
Share on other sites

В меню на кнопке "Вход" не кликабельна иконка и мне кажется это не очень логичным. :before лучше применять к ссылке, а не к li.


И еще можно было бы  доделать фотогалерею, чтобы картинки листались.

  • Like 1
Link to comment
Share on other sites

  1. Зачем писать ввесь  текст с включенным caps lock если можно было в body прописать text-transform: uppercase
  2. Регулировать отступы как в главном меню высотой строки вроде считается дурным тоном.
  3. Быстро Круто  Дорого не h2.
  4. Блок где новости не проходит тест на переполнение контентом. Зачем задавать фиксированную высоту?
  5. В картинке фото галереи отсутствует размер изображения, как и в логотипа.
  6. Блок "Контактная информация"  и "Записаться" тоже не проходит переполнение, опять же, задана фиксированная высота.
  7. Название всех 4-х блоков не h2, а обычный span.
  8. Почему вы нигде не убирали дополнительные отступы которые присущие инлайн блокам?
  9. Почему слайдер не работает, кстати рекомендую для слайдеров плагин под jquery, разбираться минут 20 http://bxslider.com/

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

Если понимаешь о чем я, то попробуй сверстать Глейси) Барбершоп тебе покажется блокнотом по сложности)

Edited by Pashkes
Link to comment
Share on other sites

Спасибо за то что всё так разложили. Я не проходил интенсив, опоздал на 1 день с записью, поэтому просто посмотрел в каком порядке изучаются темы и обучался самостоятельно, и не было никого кто-бы мог на ошибки указать.
1. Текст просто копировал с макета.

2. Хм, а можно по-подробнее, почему считается дурным тоном? Я же просто указывал высоту строки из макета.

3. С этим не могу до конца разобраться. я знаю что h1 должен быть 1 на странице, а разница между h2 и h3 какая?

4. Здесь нужно задать min-height?

5. А зачем это нужно, если у блока указаны размеры картинки?

6. min-height опять же?

7. Понял.

8. Не знал о такой особенности, погуглю.

9. Хочу сначала разобраться с js, а потом только переходить к библиотекам.

Имеет смысл записаться на интенсив в апреле? 

 

  1. Зачем писать ввесь  текст с включенным caps lock если можно было в body прописать text-transform: uppercase
  2. Регулировать отступы как в главном меню высотой строки вроде считается дурным тоном.
  3. Быстро Круто  Дорого не h2.
  4. Блок где новости не проходит тест на переполнение контентом. Зачем задавать фиксированную высоту?
  5. В картинке фото галереи отсутствует размер изображения, как и в логотипа.
  6. Блок "Контактная информация"  и "Записаться" тоже не проходит переполнение, опять же, задана фиксированная высота.
  7. Название всех 4-х блоков не h2, а обычный span.
  8. Почему вы нигде не убирали дополнительные отступы которые присущие инлайн блокам?
  9. Почему слайдер не работает, кстати рекомендую для слайдеров плагин под jquery, разбираться минут 20 http://bxslider.com/

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

Если понимаешь о чем я, то попробуй сверстать Глейси) Барбершоп тебе покажется блокнотом по сложности)

 

Edited by oblomov95
Link to comment
Share on other sites

 

Спасибо за то что всё так разложили. Я не проходил интенсив, опоздал на 1 день с записью, поэтому просто посмотрел в каком порядке изучаются темы и обучался самостоятельно, и не было никого кто-бы мог на ошибки указать.

1. Текст просто копировал с макета.

2. Хм, а можно по-подробнее, почему считается дурным тоном? Я же просто указывал высоту строки из макета.

3. С этим не могу до конца разобраться. я знаю что h1 должен быть 1 на странице, а разница между h2 и h3 какая?

4. Здесь нужно задать min-height?

5. А зачем это нужно, если у блока указаны размеры картинки?

6. min-height опять же?

7. Понял.

8. Не знал о такой особенности, погуглю.

9. Хочу сначала разобраться с js, а потом только переходить к библиотекам.

Имеет смысл записаться на интенсив в апреле? 

 

  1. Зачем писать ввесь  текст с включенным caps lock если можно было в body прописать text-transform: uppercase
  2. Регулировать отступы как в главном меню высотой строки вроде считается дурным тоном.
  3. Быстро Круто  Дорого не h2.
  4. Блок где новости не проходит тест на переполнение контентом. Зачем задавать фиксированную высоту?
  5. В картинке фото галереи отсутствует размер изображения, как и в логотипа.
  6. Блок "Контактная информация"  и "Записаться" тоже не проходит переполнение, опять же, задана фиксированная высота.
  7. Название всех 4-х блоков не h2, а обычный span.
  8. Почему вы нигде не убирали дополнительные отступы которые присущие инлайн блокам?
  9. Почему слайдер не работает, кстати рекомендую для слайдеров плагин под jquery, разбираться минут 20 http://bxslider.com/

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

Если понимаешь о чем я, то попробуй сверстать Глейси) Барбершоп тебе покажется блокнотом по сложности)

 

 

text-transform: uppercase нужно было прописать для body, так же как и размер шрифта и высоту строки для абзацев, зачем дублировать код постоянно в каждом блоке.  На счет регулировки отступов высотой строки, то это просто не рекомендуют делать, кстати высоту строки рекомендуют задавать не в пикселях, а в относительных единицах, берете высоту строки и делите на размер шрифта, получается относительная единица, обычно это 1.2 или 1.3.

h1 может быть больше 1 на странице, это даже в спецификации написано, заголовки используются по важности содержимого.

Высоту для контентных блоков вообще нельзя задавать, можно min-height если для блока задан какой то фон картинкой, а обычно фиксированную высоту задают декоративных элементам.

Для подключение плагина для  jquery не нужно каких то знаний ( по крайнем мере мне). Как вариант можно слайдер делать на чистом css через чекбоксы и лейблы, гуглите. Вот пример  http://codepen.io/pashkes/pen/KVXWEP

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

Edited by Pashkes
Link to comment
Share on other sites

 

 

Спасибо за то что всё так разложили. Я не проходил интенсив, опоздал на 1 день с записью, поэтому просто посмотрел в каком порядке изучаются темы и обучался самостоятельно, и не было никого кто-бы мог на ошибки указать.

1. Текст просто копировал с макета.

2. Хм, а можно по-подробнее, почему считается дурным тоном? Я же просто указывал высоту строки из макета.

3. С этим не могу до конца разобраться. я знаю что h1 должен быть 1 на странице, а разница между h2 и h3 какая?

4. Здесь нужно задать min-height?

5. А зачем это нужно, если у блока указаны размеры картинки?

6. min-height опять же?

7. Понял.

8. Не знал о такой особенности, погуглю.

9. Хочу сначала разобраться с js, а потом только переходить к библиотекам.

Имеет смысл записаться на интенсив в апреле? 

 

  1. Зачем писать ввесь  текст с включенным caps lock если можно было в body прописать text-transform: uppercase
  2. Регулировать отступы как в главном меню высотой строки вроде считается дурным тоном.
  3. Быстро Круто  Дорого не h2.
  4. Блок где новости не проходит тест на переполнение контентом. Зачем задавать фиксированную высоту?
  5. В картинке фото галереи отсутствует размер изображения, как и в логотипа.
  6. Блок "Контактная информация"  и "Записаться" тоже не проходит переполнение, опять же, задана фиксированная высота.
  7. Название всех 4-х блоков не h2, а обычный span.
  8. Почему вы нигде не убирали дополнительные отступы которые присущие инлайн блокам?
  9. Почему слайдер не работает, кстати рекомендую для слайдеров плагин под jquery, разбираться минут 20 http://bxslider.com/

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

Если понимаешь о чем я, то попробуй сверстать Глейси) Барбершоп тебе покажется блокнотом по сложности)

 

 

text-transform: uppercase нужно было прописать для body, так же как и размер шрифта и высоту строки для абзацев, зачем дублировать код постоянно в каждом блоке.  На счет регулировки отступов высотой строки, то это просто не рекомендуют делать, кстати высоту строки рекомендуют задавать не в пикселях, а в относительных единицах, берете высоту строки и делите на размер шрифта, получается относительная единица, обычно это 1.2 или 1.3.

h1 может быть больше 1 на странице, это даже в спецификации написано, заголовки используются по важности содержимого.

Высоту для контентных блоков вообще нельзя задавать, можно min-height если для блока задан какой то фон картинкой, а обычно фиксированную высоту задают декоративных элементам.

Для подключение плагина для  jquery не нужно каких то знаний ( по крайнем мере мне). Как вариант можно слайдер делать на чистом css через чекбоксы и лейблы, гуглите. Вот пример  http://codepen.io/pashkes/pen/KVXWEP

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

 

Ещё раз спасибо, да тоже думаю, что лучше основы хорошо выучить и потом только дальше идти, решил не ждать апрельского интенсива, взял контакты ментора у своего товарища. Слайдер на css уже делал для макета Nerds. Я понимаю, что jquery плагин не трудно подключить, просто я хочу научиться работать с ванильным js перед тем, как использовать его библиотеки, может это и глупо пренебрегать им сейчас, но думаю что важнее научиться языку, а не подключению готовых библиотек.

Link to comment
Share on other sites

  • 1 year later...

Знаешь, если ты сам сделал это, то я считаю, что это круто. Серьезно. Я тоже начинаю свой путь в веб-программировании, и мне понравился твой сайт. Желаю удачи в дальнейшем продвежении! 

Link to comment
Share on other sites

  • 2 weeks later...

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