включи код на стиле

Simbachka Кот На Стиле Официальный Трек

Simbachka Кот На Стиле караоке PIANO KARAOKE ᴴᴰ НОТЫ MIDI

КЛИП К ПЕСНИ КОТ НА СТИЛЕ ПРИMЬЕРА КЛИПА

Simbachka Да я котик Официальный Трек

КИКИДО НА СТИЛЕ ПРЕМЬЕРА КЛИПА

Вирус В стиле диско Official Video

Simbachka Почему же ты ушёл В память о Симбе

Simbachka Кот на Стиле

Simbachka Господин Кот Официальный Трек

Simbachka Кот На Стиле Официальный Трек в 8d 8d звук как на концерте

Исходный код На стиле по жизни

Код на музыку Время и стекло на стиле

Клип Леди Баг и Супер Кот На стиле Время и Стекло

ВРЕМЯ И СТЕКЛО НА СТИЛЕ ПАРОДИЯ

Кикидо КАРАОКЕ НА СТИЛЕ

Simbachka Бездомный кот Официальный Трек

Simbachka Симба Я Люблю Тебя Официальный Трек

Я КОТ НА СТИЛЕ Пісня з словами

КАК СТИЛЬНО ОДЕВАТЬСЯ МУЖЧИНЕ 7 Правил Стиля Которые Должен Знать Каждый Мужской стиль 2020

Новый трек Симбочки Младшего

965.82 KB 00:00:43 827K

Джиган На чиле Feat Егор Крид The Limba Blago White OG Buda Тимати SODA LUV Гуф Video

Симба младший первий раз на снегу

381.84 KB 00:00:17 149K

Время и Стекло На стиле Песня На стиле в исполнении БАРБОСКИНЫХ

А4 Kids Right Cat Version Кошачий Remix Субтитры

Время и Стекло На стиле караоке PIANO KARAOKE ᴴᴰ НОТЫ MIDI

Время и Стекло На Стиле Making Of

А я код на стиле хахахахахахахаха

Сборка ВАЗ 2107 на новых компонентах Покрасил семерку дал вид в стиле оперстайл

Rakhim Fendi Official Music Video

7 РАДУЖНЫХ ИДЕЙ ДЛЯ НОВОГОДНЕГО НАСТРОЕНИЯ Лучшие преображения в стиле единорога

BMW M3 НА СТИЛЕ ИЗ 80 Х ПРОСТО ПУШКА ВЫБИЛ БЛАТНОЙ НОМЕР В МРЭО ЗА 500 РУБЛЕЙ Radmir RP

Правила делового стиля для женщин и дресс код Модный бизнес гардероб от Siberian Wellness

Маска Заяц Gangnam Style

Как получить FAMAS На стиле Тайный код покажу

Simbachka Симба я люблю тебя ПРЕМЬЕРА КЛИПА

Смена 10 часов Яндекс такси Бизнес класс Такси на стиле Бизнес такси Москва

День Рождения Насти в стиле ЛОЛ Белый ЕДИНОРОГ PonyCycle в ПОДАРОК Куклы LOL игрушки для детей

Лайфхаки в стиле ЛЕДИ БАГ от Маринетт и Адриана

Лютая приора за 85к на стиле мажорка

Шиндо лайф Когда Коды на 2500 спинов Moon Ken Style Shindai Sun Spirit Новости Шиндо Лайф

ПКМК НА СТИЛЕ APEX LEGENDS MOMENTS

Пони Клип На стиле чит опис

ПЕСНЯ БРАВЛ СТАРС бравл старс на стиле ПАРОДИЯ НА ЯМАУГЛИ ТАРАНТИНО

Динамический поворотник в стиле AUDI с открытым кодом на ARDUINO

Метка Пропуск Яндекс Такси Чип Бесконтактный пропуск в Шереметьево Такси на стиле

GTA RPBOX НОВЫЙ ТЮНИНГ ЗАТЮНИНГОВАЛИ НАШУ TOYOTA AE86 ТОЙОТА НА СТИЛЕ GTA RPBOX

Здесь Вы можете прослушать и скачать песни по запросу Код На Стиле в высоком качестве. Для того чтобы прослушать песню нажмите на кнопку «Слушать», если Вы хотите скачать песню или посмотреть клип нажмите на кнопку «Скачать» и Вы попадете на страницу с возможностью скачать песню, прослушать ее и посмотреть клип. Рекомендуем прослушать первую композицию Simbachka Кот На Стиле Официальный Трек длительностью 2 мин и 7 сек, размер файла 2.79 MB.

Jollibee Song And Dance

Черёмуха Цветёт Разбор На Баяне

Осенней Слезой Разбиваясь Плакал Дождь

O Lux Beate Trinitas Te Mane Laudum Carmine Arr For Chamber Ensemble Ensemble Galilei

Меме Чтобы Было Весело Наченаем Месиво

Гулжигит Сатыбеков Айзирек

Naruto Salva A Sakura De Susuke Sub Esp Naruto Shippuden Marco

Bass Boosted Phonk Музыка В Машину 2021 Новинки С Басами Громкий

Kakow Owezow On Altydan Gecen Gyzlar Miras

Ороми Чонам Номи Мухаммад

Return Of Hip Hop Ooh Ooh Feat Krs One Torch Mc Rene Dj Tomekk

Источник

Стильный код на Python, или учимся использовать Flake8

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек
Автор: Анатолий Соловей, developer

Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:

Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

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

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

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

На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.

Flake8: Your Tool For Style Guide Enforcement

Сам Flake8 — инструмент, позволяющий просканировать код проекта и обнаружить в нем стилистические ошибки и нарушения различных конвенций кода на Python.

Flake8 умеет работать не только с PEP 8, но и с другими правилами, к тому же поддерживает кастомные плагины, поэтому в дальнейшем в этой статье я буду отталкиваться от правил из Google Python Style Guide.

Почему Flake8?

Flake8: pep8 + pyflakes + more

Создатель Flake8 Тарек Зиаде ставил перед собой цель объединить главные популярные инструменты контроля кодстайла в одной библиотеке, с чем в итоге успешно справился — Flake8 получился действительно универсальным.

Легкость установки и конфигурации

Чтобы проверить, отвечает ли код в вашем проекте основным требованиям PEP 8, достаточно установить Flake:

и запустить его — просто ввести в командной строке:

после чего вы получите список с именами файлов и номерами строк, где были допущены ошибки, и подробное описание самих ошибок:

Великолепно, не правда ли? Но и это не всё. Если вы не любитель работать с консолью, то вы можете настроить интеграцию Flake8 с IDE или редактором, который вы предпочитаете использовать.

Интеграция Flake8 с редакторами и IDE

Интеграция с PyCharm
Так же актуально и для любой другой IDE от JetBrains.
Интеграция проводится всего за пару несложных шагов.

Откройте настройки External Tools в File → Settings → Tools и нажмите на “+”, затем заполните поля по этому шаблону:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

После этого нажмите на Output Filters, а затем на “+”, чтобы добавить новое правило для вывода сообщений от флейка:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек
Здесь мы говорим PyCharm, что хотим, чтобы в выводе строки с ошибками были кликабельными и открывали в редакторе файл и место с ошибкой

Все. Интеграция Flake8 с PyCharm закончена. Чтобы вызвать флейк и проверить свой код, кликаем правой кнопкой мыши на файл/директорию, которую мы хотим проверить, и в контекстном меню выбираем External Tools → Flake8.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

В выводе PyCharm появится кликабельный список нарушений в выбранном файле/директории:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Интеграция с Atom
Чтобы установить инструмент Flake8 для Atom, используйте Atom package manager в Settings и найдите там linter-flake8:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

из командной строки.

Затем перейдите в linter-flake8 settings и укажите путь к директории, где установлен flake8:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

У linter-flake8 есть собственный ReadMe по настройке, с которым при желании вы можете ознакомиться на странице самого linter-flake8 в Atom.

Наличие Version Control Hooks

Именно это я считаю главным достоинством Flake8, которое выделяет его среди других линтеров. В отличии от большинства подобных инструментов, где для настройки VCS-хуков используются целые отдельные библиотеки и модули (как, например, в Pylint), настройка хуков в флейке проводится буквально в две строчки.

На момент написания этой статьи, Flake8 умеет использовать pre-commit-хуки для Git и Mercurial. Эти хуки позволяют, например, не допускать создания коммита при нарушении каких-либо правил оформления.

Установить хук для Git:

И настроить сам гит, чтобы учитывать правила Flake8:

Я продемонстрирую, как Git hook работает на проекте, который я использовал для примера интеграции Flake8 с PyCharm. В модуле flake8tutorial.py мы видим очевидные ошибки: импортированные и неиспользованные модули, остсутствие докстринга и пустой строки в конце файла.

Первым делом проинициализируем в этом проекте git-0репозиторий, установим flake8 хук и скажем нашему git, что он должен прогонять флейк перед коммитами:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Затем попробуем провести первый коммит:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Как видите, flake8 был вызван перед коммитом и не позволил нам закоммитить невалидные изменения.

Теперь фиксим ошибки, отмеченные флейком, и пытаемся закоммитить валидный код:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Коммит успешно создан. Отлично!

Настройка Flake8 для Mercurial практически идентична. Для начала нужно установить Flake8 Mercurial Hook:

И настроить сам Mercurial:

Вот и все, хук для Меrcurial установлен, настроен и готов к использованию!

Подробнее о конфигурации Flake8

Базовая конфигурация

Список дополнительных опций и правил можно передать прямо при вызове из командной строки таким образом:

(в этом примере опцией select мы говорим, чтобы Flake сообщал о нарушениях только правила E123 (это код правила “closing bracket does not match indentation of opening bracket’s line”)).

Кстати, полный список опций с описанием вы можете найти в документации к самой библиотеке.

На мой взгляд, куда предпочтительнее настраивать Flake с помощью конфигурационных файлов, вы можете хранить настройки в одном из файлов setup.cfg, tox.ini или.flake8. Для ясности я предпочитаю использовать последний вариант.

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

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

Также можно добавить в исключения отдельную строку в вашем модуле, просто оставив на этой строке комментарий noqa. Тогда при проверке модуля Flake8 будет игнорировать ошибки, найденные в строках, помеченных этим комментарием:

Модули, расширяющие функциональность

Так как Flake позволяет создавать и использовать кастомные плагины, для него можно найти большое количество open-source плагинов. Я опишу только те, которые использую сам и считаю особенно полезными:

Плагин, проверяющий порядок импортов в проекте: в стандартной конфигурации первыми должны идти импорты стандартных библиотек (stdlib), затем импорты сторонних библиотек, а потом локальные пакеты, причем каждая группа отделена пустой строкой и отсортирована в алфавитном порядке.

Этот плагин расширяет список предупреждений Flake, добавляя туда три новых:

Более подробно о настройке flake8-import-order можно прочитать на странице библиотеки на Github.

Плагин, добавляющий поддержку функционала из pydocstyle — проверку докстрингов на соответствие конвенциям Питона.

Список добавляемых этой библиотекой правил можно найти в документации pydocstyle.

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

Страница библиотеки на Github тут.

Плагин, проверяющий код на использование встроенных имен в качестве переменных или параметров.

Как и в случае с flake8-docstrings, у плагина нет дополнительных настроек, но добавленные им правила можно, например, внести в исключения флейка:

Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.

Плагин, позволяющий контролировать тип кавычек, которые будут использоваться в проекте.

Более подробную информацию об этом плагине можно найти на странице этого плагина на Github.

Послесловие

Хотя настройки, описанные выше, в 97,5 % случаев смогут предотвратить появление некачественного кода в репозитории, он так или иначе может оказаться запушенным (например, если деву было лень вводить две строчки для настройки pre-commit hook). Поэтому я настоятельно рекомендую добавить вызов Flake8 на этапе билда пул-реквестов в используемой вами системе continuous integration, чтобы предотвратить мердж невалидных пул-реквестов и попадание ошибок в мастер.

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

Источник

Стилизация старого доброго элемента button

Кнопка — это один из тех элементов, которые чаще всего используются на веб-страницах. Тег может быть применён для запуска некоего процесса вроде вывода данных, открытия модального окна, отправки формы и так далее. В материале, перевод которого мы публикуем, речь пойдёт о тонкостях стилизации элемента button и о том, как оформлять кнопки с учётом того, чтобы они хорошо работали бы в любых браузерах. Кроме того, тут будет рассмотрено большинство часто используемых стилей кнопок. Поговорим мы здесь и о некоторых сложностях, которые возникают при работе с кнопками.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Стили, применяемые к кнопкам по умолчанию

Может, разговор о «стандартных стилях» покажется кому-то обсуждением каких-то элементарных вещей, но, на самом деле, поговорить об этом довольно интересно. Вот стандартная таблица стилей для кнопок из пользовательского агента Google Chrome.

А вот как выглядит стандартная кнопка, при выводе которой стили по умолчанию не менялись.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Простая кнопка, к которой применены стандартные стили

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Свойство appearance этих кнопок установлено в none

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопка после сброса свойств

Теперь, когда мы сбросили стандартные стили кнопки, пришло время двигаться дальше. А именно, я хочу рассказать о том, как стилизовать кнопки, основываясь требованиях, предъявляемых к их дизайну.

Стилизация обычных кнопок

Начнём с базового примера, поговорив о стилизации обычных кнопок, на которых выводится лишь текст. На следующем рисунке представлена «анатомия» обычной кнопки.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Цвет текста (Text Color), размер шрифта (Font Size), фон (Background), скругление углов (Roundness), внутренний отступ (Padding)

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

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Обычное состояние кнопки (Normal), получение фокуса (Focus), наведение на кнопку указателя мыши (Hover), отключение кнопки (Disabled)

▍Стили, применяемые к кнопкам при наведении на них мыши и при получении ими фокуса

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

Этот материал указывает на то, что важен порядок добавления стилей, применяемых к кнопке при наведении на неё мыши ( hover ) и при получении ей фокуса ( focus ).

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Хорошо, если сначала идёт стиль hover, а потом — стиль focus

Вот как выглядит правильный порядок описания стилей:

▍Минимальная ширина кнопки

Для того чтобы кнопка хорошо выглядела, она должна иметь определённую ширину. Важно заранее об этом подумать и принять во внимание длинные и короткие надписи, которые могут содержаться на кнопках. Благодаря свойству min-width можно установить минимальную ширину кнопки. Вот моя статья, где в подробностях обсуждается это и другие подобные свойства.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Стоит задавать свойство кнопок min-width

▍Внутренние отступы

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

Взглянем на следующий рисунок.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Рекомендовано назначать кнопкам внутренние отступы

▍Семейство шрифта, используемого для надписей, расположенных на кнопках

▍Стилизация отключённых кнопок

Для того чтобы указать пользователю на то, что кнопка отключена, к ней можно добавить атрибут disabled и стилизовать кнопку средствами CSS.

Вот HTML-код, описывающий отключённую кнопку:

Вот CSS-код стилизации такой кнопки:

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

▍Внешний вид указателя мыши при наведении его на кнопку

Стандартный указатель мыши, наведённый на кнопку, выглядит как стрелка. Мне нравится этот ответ на StackOverflow: «Кнопки — это традиционный элемент управления настольных программ. Это — среда, в которой указатель в виде руки никогда не использовался до наступления эры интернета. Когда на веб-страницах стали применять тот же самый элемент управления, разработчики просто пытались сделать так, чтобы кнопки выглядели так же, как в настольных приложениях».

Для того чтобы переопределить обычное поведение указателя, рекомендовано поменять стандартный курсор-стрелку на курсор в виде руки.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Стандартный курсор-стрелка и улучшенный курсор в виде руки.

Теперь, когда мы обсудили базовые вопросы стилизации кнопок, приведём полный CSS-код, включающий в себя всё то, чего мы коснулись выше:

В следующих разделах мы поговорим о разных стилях и типах кнопок, которые вы можете использовать в своих проектах.

Кнопки со значком

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

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Примеры кнопок со значками

Обратите внимание на то, что я воспользовался стилем vertical-align: middle для того чтобы выровнять значок и содержимое кнопки по вертикали.

Вот HTML-код кнопки, о которой идёт речь:

Может показаться, что теперь достаточно просто скрыть элемент span и дело будет сделано:

Хотя при таком подходе текст пропадает, а значок остаётся, это очень плохо в плане доступности контента. Кнопку уже «не видят» инструменты для чтения с экрана. Например, VoiceOver в macOS сообщает о том, что такая кнопка — это просто «Button», без каких-либо подробностей о ней. У этой проблемы есть несколько решений.

▍Использование SVG-значков

▍Настройка размеров кнопки со значком

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопка, у которой задано CSS-свойство min-width, и кнопка, у которой это свойство не задано

▍Визуальное скрытие текста

▍Установка размера шрифта в 0

▍Использование атрибута aria-label

Если вы хотите больше узнать о кнопках со значками — взгляните на этот материал.

Кнопки, содержащие несколько строк текста

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

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопка, содержащая две строки текста

Тут показана кнопка для формы подписки, содержащая основной и вспомогательный текст. Как сделать такую кнопку и при этом не забыть о её доступности для людей с ограниченными возможностями? Вот соответствующий HTML-код:

Средство для чтения с экрана «озвучит» эту кнопку как «Subscribe to our newsletter 240K+ subscribers». Когда пользователь это услышит, это его может запутать, так как ничто не будет разделять две строки текста, выводимые на кнопке. Взгляните на скриншот инструмента Chrome для исследования доступности элементов.

включи код на стиле. 68a1b4465f36200eeb3091667ba2c120. включи код на стиле фото. включи код на стиле-68a1b4465f36200eeb3091667ba2c120. картинка включи код на стиле. картинка 68a1b4465f36200eeb3091667ba2c120. Simbachka Кот На Стиле Официальный Трек

Исследование доступности элементов в Chrome

Для того чтобы не путать пользователей, я предпочёл бы скрыть вторую строку текста от средств для чтения с экрана. Сделать это можно, использовав атрибут aria-hidden в соответствующем элементе :

Если по какой-то причине изменить HTML-разметку нельзя, есть и другой способ добавления дополнительного текста на кнопку. Решение этой проблемы, которое показалось мне интересным, я нашёл на сайте Smashing Magazine. Оно заключается в том, чтобы размещать содержимое, пользуясь псевдоэлементами. При таком подходе средства для чтения с экрана не будут видеть ничего лишнего. Вот CSS-код этого решения:

Ссылки () или кнопки ( )?

Когда стоит пользоваться ссылками, а когда — кнопками? Для начала давайте поговорим о том, чем они отличаются друг от друга.

▍Ссылки

▍Кнопки

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Использование ссылок и кнопок

▍Элемент не обязан выглядеть как кнопка

Мне нравится этот пример, в котором, с учётом требований доступности контента, реализована панель-«аккордеон». Вначале, если представить, что JavaScript недоступен, результат рендеринга разметки выглядит так, как показано ниже.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Материалы страницы в условиях недоступности JavaScript

Вот HTML-код фрагмента такой разметки:

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

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Материалы страницы в условиях, когда JavaScript-функциональность доступна

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

▍Кнопка загрузки

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Ссылка для загрузки документа, оформленная как кнопка

Вот код этой ссылки:

При таком подходе в нашем распоряжении оказывается ссылка, стилизованная как кнопка, которая делает своё дело, используя лишь семантические структуры HTML.

Кнопки с обводкой

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Обычная кнопка при наведении на неё мыши становится кнопкой с обводкой

Благодаря такому подходу в нашем распоряжении оказывается кнопка, вокруг которой, при наведении на неё мыши, выводятся её границы. При этом фон кнопки становится прозрачным.

Градиентные кнопки

Когда я работал над статьёй о позиционировании элементов, мне понадобилась кнопка с градиентным заполнением.

Мне было нужно нечто, подобное следующему рисунку.

включи код на стиле. c495dfd572b9ad4c402a8a11d7c56976. включи код на стиле фото. включи код на стиле-c495dfd572b9ad4c402a8a11d7c56976. картинка включи код на стиле. картинка c495dfd572b9ad4c402a8a11d7c56976. Simbachka Кот На Стиле Официальный Трек

Градиентная кнопка и её вариант с обводкой

Тут представлены два варианта кнопки — градиентная кнопка и кнопка с обводкой. Для того чтобы добиться такого внешнего вида кнопки, мне нужно было, чтобы у базовой (градиентной) кнопки имелась бы прозрачная граница. Эта граница будет показана только для кнопки с обводкой.

Тут всё, вроде бы, выглядит разумно, но в ходе работы я столкнулся со странной проблемой. Я даже попытался решить её, попросив помощи у пользователей Twitter. Эта проблема представлена на следующем рисунке.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Обычная кнопка, кнопка с градиентом (граница, на самом деле, прозрачная; цветом она выведена лишь для наглядности), кнопка со странными краями

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

Я попробовал добавить к кнопке широкую границу для того чтобы понаблюдать за тем, что из этого получится. Обратите внимание на то, как повторяется градиент, и на то, что его размер соответствует свойству padding кнопки.

включи код на стиле. 1bbd1201fe9295a028055d05bb26c0d6. включи код на стиле фото. включи код на стиле-1bbd1201fe9295a028055d05bb26c0d6. картинка включи код на стиле. картинка 1bbd1201fe9295a028055d05bb26c0d6. Simbachka Кот На Стиле Официальный Трек

Кнопка с широкими границами и градиент

Вот, если хотите поэкспериментировать, пример на CodePen.

Что лучше — height или padding?

▍Фиксированная высота

Предположим, что у нас имеется кнопка, стилизованная следующим образом:

При таком подходе текст не выравнивается по центру. Выглядит всё это так, как показано ниже.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопка, текст которой не выровнен по центру

Но у этого метода есть минусы:

▍Вертикальный внутренний отступ

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

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Попытка центровки текста кнопки

Вот CSS-код стилизации этой кнопки:

В этом случае содержимое кнопки выглядит слегка смещённым. Значение верхнего внутреннего отступа нужно немного уменьшить:

Оборачивание содержимого кнопки в тег

В ходе экспериментов я выяснил, что центровка текста кнопок Adobe немного сбита. Вот как это выглядит.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Центровка немного сбита

Я исследовал эти кнопки и заметил интересный паттерн. Содержимое обёрнуто в элемент с указанием фиксированной высоты для кнопки.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Изменение высоты кнопки и автоматическое центрирование её содержимого

Вот и всё. Хочу отметить, что при написании данного раздела мне помогла эта статья.

Кнопки внутри flexbox- или grid-контейнеров

Тут у вас может появиться вопрос о том, какое отношение кнопки имеют к flex- и grid-макетам. Позвольте мне прояснить этот вопрос.

Я работал над разделом одного проекта. Мне нужно было вертикально центрировать его содержимое. Поэтому я использовал flex-макет:

То, что у меня получилось, меня несколько удивило.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Результат использования flex-макета

По умолчанию каждый flex-элемент растягивается в пределах ширины родительского элемента. Именно это и произошло с кнопкой, представленной на предыдущем рисунке. Для того чтобы избежать этой неприятности, нужно настроить свойство align-self :

Вот как кнопка будет выглядеть после этого.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопка выглядит гораздо лучше

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопка, растянутая по высоте

Задавая выравнивание кнопки относительно центра контейнера, мы решаем проблему. Вот как теперь будет выглядеть тот же пример.

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Решение проблемы растянутой кнопки

Использование единиц измерения em

Единицу измерения em можно использовать для правильной настройки размеров кнопок. Эта единица измерения в такой ситуации весьма полезна. Единица измерения em равна font-size элемента ( px или rem ). Взглянем на следующий пример:

включи код на стиле. image loader. включи код на стиле фото. включи код на стиле-image loader. картинка включи код на стиле. картинка image loader. Simbachka Кот На Стиле Официальный Трек

Кнопки разных размеров

А вот фрагменты CSS-кода, в котором используется единица измерения em :

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

→ Вот пример использования подобных кнопок на CodePen

→ Вот моя статья на эту тему. Рекомендую с ней ознакомиться

Анимация и переходы

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

Итоги

Мне было очень приятно работать над этим материалом. Его написание заняло у меня больше года. Я счастлив от того, что он, наконец, опубликован. Надеюсь, вы нашли здесь что-то такое, что вам пригодится.

Уважаемые читатели! Известны ли вам какие-нибудь полезные способы работы с кнопками, которые остались за рамками этой статьи?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *