Skip to content

Instantly share code, notes, and snippets.

@nikolai-shabalin
Last active February 15, 2020 11:36
Show Gist options
  • Save nikolai-shabalin/2e837ebfc0bf29773e540a37260594e5 to your computer and use it in GitHub Desktop.
Save nikolai-shabalin/2e837ebfc0bf29773e540a37260594e5 to your computer and use it in GitHub Desktop.
Вопросы к разделу «Декоративные элементы»

Вопросы к разделу «Декоративные элементы»

Как делать слайдеры

Скажите, в настоящем времени - что в большей степени используется для построения слайдеров- CSS или JS? Что использовать правильнее и из чего/каких условий стоит исходить?

Для любых компонентов нужно смотреть, нет ли в браузерах уже существующих встроенных решений, которые декларативно (с помощью HTML) позволяют просто вставить и использовать их. Например, <input type="date"> или <input type="color"> вполне хорошо поддерживаются. Потом нужно понять, можно ли оформить этот компонент для ваших целей. И только потом, если не получилось на предыдщих шагах, нужно делать свой компонент на HTML, CSS и JS. Чем сложнее компонент, тем больше вероятность, что для него потребуется JS.

Стоит ли делать слайдеры на чистом css или в настоящее время это уже не так актуально?

«Актуальность» это плохая характеристика. Если у вас получается оформить встроенный в браузер <input type="range"> на CSS так, чтобы было похоже — значит вы используете уже готовый, доступный и удобный для всех компонент. Другое дело, если вам нужно несколько ручек на таком слайдере — во встроенном слайдере ручка всего одна. Тогда имеет смысл просто сверстать чтобы он был похож (и чтобы на отдельные ручки можно было попасть с клавиатуры) и дальше уже подключить JS для остального. Либо есть трюк по сочетанию двух слайдеров.

А в продакшене вообще используют <input type="range">? Судя по этой статье нужно много CSS кода, чтобы его стилизовать кроссбраузерно.

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

Как вставлять мелкую графику

Здравствуйте! Расскажите, пожалуйста, как определить по макету для мелких картинок, иконок как их правильно вставить - псевдоэлементом, svg в саму HTML-разметку, фоном, другим способом ?

Сначала нужно определить, какого типа это изображение: если, как вы пишете, это мелкие иконки — значит это дизайн, оформление. Если это ценная для пользователя графика, имеющая отношение к содержимому сайта — значит так оно и есть.

Для содержимого всё просто: <img> идеальный и самый правильный вариант для таких картинок, не забудьте добавить им alt.

Для оформления всё чуть сложнее, но всегда начинайте с простого:

  1. Вставьте картинку просто фоном уже существующего элемента
  2. Если это неудоно делать, добавьте псевдоэлемент ::before или ::after и поставьте фон им
  3. Если псевдоэлементы не добавить, они уже чем-то заняты или как-то иначе неудобно — вставьте как и пропишите пустой alt="", это подскажет скринридерам, что эту картинку не нужно читать.
  4. Если вам нужно вставить одну иконку в разных цветах или динамически менять цвет иконки, то удобнее всего будет вставить картинку с помощью SVG прямо в разметку, но не забудьте прописать ей размеры. Мы ещё обсудим это на лекциях.
@alenavolkova97
Copy link

Добрый день, насколько часто в реальной разработке используются data- атрибуты для хранения текстов?

@nikolai-shabalin
Copy link
Author

@alenashashko

Добрый день, насколько часто в реальной разработке используются data- атрибуты для хранения текстов?

Достаточно редко. Опять же всё по потребность. Если нужно, то нет ничего плохого, чтобы использовать data-атрибуты.

@pepelsbey
Copy link

pepelsbey commented Feb 14, 2020

@alenashashko, я бы дополнил, что лучше всё же основной контент хранить в элементах, чтобы у браузера был шанс их прочитать, перевести, передать скринридеру и так далее. В дата-атрибутах вы всё же прячете текст.

@CTaHuCJLaB
Copy link

CTaHuCJLaB commented Feb 15, 2020

Я столкнулся с проблемами:

  1. Internet Explorer 11 сглаживает линии букв по-другому, нежели другие браузеры. На наклонных линиях букв видны (правда, не слишком резкие) "лесенки".
  2. Edge и Internet Explorer 11 отображают последнюю строку пикселей главного меню с полу-прозрачностью. В остальных браузерах всё отображается корректно.
  3. В Edge не работает код псевдокласса ::-ms-input-placeholder для кросс-браузерности. Из-за этого в поисковом инпуте подсказка отображается не тем шрифтом, которым нужно и не с тем размером шрифта, который нужен. В Mozilla Firefox текст плейсхолдера отображается с более темным цветом, хотя я использовал псевдокласс для кросс-браузерности: ::-moz-placeholder и в отношении размера и типа шрифта плейсхолдера он работает корректно. Также в Firefox текст подсказки плейсхолдера остается видимым, даже когда поле поискового запроса имеет фокус ввода (в нем стоит курсор в виде вертикальной черты).
  4. Есть одна особенность в Chrome и в Yandex-браузере - это браузерная стилизация определенного состояния поискового инпута, когда туда вставлен текст из списка-подсказки (то что вводили ранее) - в Chrome он накрывается таким прозрачно-голубоватым фоном, а в Yandex-браузере фон в поле становится бежевым. Но в макете "Техномарта" фон белый.
  5. В Internet Explorer 11, Edge, Opera, Chrome, Yandex-браузере в поисковом инпуте есть кнопка "X" (удалить текст из поля). В макете "Техномарта" ее нет.
  6. Кроме того, хотелось бы стилизовать по-своему элементы выпадающего списка-подсказки плейс-холдера (список того, что вводили ранее).

Как можно решить данные проблемы?

@pepelsbey
Copy link

@Stanislav-Kazankov, эти вопросы лучше задать вашему наставнику, они требуют более подробного разбора именно вашего кода.

@CTaHuCJLaB
Copy link

Для чего Вы добавили к классу visuallyhidden следующий код:
.input[type="checkbox"].visually-hidden, .input[type="radio"].visually-hidden?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment