Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1312 сообщений
Cообщения с меткой

верстка - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Изоляция css стилей с помощью компонентного подхода

Воскресенье, 13 Августа 2017 г. 10:00 (ссылка)

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



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

Когда у нас в макете много разных по оформлению блоков, которые несут в себе один смысл, использовать понятное имя становится сложно. Чтобы добиться нужного результата приходится добавлять к имени еще что-то. Это все может сделать код трудным для восприятия (как длиннющие названия классов в беме).

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



Важную роль во всем этом играет еще то, как организована структура проекта. Чаще всего можно встретить свалку файлов в каталоге css(и не только там), тому кто пришел в проект бывает совсем не очевидно, в каком файле лежит нужный стиль и как стили одного файла влияют на стили другого файла. Хотелось бы верить, что когда все браузеры научатся понимать стандарты web components, проектов с помойной структурой станет меньше, и эти проблемы исчезнут.

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



Как делают другие?



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



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

Докатились до того, что, в js запихнули не только html, но стали писать еще и css, ломая устоявшиеся стереотипы, что так делать плохо. И тут можно сказать, что мы возвращаемся к тому с чего начали, свалка из структуры проекта перекочевала в код компонента.



Мне нравится как подошли к этому вопросу разработчики Angular. Каждый компонент изолирован, стили внутри компонента никогда не пересекутся со стилями другого компонента, даже если они будут иметь одинаковое имя класса. Это достигается путем добавления уникального рандомного атрибута к каждому тегу элемента. Этот же атрибут добавляется к каждому классу в css. Чтобы не пугать тех, кто не знаком с Angular, добавлю, что исходный код компонента html и css является “чистым”, уникальные атрибуты добавляются при сборке приложения. Все файлы лежат отдельно друг от друга.



Пару слов про новый велик



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



Чтобы в проекте был порядок, необходимо разбить каждый элемент макета на отдельные компоненты из которых потом будут собираться страницы. Думаю, что всем понятно, в чем сила компонентов. Если нет, то тут learn.javascript.ru/webcomponents-intro коротко и ясно объясняется.



Структура проекта



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

В каждом компоненте должен лежать файл html и css, если есть какая-то логика, то, там же следует разместить js файл.

Каждый компонент должен иметь свой тег. Желательно, чтобы в теге был дефис, например:



Такие правила заложены в стандарте custom elements, который пока мало где работает caniuse.com/#search=Custom%20Elements, но это не беда, рано или поздно заработает везде.

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



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



Вот такая получилась структура проекта:



После отработки всех gulp тасков, можно будет увидеть во что превратился код.





Код примера:

github.com/A50/encapsulateHtmlCss

Плагин:

www.npmjs.com/package/gulp-encapsulate-htmlcss




Как думаете, такой подход жизнеспособен?






































Никто ещё не голосовал. Воздержался 1 человек.





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






































Никто ещё не голосовал. Воздержался 1 человек.





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


Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/335510/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
granteweahung73

Без заголовка

Вторник, 08 Августа 2017 г. 19:45 (ссылка)

Верстка этикетки в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
frugesidiz78

Без заголовка

Вторник, 08 Августа 2017 г. 19:30 (ссылка)

Верстка флаера в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
joylononi75

Без заголовка

Вторник, 08 Августа 2017 г. 19:27 (ссылка)

Верстка стикерсета в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
lumsakacheck76

Без заголовка

Вторник, 08 Августа 2017 г. 19:20 (ссылка)

Верстка раскраски в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
perdgemecan74

Без заголовка

Вторник, 08 Августа 2017 г. 19:14 (ссылка)

Верстка пластикогового пакета в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
maniguacom78

Без заголовка

Вторник, 08 Августа 2017 г. 19:12 (ссылка)

Верстка пакета ПНД в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
cursurothun81

Без заголовка

Вторник, 08 Августа 2017 г. 19:11 (ссылка)

Верстка пакета ПВД в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
iraratca75

Без заголовка

Вторник, 08 Августа 2017 г. 19:01 (ссылка)

Верстка отчета в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
lundcomgau

Без заголовка

Вторник, 08 Августа 2017 г. 19:00 (ссылка)

Верстка открытки z-card в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
ilhenreakah72

Без заголовка

Вторник, 08 Августа 2017 г. 18:58 (ссылка)

Верстка открытки pop-up в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
aberrahsand84

Без заголовка

Вторник, 08 Августа 2017 г. 18:55 (ссылка)

Верстка наклейки в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
monphomictorr78

Без заголовка

Вторник, 08 Августа 2017 г. 18:48 (ссылка)

Верстка меню с ламинацией в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
clutalimtmak70

Без заголовка

Вторник, 08 Августа 2017 г. 18:47 (ссылка)

Верстка меню в папке в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
gisttextcasix86

Без заголовка

Вторник, 08 Августа 2017 г. 18:46 (ссылка)

Верстка меню pop-up в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
tratizinen84

Без заголовка

Вторник, 08 Августа 2017 г. 18:42 (ссылка)

Верстка коробки с прозрачным окном в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
quiteslifttu71

Без заголовка

Вторник, 08 Августа 2017 г. 18:37 (ссылка)

Верстка коробки с ложементом из ткани в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
tingropiso74

Без заголовка

Вторник, 08 Августа 2017 г. 18:30 (ссылка)

Верстка коробки с ложементом из пластика в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rhinrotichard83

Без заголовка

Вторник, 08 Августа 2017 г. 18:24 (ссылка)

Верстка коробки на заказ в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
matcessflatrib84

Без заголовка

Вторник, 08 Августа 2017 г. 18:21 (ссылка)

Верстка коробки для обуви в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
unsonutgang87

Без заголовка

Вторник, 08 Августа 2017 г. 18:19 (ссылка)

Верстка коробка сувенирная в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
tyiragacon80

Без заголовка

Вторник, 08 Августа 2017 г. 18:14 (ссылка)

Верстка коробка подарочная в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
unimovli78

Без заголовка

Вторник, 08 Августа 2017 г. 18:08 (ссылка)

Верстка коробка кашированная в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
diaratucock82

Без заголовка

Вторник, 08 Августа 2017 г. 18:01 (ссылка)

Верстка коробка из пластика в Москве
Подробнее тут - http://www.pelikanprint.ru/


Типография Пеликан
Телефон: 8 (495) 36-36-228

E-mail: hello@pelikanprint.ru
http://www.pelikanprint.ru/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<верстка - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda