Задать вопрос
  • Дайте оценку верстке?

    @Flying
    Визуально выглядит вполне пристойно и очевидных косяков почти нет, но если копнуть глубже - возникают вопросы.

    Есть целый ряд претензий по использованию графики. Часть их них, безусловно относится к косякам дизайнера, но и вы отработали не самым лучшим образом.

    Из наиболее заметного - заглавная картинка с автомобилем в PNG которая занимает почти 600кб и из-за этого грузится весьма и весьма неспешно (и заметно для пользователя). В целом это по большей части косяк дизайнера, не приложившего усилий к тому чтобы выбрать правильную графику (автомобиль снят явно на улице и отражения в стёклах дают существенный вклад в визуальный шум и, как следствие, в размер картинки, нужно было выбирать фотографию сделанную в специальном помещении). Кроме того дизайнер, очевидно, не слышал про требования к такси в Нью-Йорке и рисовал как взбредёт в голову, но оставим это на его совести. Сочетание фоновой картинки, на которой весь траффик едет в обратном направлении и делает автомобиль такси нарушающим правила дорожного движения - тоже на совести дизайнера.

    Однако и в этом случае и, тем более, в случае фоновых изображений ниже по странице вы допускаете ошибки с выбором форматов файлов, способами их вставки в страницу и оптимизацией. К примеру из картинки с автомобилем можно выжать почти 100кб просто за счёт использования оптимизаторов. Гораздо грустнее ситуация с фоновыми картинками ниже по тексту. Во-первых вы сохраняете фотографии в PNG, получая на выходе файлы по мегабайту, хотя они же в JPEG занимали бы в 5-10 раз быстрее. Во-вторых вы, скорее всего, сохранили фоновые картинки уже обработанными (затемнёнными). Я не видел макета, но предположу что там эти картинки стоят в их оригинальном виде и на них наложены какие-нибудь фильтры. На первый взгляд кажется что проблемы нет, но на практике (в случае вёрстки для реального сайта) вы вынуждаете человека который будет поддерживать сайт либо готовить картинки с такой же пост-обработкой либо мириться с тем что стиль сайта меняется. Правильное решение здесь - грузить картинки как они есть и реализовывать фильтры на CSS, тем более что здесь это делается элементарно через multi background или псевдо-класс с полупрозрачным фоном. Очевидно также что для таких тёмных картинок вполне можно использовать JPEG с меньшим качеством и тем самым существенно сэкономить пользователям трафик.

    Ещё одна проблема связанная с фоновыми картинками - вы не подкладываете под них близкий по цвету solid color. Попробуйте включить в dev.tools "Network throttling", отключить кэш и перегрузить свою страницу - думаю вы поймёте что я имею в виду - белые блоки с белым текстом стоят довольно продолжительное время, постепенно заполняясь довольно тёмными картинками. Если бы background-color под ними был бы чёрным - проблемы бы не было.

    Далее - логотип. Обычно логотипы разрабатываются отдельно и даже если он выглядит просто набранным шрифтом - это вовсе не значит что это не так. Логотип Google, Microsoft или Яндекс - тоже просто название, но, надеюсь вы не сверстаете их, написав надпись текстом? В общем логотип = картинка, лучше в векторе. Сейчас даже одно съезжание слогана на пиксель влево относительно названия уже рушит всю конструкцию логотипа.

    Обратите внимание на то как вы работаете с формами. Все поля в форме являются <input type="text">, хотя часть названий явно намекает на date / time селекторы, а "Choose Vehicle" - на список выбора.

    Хотелось бы отметить работу с иконками - их всё-таки лучше хранить в SVG и либо требовать с дизайнера либо подбирать на том же Icon Finder. При этом оформление (те пресловутые жёлтые кружки) лучше делать через CSS т.к. это позволяет вам существенно гибче работать с размерами элементов.

    Есть всякие недочёты касающиеся responsive, к примеру, внимание как отображается блок "Our Tariffs" в размере чуть более 600px, в частности название тарифа и описание.

    Пожалуйста обратите внимание на то что вы используете два разных меню для desktop и mobile представления. В целом в вашем случае меню довольно простое и можно было бы обойтись одним. Конечно две копии используют часто, но у этого решения есть свои недостатки (в частности отсутствие синхронизации состояния), так что вы должны осознанно принимать решение по таким вопросам. Кроме того inline обработчики onclick там явно могут быть заменены на элементарный
    document.querySelectorAll('.menu a, .menu-hover a').addEventListener()
    что явно сделает код более простым и поддерживаемым.

    Ещё один важный момент который зачастую опускают при вёрстке - поведение макета с реальными данными. То что дизайнер в макете понапихал везде lorem ipsum и тексты примерно одинакового размера - отнюдь не означает что на реальном сайте эти условия будут соблюдаться. Отсутствие навыка проверять поведение макета в изменяющихся условиях ведёт к множеству ошибок которые не видны в условиях синтетических данных. К примеру попробуйте в блоке "We Do Best Than You Wish" (претензии по поводу английского языка оставим в стороне) в любом из элементов банально увеличить количество текста в 2-3 раза. В Chrome это приводит только к излому сетки, в Firefox - ещё и к изменению размера иконки. При этом я предполагаю что Firefox ведёт себя правильно т.к. пропорции элементов изменились, а ограничения размеров на картинки у вас не заданы.

    В целом похоже что макет верстался и проверялся только в Chrome. К примеру посмотрите как ведёт себя картинка с рукой и телефоном в Firefox при изменении размеров. Опять же Firefox вполне корректен т.к. вы не обрезали картинку корректно, предпочитая выгрузить "как есть" и подгонять положение в CSS, но забыв при этом про overflow: hidden для контейнера.

    Теперь перейдём к CSS:

    Обратите внимание на то как вы подключаете внешний шрифт:
    family=Lato:400,700,700i,900,900i&amp;subset=latin-ext
    . Возникают два вопроса:
    1. Зачем вам subset=latin-ext на сайте где есть только базовая латиница?
    2. Как вы выбирали начертания? У вас подключаются 5 начертаний (400, 700, 900 + два italic'а), при этом grep по CSS даёт значения font-weight 200, 300, 400, 500, 600, 800 и ни одного italic. Вам не кажется что эти множества почти не пересекаются?


    Кроме того вы постоянно забываете про fallback шрифты что на медленном интернете и при отсутствии инструкций для font loading приводит к невидимому контенту страницы на период загрузки.

    Отсутсвие ограничения по ширине для .wrapper приведёт к недопустимо широкому сайту на больших мониторах с высоким разрешением. Можете уменьшить масштаб страницы до 50% и полюбоваться результатом.

    В стилях повсеместно используются достаточно общие названия классов в global namespace. К примеру кто бы мог подумать что стилизует селектор .text? Вы уверены что нигде больше на сайте подобный селектор не встретится? Даже при дальнейшем развитии сайта? Другими словами именование селекторов - важная часть работы, вы можете использовать любую методологию (тот же БЭМ или что-то ещё) или разработать свою, но ваш код не должен ломаться при добавлении ещё пары блоков, особенно если это будет делать другой человек.

    Списки элементов, к примеру тот же .product-cont лучше делать именно списками, а не распихивать элементы по столбцам вручную, благо flexbox и column layout здесь всё прекрасно сделают за вас, зато имея одноранговый список вы обеспечите себе куда большую свободу действий.

    Использование id в качестве CSS селектора - плохая практика, но у вас таких мест немало, 11 штук.

    Уверен что мог бы найти ещё что-то, но надеюсь для затравки хватит, и так много получилось... :)
    Ответ написан
    4 комментария
  • Как изменить дизайн react-select?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    5c92a979760a6022246783.png
    Ответ написан
    Комментировать
  • Взлом или развод?

    flapflapjack
    @flapflapjack
    на треть я прав
    Может ли злоумышленник, получив данные о списках таблиц так же получить и содержимое этих таблиц?


    В зависимости от степени экранирования символов при фильтре какого-то из параметров.

    По сути, скорее всего инъекция была сделана именно на вашем сайте, следовательно запрос выполнялся от имени вашего пользователя, у которого есть все права на БД - следовательно может и удалять и читать любые записи.

    Нужно как-то отследить место SQL-инъекции.

    Я в этом не спец, но например можно посмотреть лог mysql на наличие строки SHOW DATABASES или SHOW TABLES, а так же по поиску слова UNION, коим часто пользуются при создании инъекций. Найдя в логах время исполнения данного запроса можно глянуть в access.log у апача запрошенный адрес сайта, который был запрошен в то же время, что и инъекция в SQL.

    Имея точное расположение скрипта можно поставить вставки функции для логирования $_SERVER['REQUEST_URI'] и определить что за запрос был сделан, и от этого плясать.
    Ответ написан
    1 комментарий
  • Дайте совет, как правильно развиваться в фронтенде?

    hzzzzl
    @hzzzzl
    кстати меня именно то что я начал учить react очень продвинуло дальше в понимании "чистого js"
    Ответ написан
    Комментировать
  • Текст по вертикали не по центру. Как изменить?

    Chefranov
    @Chefranov
    Новичок
    Добавьте к .block-images__textheight: 100%
    Ответ написан
    Комментировать
  • Что из JS достаточно знать верстальщику?

    основы: функции, сравнения, условия, операции со строками и массивами.
    дальше jquery
    обработка событий пользователя и страницы, любые манипуляции с dom.
    загрузка данных и отправка форм аяксом.
    плагины, знать популярные, уметь использовать и настраивать под проект.
    Ответ написан
    3 комментария
  • Как сверстать такой элемент, если блоков не 4 а больше?

    flapflapjack
    @flapflapjack
    на треть я прав
    Стиль с поворотными стрелками назначается для :first-child и :last-child, остальные внутри имеют одинаковый резиновый стиль с flex

    Ответ написан
    9 комментариев
  • Мобильная верстка — почему уменьшается масштаб сайта?

    @Flying
    Проверьте наличие в коде сайта настроек viewport'а, что-то вроде этого должно помочь:
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    Ответ написан
    1 комментарий
  • Как можно создать такую анимацию? Точнее с помощью чего?

    Ragtime_Kitty
    @Ragtime_Kitty
    Мне когда-то примерно тоже самое надо было, но ума сделать все это под углом не хватило. Суть: создаем картинку, рисуем ее в canvas с размерами кусочка, получаем dataURL и вставляем его в background-image.

    Тут режется все автоматом по размерам заданной картинки, но можно выбрать количество столбцов/колонок и размеры каждого кусочка. transition-delay нужно ручками задавать, в зависимости от размеров картинки. Можно резать картинку под углом через skewAngle и плясать от этого. Может ругаться на tainted canvases may not be exported, не знаю как побороть, но на локалке все норм.

    За "правильность" и рациональность использования не ручаюсь ¯\_(ツ)_/¯

    Ответ написан
    1 комментарий
  • Как можно создать такую анимацию? Точнее с помощью чего?

    OxCom
    @OxCom


    Пробуйте, играйтесь с размерами блоков и позиционированием изображения. В большом блоке выглядит сносно, все сочленения все же не совпадают. Тут надо посидеть над формулой и процентами.
    Ответ написан
    Комментировать
  • Стоит ли учить Grid и Flex css?

    Vlatqa
    @Vlatqa Куратор тега CSS
    Нет
    Вся эта мода приходит и уходит
    Учите таблицы, они будут жить вечно
    Ответ написан
    2 комментария
  • Есть ли смысл в моем выборе. PHP или JS?

    arman1231
    @arman1231
    Keykeeper
    Выбор будет зависеть от того, чем вы хотите заниматься в дальнейшем, так как для разработки сайтов для бизнеса, визиток, интернет магазинов, связка html-css-js-php жизненно незаменима. Но если в планах работать на специфических проектах, где ведется разработка крупных приложений, есть смысл уделить все время на изучение js+фреймфорк типа react, angular и т.п.
    Ответ написан
    2 комментария
  • Есть ли смысл в моем выборе. PHP или JS?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Изучиьт php на базовом уровне не проблема. Возьмите и изучите.

    Изучить php на уровень уверенного junior-а, умеющего хотя бы в базовую работу одного из популярных фреймворков - долго, много.
    Но для уверенного JS-джуниора будет гораздо проще, потому что есть определенное количество технологий, которые пересекаются - работа с json/xml/css/html/sql, базовая настройка веб-сервера, сертификаты, установка компонентов.

    PHP на текущий момент умирает уже десятки лет, и все равно он доступен на каждом хостинге. IMHO поднимать nodejs на бэкенде для сайта-визитки это ненужный оверинженеринг. Поэтому базово подтянуть PHP - маст хев.

    Углубляться в изучение фреймворков - уже отдельный вопрос. Смотря как устроитесь.
    Ответ написан
    2 комментария
  • Есть ли смысл в моем выборе. PHP или JS?

    kshshe
    @kshshe
    Frontend developer
    Если я изучу в достаточной мере JS ,то смогу потом изучить Node.Js и работать с серверной часть

    Знание JS однозначно поможет начать работать с JS на сервере. Язык тот же, только другие API, потому что другая среда. Я бы порекомендовал не распылять силы на разные языки и освоить сначала что-то одно. Тем более, что работа отдельно по фронтенду, вообще без бэкенда (вам надо будет понимать, как они взаимодействуют, но совсем не обязательно уметь это реализовывать самим), достаточно распространена.

    Отдельно отмечу, что бэкенд это не только PHP.
    Ответ написан
    1 комментарий
  • Как описать текст окружностью?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Ответ написан
    Комментировать
  • Как делать такие "эффекты"?

    dimovich85
    @dimovich85 Куратор тега CSS
    https://u-academy.net/
    Задайте для текста внизу рамки бэкграунд цветом как у основного блока, и добавьте паддинг слева и справа, например в 1em. После чего через position сместите вниз и через z-index вынесите это все на передний план.
    Ответ написан
  • Как выстроить блоки таким образом?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    щас набегут фанаты flex, ты держись до последнего!
    Ответ написан
    2 комментария
  • Как делают плавное изменение любых CSS свойств элемента без индивидуального прописывания анимации/трансформации?

    shmatuan
    @shmatuan
    8 year of Web, 5 years of Vue
    По описанию похоже на transition: 0.3s all;

    Ответ написан
    Комментировать
  • Правильно ли использовать готовые библиотеки в проектах?

    Vlatqa
    @Vlatqa Куратор тега CSS
    правильно, но что бы ты понимал:
    1. JQuery это библиотека
    2. slick slider это плагин
    с их помощью ты сделал слайдер слайдер изображений как хотел заказчик за 3мин и доволен
    ...
    шли секунды... минуты... часы
    ...
    заказчик тебя попросил за доп. плату сделать превью изображений к слайдеру

    вот, что бы не сесть в лужу нужно знать как это работает

    и это 1см айсберга, дальше - глубже
    Ответ написан
    Комментировать