Как стать автором
Обновить

Комментарии 18

Заковыристые вопросы, однако. ? Но оно того стоит! Познавательная статья, почерпнул для себя новые свойства. Автору благодарность. ?

Спасибо за вопросы. Но для себя подумал - css изначально создавался как стильный инструмент над html и включал в себя, что этим будут заниматься дизайнеры, а не программисты. В этом была своего суть разделения задач. Но сейчас css такой мощный, но при этом и сложный, что 'просто' креативным челам он неподступен. Только спецам, которые могут и хотят погружаться по полной.

Более 10 лет нечем кроме как разработкой веб сайтов не занимаюсь, причем проекты крупные, дорогие с разными клиентами а-ля Apple. От визуальных редакторов лендосов до систем bowtie на нефтяных вышках. Разумеется своих бутстрапов в сторибуках понаписано.

И по правде говоря, я наверное ни на один вопрос, твердо не отвечу. Да кому я вру, я ваще не шарю все это, тем более :is и :where мне кажется впервые вижу.
Возможно я тупой, но проекты делаются, задачи решаются и без ответов на эти вопросы, тем более на собесе или что бы я у кого-то это спросил лол

Согласен. Бизнесу все равно как это сделано, если оно удовлетворяет требованиям. Поэтому зачастую проще использовать устаревшие технологии, которые с большей вероятностью будут работать у большинства пользователей. И как показывает практика этих устаревших технологий хватает с головой :)

Заголовок статьи надо переименовать в "Мои любимые вопросы о CSS для верстальщиков-экспертов с ответами." Тут реально надо просто иметь спеку в голове.

Для общего развития - шикарная статья, спасибо.

Ну это так было и будет. Кому-то кроме стамески и молотка ничего не надо, кому-то бумаги и ножниц - чтобы чудеса творить. А кому-то и 3D принтера уже мало.

То же самое.
Да потому что Caniuse покажет, что году в 21 только стали эти свойства поддерживаться.
Все пользователи по команде браузеры обновили что ли? :)
А нам нужно чтоб работало без "сюрпризов".
P. S. Статья интересная, спасибо!

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

Чему равняется вычисленное значение для свойства width и height у элементов .child?

Очевидно оно зависит не только от самой grid-сетки, но и от содержимого этих самых child. Сделайте им размер шрифта побольше и удивитесь несоответствию результата вашему ответу как по высоте, так и по ширине.

Каким свойством можно сократить количество определённых свойств для псевдоэлемента ::before до трёх?

Замена установленных height и width на четверку top, right, bottom, left, и потом на inset - это, конечно здорово и спортивно, только это меняет логику работы кода. Добавьте, например, margin для ::before, и окажется, что код в вопросе и ответе работает по-разному.

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

Свойства margin, margin-block и margin-inline (и их составляющие в виде top, right, left и bottom) имеют разную логику работы. Версии block и inline зависят от свойств writing-mode, direction и text-orientation. Так что замена обычного margin на них может сломать верстку. Код в вопросе и ответе не эквивалентен. То же имеет отношение и к padding.

Так что вопросы, конечно, хороши, но в теории. А работа есть работа. Я бы не стал такое рекомендовать для вопросов на интервью. Для себя, почитать и восхититься возможностями языка - да, но не для интервью. Штуки вроде :focus-visible гуглятся за минуту при необходимости. За смешивание гридов, флексов и инлайнов на одном элементе нужно на ревью по голове стучать, чтобы коллег не путали неявными приведениями свойств друг к другу. Код долен быть очевидным, однозначно трактуемым с первого взгляда. А вычисленные значения будут зависеть от контекста и мы в подозрительных случаях будем смотреть в DevTools, чтобы видеть весь контекст, а не играть в угадайку.

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

Да, код работает не в вакууме. Вопросы создаются в вакууме, потому что проверятся/показывается какой-либо аспект-знание. Умение соединять разные аспекты, в частности " Сделайте им размер шрифта побольше", это отдельный навык, который не проверяется вопросами. Я постарался дать примеры кода, который максимально приближенны к практике. Например, свойством inset или margin-inline.

По поводу логических свойств. Посмотрите видео Kevin Powell или статьи Ahmad Shadeed. Они используют их так, как я написал в вопросах. То, что они могут сломать верстку при определении другого направления текста? Так люди либо это знают, либо узнают и примут решение, что с этим делать. Также существуют разработчики, которые делают проекты для микрокомпаний, у которых мультиязычность не востребована. У них ничего не сломается.

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

По поводу логических свойств. Посмотрите видео Kevin Powell или статьи Ahmad Shadeed. Они используют их так, как я написал в вопросах.

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

То, что они могут сломать верстку при определении другого направления текста? Так люди либо это знают, либо узнают... Статья про расширение кругозора

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

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

Я бы сказал, что это проблемы дизайна языка CSS. Вот зачем считать специфичность, если порядок применения стилей определялся бы по порядку определения в файле стилей? - это убрало бы треть каверзных вопросов из статьи.

это может замечательно сработает для одного файла стилей, но если файлов много и подключаются они не в строго определенном порядке, да еще где-то они инлайново в html вставляются в теге style

...тогда что? Надеюсь, что не открою для вас секрет, но в CSS и сейчас учитывается порядок объявления правил.

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

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

Чаще всего стили организуются по методологии BEM, целью которой является изоляция стилей по префиксу с названием компонента, а так же полное изничтожение концепции специфичности CSS. Популярность BEM - явный признак того, что специфичность селекторов CSS вредна.

(прошу прощения у автора поста)

Так как вопрос разработчикам Хабра. Дело в том, что времени читать посты, остается в ночное время с телефона, закладок много (черезчур) отложенных на прочтение, но из-за отсутствия ночной (темной) темы, я не могу сдвинуться с места.

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

Я не могу понять и принять, как на таком конкретно читальном сайте, нет выбора темной темы. Это сверх непонятная для меня ситуация. Просто обратить цвета, какие-то две функции - мешают множеству людей - читать ваш сайт.

Они вас здесь не увидят. Лучше спрашивать под постами в блоге Хабра.

есть приложение на андроиде для хабра, там более менее есть темная тема. На телефоне в хроме, тоже есть темная тема

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

Это не "мои любимые вопросы по css", а "я прочитал про css-grid и сейчас задолбаю вас заковыристыми вопросами, которые в жизни не встречаются... никогда".

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий