Top Banner
CSS REACT TALK Иван Котов, Zvooq.com November Moscow Tech Meetup image Kilian Schönberger
22

CSS React Talk

Apr 12, 2017

Download

Internet

Ivan Kotov
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CSS React Talk

CSS REACT TALK

Иван Котов, Zvooq.com

November Moscow Tech Meetupimage Kilian Schönberger

Page 2: CSS React Talk

Fundamentals1. return <button style={styleObject}>

ButtonName</button>

2. return <button className="btn">

ButtonName</button>

2

Page 3: CSS React Talk

classnames by JedWatsonvar classNames = require('classnames'),

LeColobok = React.createClass({

render() {

var colobokClass = classNames({

'LeColobok': true,

'LeColobok__good': this.state.isPressed

})

return <button className={colobokClass}>Cancel</button>

01.

02.

03.

04.

05.

06.

07.

08.

3

Page 4: CSS React Talk

План1. Штуки для classnames

2. Штуки для inline styles

3. Методологии именования классов

4. BEM mixin

5. Сборка стилей

4

Page 5: CSS React Talk

CSS — часть вайшей экосистемыкомпонентов

1. Predictable

2. Reusable

3. Maintainable

4. Scalable

Установка/отсутствие стиля может влиять на поведение

5

Page 6: CSS React Talk

CSS Naming1. SMACSS: leColobok class="rus-Colobok is-tasty"

2. suitcss

3. BEM leColobok class="colobok colobok__tasty"

4. BEVIS leColobok class="colobok _tasty_yes"

CSS Modules - сборка

6

Page 7: CSS React Talk

BEM это...БЭМ — это жесткий и очень топорный свод правил, который не несет

никакой практической пользы, если не брать в расчет проблемы

устаревшей табличной верстки. БЭМ уродует код и разрушает все

прекрасное, что есть в процессе верстки. Любое соприкосновение с БЭМ

напоминает бессмысленное и утомительное развешивание костылей.

http://habrahabr.ru/users/Fibril/

“7

Page 8: CSS React Talk

BEM это...If you follow all of the rules (of BEM), you’ll avoid the single hardest problem

in CSS: Getting your rules to match the elements you want, without them

accidentally matching the elements you don’t.

Philip Walton“

8

Page 9: CSS React Talk

Именование стилей1. albburtsev/bem-cn: SMACSS, BEM

2. azproduction/b_: BEM, BEVIS

dfilatov/bem-react не про стили, это гибрид

9

Page 10: CSS React Talk

Примеры1. b('leColobok', {escaped: 'from-granpa'}) ->->

'leColobok leColobok_escaped_from-granpa';

2. b('leColobok', 'smile', {size: 'xxl'}) ->->

'leColobok__smile leColobok__smile_size_xxl';

10

Page 11: CSS React Talk

CSS Inheritance.fairyTailBeast

magic: 10px

border: 1px solid #eee

.leColobok

@extend .fairyTailBeast

color: #E2E21E

01.

02.

03.

04.

05.

06.

11

Page 12: CSS React Talk

Беcклассовый подход

12

Page 13: CSS React Talk

Radium

оооочень модно

13

Page 14: CSS React Talk

Radium Example@Radium

class LeColobok extends React.Component {

render() { return (

<button style={[

colobokStyles.base,

colobokStyles['is-tasty']

]}>

Cancel</button>)}}

01.

02.

03.

04.

05.

06.

07.

08.

14

Page 15: CSS React Talk

Беcклассовый подход отвратителен1. Бегство от стандартов

2. Нарушение принципа Single responsibility

3. Поэтому сложнее в переиспользовании

4. Увеличение кода страницы (избыточность)

5. Client side only: vendor prefixes, media queries

6. Конфликт с ReactCSSTransitionGroup

15

Page 16: CSS React Talk

CSS/React Principles by Zvooq1. 1 Component = 1 Block

2. CSS in separate file

3. Stylus + PostCSS

4. b_ mixin

5. Миксин знает название компонента

6. Миксин знает state

16

Page 17: CSS React Talk

Использование миксина b_ LeColobok = React.createClass({

mixins: [ BEM ],

getInitialState() { return { isGood: true }; },

render() { return <button

className={this.b_('_isGood')}>Cancel</button>

// 'leColobok leColobok_isGood'

}})

01.

02.

03.

04.

05.

06.

07.

17

Page 18: CSS React Talk

Еще примеры для b_1. b_([ '_isTasty', '_escapedFromGranpa' ]) ->-> //

this.state === {escapedFromGranpa : false}

'leColobok leColobok_isTasty'

2. b_('-smile_xxl') ->-> 'leColobok-smile leColobok-

smile_xxl'

18

Page 19: CSS React Talk
Page 20: CSS React Talk

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

20

Page 21: CSS React Talk

CSS build for React1. Webpack

2. Loaders: post | pre-processors

3. CSS Modules

Илья Кантор выложил отличные скринкасты

21

Page 22: CSS React Talk

Спасибо!