Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
*{
//
}
Так не должно быть. Пора оставить позади эру глобальных стилей. Наступило время закрытого CSS.
Несомненно, это было неплохой попыткой приручить CSS. Но ни одна из этих методик по сути не решает проблему, а только пытается обойти — какую из них ни выбери, селекторы так и останутся глобальными.
Всё изменилось 22 Апреля 2015
browserify, webpack или нативный браузерный es6 import, если в любом случае мы пишем строчкуimport Module from './Module';
<dom-module id="my-element">
<template>
<style>
.super {color: red;}
</style>
<div class="super">Hello, red!</div>
</template>
<script>
Polymer({
is : 'my-element'
});
</script>
</dom-module>
<template></template> с собтвенным тэгом <style></style> — офигительно удобно.<link rel="import" href="polymer.html">
<script src="webcomponents.js"></script>
<script>Polymer = {dom: 'shadow'};</script>
<link rel="import" href="polymer.html">
как-то более естественно чем CSS из JS + HTML
такой подход пытается решить самораздутую проблему с глобальной областью видимости с CSS это всё
При этом, во-первых, нифига её не решает, т.к. единственная разница в конечном CSS, так это названия селекторов в CSS станут короче
Во-вторых отхватите проблемы с кривыми импортами, дублированием импортов или импортом не того и не туда
.js файлов таких проблем нет? В чем разница?В-третих, как это все замечательно будет смотреться в девтулзах, когда в браузере на проде ты видишь селектор ._1rJwx92-gmbvaLiDdzgXiJ { … } и не понимаешь откуда он
Во-вторых отхватите проблемы с кривыми импортами, дублированием импортов или импортом не того и не туда.
В-третих, как это все замечательно будет смотреться в девтулзах, когда в браузере на проде ты видишь селектор ._1rJwx92-gmbvaLiDdzgXiJ { … } и не понимаешь откуда он.
import {ItemView} from 'backbone.marionette';
import styles from './styles.css';
export default class extends ItemView {
serilalizeData() {
// прокидываем стили в шаблон
return Object.assign(super.serializeData(), {styles});
}
}
<div class={{styles.foo}}></div>
line-height: 0.Больше нет необходимости лепить длинные префиксы
Конец эры глобального CSS