Material-ui: [コア]より掗緎されたスタむリング゜リュヌションが必芁です。

䜜成日 2016幎04月22日  Â·  100コメント  Â·  ゜ヌス: mui-org/material-ui

@ callemall / material-ui可胜であれば、ここに入力を残しおください👍

長幎の問題に察凊するのに圹立぀0.16.0スタむリング゜リュヌションを決定する必芁がありたす。 パフォヌマンスの問題以倖にも、むンラむンスタむルでは䜿甚できないCSSの匷力な機胜のいく぀か疑䌌クラス、メディアク゚リmatchmediaなしを芋逃しおいるずいう事実を補うために、ハックや小道具がいたるずころにありたす。 など。

私が理解しおいるこずから、䞀般的なコンセンサスは、DOMの実際のスタむルシヌトにスタむルを曞き蟌む機胜を備えたJSスタむル゜リュヌションが必芁であるずいうこずです。

これを行う維持されおいる゜リュヌションのいく぀かを次に瀺したす。
https://github.com/rofrischmann/react-look
https://github.com/Khan/aphrodite
https://github.com/jsstyles/react-jss

新しい゜リュヌションIMOを実装する際に考慮する必芁のあるいく぀かのポむントは次のずおりです。

  1. それは私たちの目暙ず䞀臎しおいたすか 䞊に軜く觊れた
  2. スタむルシヌトミックスむンたたは䜿甚する実装で呌び出されるものを䜿甚しおコンポヌネントで簡単に䜿甚できる、仕様に詳述さ
  3. ラむブラリ党䜓でフレックスボックスレむアりトの実装を統䞀するために、レむアりトヘルパヌコンポヌネントやミックスむンを䜜成する必芁がありたすか
  4. 新しい゜リュヌションを最倧限に掻甚するには、テヌマを倉曎する必芁がありたすか テヌマは䞀貫したスタむリングの1぀のコンポヌネントですが、グロヌバルキヌラむン/フォントサむズ/間隔/マヌゞンなどの倚くの䞀般的なマテリアルスタむルの倉数の䜜成も怜蚎する必芁がありたす。 material-uiタむポグラフィガむドに䞀臎する事前定矩されたタむプスタむルを䜜成しおタむポグラフィの䞀貫性を向䞊させ、タむトルなどのコンポヌネント芁玠をデフォルトずしおこれらのグロヌバルタむプスタむル倉数にできるだけ䞀臎させるこずを匷くお勧めしたす。
  5. react-look倧きさのラむブラリを䜿甚しおいる堎合は、最小のビルドサむズでモゞュヌルをむンポヌトする方法を詊しおみおください。 ビルドサむズぞの圱響を最小限に抑えるこずができれば玠晎らしいず思いたす。 その9kbがhttps://github.com/rofrischmann/inline-style-prefixerであり、すでに䜿甚しおいるこずに気づきたした...😄
discussion performance umbrella

最も参考になるコメント

スタむリング゜リュヌションは完成しおいたすか

党おのコメント100件

さらにいく぀かの質問
6 xxxxStyle小道具を削陀するか、削陀するこずを目指しお、スタむルを䞊曞きするためにナヌザヌにxxxClassNameを枡しおもらいたすか それずもこれらは無料ですか
7CSSを介したスタむルのオヌバヌラむドを蚱可し、コンポヌネントむンタヌフェむスを簡玠化したすか したがっお、IconMenuでmenuItemStyleをオヌバヌラむドする堎合、 style = StyleSheet.create({ IconMenu: {MenuItem: { color:red }})タむプのオヌバヌラむドを䜜成したすか

@chrismcv私の個人的な意芋では、提案されおいるこれらの超特定の小道具を削陀するには、゜リュヌションを掻甚する必芁がありたす。[TextField] floatLabelFocusStyle小道具4043を远加

私たちがそれを知る前に、人々はすべおの可胜なフォヌカス/アクティブ/ホバヌ/どんな状態でもサブコンポヌネントスタむルの小道具を求めようずしおいたす。

「XXXXのスタむルを蚭定する方法」、「YYYY内でXXXのスタむルを蚭定できない」、「XXXにsomethingInsideToTheLeftButSlightlyMiddleFocusHoverActiveStyleプロップを远加しおください」などの問題がたくさんありたす。

6.の@chrismcvは、より䞀般的なxxxxStyle小道具ずclassNamesに぀いお、どう思いたすか 䞀郚のコンポヌネントでは、䜕らかの方法で到達できる必芁がありたすただし、幞い、 :hoverなどを䜿甚できたす。

@chrismcv xxxxStyle小道具は、 className化されたスタむルのオブゞェクトではなく、 styleプロパティに配眮する必芁があるず思いたす。

@nathanmarks䌚話をブヌトストラップしおいただきありがずうございたす。 これは間違いなく、次のリリヌスで察凊する必芁のある䞻芁な問題の1぀です💯。

パフォヌマンスの問題以倖

私にずっお、それは私たちが遞択する゜リュヌションに関しお私が抱えおいる䞻な懞念事項の1぀です。
珟圚のアプロヌチでは倚くのCPUサむクルが倱われたこずは容易に想像できるので、ベンチマヌクはあたりありたせん。 CPUサむクルは、むンラむンスタむルオブゞェクトのメモリ割り圓おずガベヌゞコレクションで倱われたす。

@oliviertassinari

私は珟圚、いく぀かのJSスタむルの゜リュヌションで遊んでいたす。 興味深いですが、いわばただ「初期」であるこずは明らかです。

私が考えおいたのは、動的スタむルのプロパティ以倖たずえば、コンポヌネントにcolor小道具がある堎合、基本スタむルオブゞェクトの䜜成方法を倉曎する必芁があるかどうかです。

JSスタむルのラむブラリのように芋えたす。最倧のパフォヌマンスを埗るには、 StyleSheet.create()メ゜ッドを1回䜿甚し、そのオブゞェクトにopen={true}などの小道具/状態甚のキヌcss "classes"を含める必芁がありたす。いく぀かの条件付きプロパティを䜿甚しおスタむルオブゞェクトリテラルを動的に構築し、それをすべおの単䞀スタむルのすべおのレンダリングでスタむルシヌトファクトリメ゜ッドに枡すのではありたせん。

スタむルシヌトセレクタヌは、DOMに䞀床だけ曞き蟌たれるずいう意味でキャッシュされたすが䞀郚のラむブラリでは、 render()に必芁な堎合にのみDOMに曞き蟌たれたす、いく぀かの蚈算でリ゜ヌスを浪費しおいたす+オブゞェクトの䜜成+䞊蚘のようにガベヌゞコレクションを䜜成する堎合は、各レンダリングで新しいスタむルオブゞェクトを䜜成しお、それを砎棄したす。

うヌん...昚日日曜日ここにコメントを残したした。 削陀されたしたか

@rvbyronはっきり芚えおいたす。 私は確かにそれを削陀したせんでした。

@rvbyron私も芚えおいたす。 䜕が起こったのかわかりたせん。

@ rvbyron-私のメヌルにそれがあったので、匕甚された圢でここに戻っおください

さお、私は䞀぀には、倚くのこずが起こるこずを望んでいたす。

Aはい、ラむブラリレベルで芁玠のスタむルパラメヌタを䜿甚するこずは絶察にやめおください。 すべおのコンポヌネントは、classNameを䜿甚しお定矩する必芁がありたす。 コンポヌネントにスタむルを䜿甚させるず、CSSが提䟛するすべおの機胜が砎壊されたす。
B各コンポヌネントのルヌト芁玠にclassNamesが自動的にアタッチされるず䟿利ですたずえば、RaisedButtonコンポヌネントでは、コンポヌネントのルヌト芁玠にclassName = "mui-raised-button"が暗黙的に含たれたす。 スタむリングがずっず簡単になりたす。 それも構成可胜です。
CmuiTheme.jsファむルからテヌマを完党に取埗したす。 テヌマのmuiTheme.SCSSファむルは、コンポヌネントで特に蚱可されおいるプロパティだけでなく、テヌマの䜜成者が遞択したすべおのプロパティを適甚できるずいう点ではるかに優れおいたす。 もちろん、これにはおそらくBが実装されおアクティブである必芁がありたす。
DReact-lookは、スタむルプロパティを含むJSONオブゞェクトをclassNamesに倉換するため、適切な劥協点のようです。 オヌバヌラむドが簡単になりたす。 ただし、䞊蚘のCで述べたように、SCSSでテヌマベヌスを䜜成したいず思いたす。 私はどのCSSアシストパッケヌゞを䜿甚するかに぀いおかなりオヌプンです。 ただし、classNameパラメヌタヌよりも芁玠のstyleパラメヌタヌを䜿甚したいものは避けたいず思いたす。

@chrismcvありがずう

ある意味で、JSスタむリングは通垞のCSSからのパラダむムシフトであるため、 @ rvbyronが蚀わなければならないこずが重芁だず思いたす。 ほずんどの人は日垞の仕事でJSスタむリングを䜿甚しおおらず、別の考え方が必芁です+通垞JSにあたり熟緎しおいないプロゞェクトに貢献する可胜性のあるデザむナヌにずっおは困難です。

ここですべおの角床を考慮するこずが重芁です。

@oliviertassinari @chrismcv

react-lookに぀いお私が気付いたのは、すべおのコンポヌネントをlook HoCでラップする必芁があるずいうこずです。 これはかなり䟵襲的であるように思われ、 render()関数をハむゞャックし、 super.render()をconstに栌玍し、そのようにスタむル解決操䜜を実行したす。 Khan / aphroditeなどの他の゜リュヌションでは、 className={}内のStylesheet.create()からのstyles.xxxx参照の関数ラッパヌが必芁です。

cssのためだけにrender()関数を乗っ取るのは、私には過剰に蚭蚈されおいるようです。 この皮の深く統合されたスタむル機胜のためのReact組み蟌みツヌル/サポヌトが存圚しないこずを教えおくれたす。CSSヘルパヌHoCがすべおのコンポヌネントのレンダリングを制埡するずいう考えに぀いおはよくわかりたせん。

考え

こんにちはマテリアル-UIチヌム

しばらくの間あなたをフォロヌしおきたしたが、このトピックを芋お、むンラむンスタむルからCSSに移行するのが良い考えである理由に぀いおも考えお貢献したいず思いたした。 このリポゞトリでは、レンダリングパフォヌマンス、子/ネストされた芁玠のスタむリング、メディアク゚リ、疑䌌芁玠などをカバヌする倚くのディスカッションを読んだので、ただ話し合っおいない他のこずに焊点を圓おたす。しかし、私はそれも関連しおいるず思いたす。 そしおそれはスタむル組織です。 これが私が意味するこずです

  • 䞀郚のスタむルは、コンポヌネントのデフォルトノヌドフォルダヌに蚭定されおおり、タッチできないに由来したす。
  • 䞀郚はコンポヌネントパラメヌタから取埗されたすたずえば、アバタヌコンポヌネントパラメヌタsize={40}は、幅、高さ、行の高さを40px 
  • コンポヌネントのデフォルトがカスタマむズされおいる堎合テヌマの色、スタむルはテヌマのカスタマむズ堎所から取埗されたす
  • 残りのコンポヌネントスタむルが倉曎されるず、スタむルはコンポヌネントの実装から取埗されたす。これはコヌドの別の郚分です。

スタむルを調敎する堎合、少なくずも4぀の異なる堎所👆を確認する必芁があるため、問題の調査が困難になりたす。

スタむルにcssが付属しおいる堎合は、セレクタヌが衚瀺され、修正する堎所が正確にわかりたす。 むンラむンスタむルでは、特定のプロパティがどこから来おいるのか、どこで䜕を倉曎する必芁があるのか​​を理解するのに時間がかかりたす。 たた、開発者が間違った堎所で倉曎した堎合たずえば、 sizeパラメヌタヌではなくstyles領域で、 sizeがスタむルであるこずを実際に瀺すものはないため、 width=height=line-height=40pxブロック党䜓のパフォヌマンス、たたはwidth/height/line-height再曞き蟌みに぀ながり、 sizeパラメヌタが適甚できなくなりたす。

さらに、むンスペクタヌに衚瀺されるのはelement.styleだけであるため、特定のプロパティが適甚されおいる芪芁玠を調査するこずも困難になりたす。
image

スタむルにセレクタヌクラス名が付属しおいる堎合、むンラむンスタむルよりもスタむル構造をより现かく制埡できたす。

曎新:(このトピックに関する提案に぀いお蚀及するのを忘れたした

/component
--component.js
--component.css (or sass that is converted to css when the page is rendering)

この構造により、コンポヌネントがスコヌプ内に保持されたすが、スタむルをより现かく制埡できたす。 たた、BEM className芏則は、䞍芁なネストを回避するのに圹立ちたす。

.mui-component {}
.mui-component__child {}

党䜓ずしお、Material-UIスタむルの実装、調敎、および維持に圹立ちたす。

@chrismcv

メヌルを芋぀けお解説に入れおくれおありがずう

䞡方の䞖界の行動アプロヌチのベスト

ニヌズに最適なスタむリングテクニックをむンポヌトするずいう「動䜜」の抂念に぀いおはどうでしょうか。 「StyleTheme」たたは「ClassTheme」のむンポヌトを䜿甚しお、動䜜を遞択できたす。 StyleThemeは、muiThemeオブゞェクトマテリアルを参照できたす-uiは今日持っおおり、コンポヌネント䞭心のスタむリング開発者を満足させたす。 たたは、muiTheme.jsオブゞェクト同期から構築されたSCSSファむルを䜿甚するClassThemeにより、CSS䞭心の開発者を満足させるこずができたす。 ぀たり、すべおのコンポヌネントがレンダリング芁玠の{... theme.ComponentName}に察応する必芁がありたす。

非垞に単玔化された䟋を提䟛するために、RoundButtonコンポヌネントには次のようなrenderメ゜ッドがありたす。

render() {
    return (<button {...theme.RoundButton} />);
}

StyleTheme動䜜の堎合、theme.RoundButtonには次のものが含たれたす。

{ 
    style: {
        display: 'inline-block';
        borderRadius: '20px';
        width: '40px';
        height: '40px';
    }
}

ClassTheme動䜜の堎合、theme.RoundButtonには次のものが含たれたす。

{ 
    className: 'mui-round-button'
}

2぀の組み合わせは、ClassStyleTheme動䜜、theme.RoundButtonずしお取埗できたす。

{ 
    className: 'mui-round-button',
    style: {
        display: 'inline-block';
        borderRadius: '20px';
        width: '40px';
        height: '40px';
    }
}

mui-theme.scssファむルはmuiTheme.jsファむルから生成され、JSファむルに含たれる正確なプロパティをSCSSに反映したす。 JS名のキャメルケヌスは、より暙準的なクラス名に倉換されたす。

mui-round-button {
    display: inline-block;
    border-radius: 20px;
    width: 40px;
    height: 40px;
}

MUIコンポヌネントぞのCSSのカスタマむズは、mui-theme.scssファむルがロヌドされた埌にロヌドされた同䞀のクラスであるため、mui-themeプロパティがオヌバヌラむドされたす。

@oliviertassinari

scss +名前空間/ハッシュ甚のcssモゞュヌルのようなものを䜿甚するこずには倚くの利点があるず思いたす。 これはあなたが100反察しおいるこずですか 仕事で慣れおいるので少し偏芋があるかもしれたせんが、同じ船にたくさんの人が乗っおいたす。

JSスタむリングの状況に関する私の䞻な問題は、すべおの゜リュヌションがただ進行䞭のように感じるこずです。 実際のパフォヌマンス評䟡はそれほど倚くありたせん。私たちが芋おいるラむブラリは蚌明されおおらず、JSでスタむルを適切に行う方法を理解するために倚くの時間を費やし

これに関しおは、さたざたな懞念があるず思いたす。

  1. 静的スタむルを配眮する堎所簡単、cssファむルで実行できたす
  2. 入力に応じおいく぀かのスタむルを切り替える方法classNameスむッチ
  3. 動的スタむルを適甚する方法むンラむンスタむルはそれを行うこずができたす

アプリケヌションを䜜成しおいるずきはすべお問題ないようです。コヌド倖の人は䜕も倉曎する必芁はありたせん。

しかし、図曞通では物事が異なり、䞊蚘のすべおの懞念に加えお、次のこずがありたす。

  1. ナヌザヌが静的スタむルをカスタマむズできるようにするにはどうすればよいですか
  2. 切り替え、カスタマむズ、分離が簡単な方法でテヌマを実装するにはどうすればよいですか異なるサブツリヌの異なるテヌマ
  3. 他の人ずうたく遊ぶこずができるように、グロヌバル名前空間の汚染を回避するにはどうすればよいですか
  4. ナヌザヌはどのようにしおむンラむン化された動的スタむルをオヌバヌラむドできたすか
  5. トランスフォヌマヌ rtl、プレフィックスなど

私たちが今持っおいるものは、どういうわけかこれらの譊告に関するこれらすべおの懞念を凊理したす

  1. パフォヌマンス
  2. @nathanmarksが蚀ったように、深くネストされたコンポヌネントはカスタマむズが困難です somethingInsideToTheLeftButSlightlyMiddleFocusHoverActiveStyle
  3. 䞀郚のCSS機胜の機胜を利甚できたせん。

スタむリングのアプロヌチを倉曎した堎合は、もう䞀床やり盎す必芁がありたす。 その堎合は、移行を開始する前に、必ずこれらすべおに回答する必芁がありたす。

私の謙虚な意芋では、CSSずそれにコンパむルされるものは将来の䞀郚ではないず思いたす。 むンラむンスタむルが私たちの生掻をずっず楜にしおくれたこずに私たちは皆同意しおいるず思いたす。 正盎なずころ、むンラむンスタむルで芋られる唯䞀の制限は:hoverです

少し蚭蚈を行うこずで、これらの問題を解決できたす。

  1. スタむルオブゞェクトをメモ化したす。状態を持぀コンポヌネントの堎合、状態を分解しお小さなコンポヌネントに配眮し、䞊䜍のコンポヌネントの状態である枡された小道具に基づいおスタむルオブゞェクトをメモ化できるようにしたす。 これは簡単に解決できたす
  2. それらを分解しおください なぜたくさんの小さな機胜が埋め蟌たれたListItemがあるのですか 分解しお構成可胜にするず、 somethingInsideToTheLeftButSlightlyMiddleFocusHoverActiveStyleような怪物を远加する必芁がなくなりたす。
  3. たぁ 私たちがパフォヌマンスを埗るのは:hoverだけです。ブラりザヌたたはreactがそれに぀いお䜕かをするたで、私たちはそれで生きるこずができるず思いたす。

私のポむントは、珟圚のスタむリングアプロヌチですでに膚倧な数の懞念に察凊しおいるずいうこずです。 むンラむンスタむルのすべおのパタヌンに埓わないため、制限がありたす。 コンポヌネントを分解し始めお、より構成しやすくすれば、䜕も心配する必芁はありたせん。 MeuItemを取る私はそれを取り出しお構成可胜にしたした。それがいかに䜿いやすく、玔粋なレンダリングを䜿甚しおパフォヌマンスをどのように改善できるかがわかりたす。

したがっお、アプロヌチを倉曎しおこれらすべおの問題を再床解決する代わりに、すでに持っおいるものを改善するために時間を費やしたしょう。 メディアク゚リをサポヌトする必芁はありたせん。他の人が簡単に応答性を実装できるようにコンポヌネントを倉曎できたす。 デバッグするのは難しいですか コンポヌネントを分解するず、むンラむンスタむルは小さくなり、読みやすくなりたす。 しかし議論の䜙地がある ぀たり、必芁なのは、 Object.assignに参加しおいるものを確認しお、スタむルがどこから来おいるかを確認するためのブレヌクポむントだけです。

もちろん、それは私自身の意芋です。私は非垞にオヌプンに議論しおいたす。

@alitaheri

あなたはいく぀かの玠晎らしいポむントを䞊げたす。 ありがずう。 ある皮のハむブリッド゜リュヌションが可胜かどうか疑問に思いたす。 どんな角床をずっおも、たくさんの問題があるようです😆

来週は䜜業する時間がありたす。チャットをしお、賢いアむデアを思い぀くこずができるかどうか芋おみたしょう。

倉曎の量を最小限に抑え、すでに解決枈みの問題を解決する必芁があるこずに同意したす。 私の頭の䞭には2぀の重芁な目暙がありたす。

  1. パフォヌマンス
  2. 開発者の経隓JSスタむルのラむブラリは、開発者がアプリケヌションでクラスを簡単に䜿甚できるようにするこずで、ここで倧いに圹立ちたす

これに぀いおもっず考える必芁がありたす😄しかし、これらの2぀のポむントを解決できれば、私たちの゜リュヌションに満足したす。

別のランダムなメモ-ラむブラリ党䜓でむンラむン/ jsstyle /その他の特定のコヌド芏則ずデザむンパタヌンを匷制する自動化された方法があれば玠晎らしいでしょう。

これはあなたが100反察しおいるこずですか

@nathanmarks私はSCSSの䜿甚に100反察しおいるわけではありたせん 行き止たりです。
Reactの䞻な利点の1぀は、ブラりザヌのレンダリングの特異性であるDOMを抜象化するこずです。
私の知る限り、React Core Teamの長期的な目暙は、クロスプラットフォヌムコンポヌネントを䜜成するためのAPIを提䟛するこずです。 実際、圌らは珟圚この方向に

@alitaheriに完党に同意したす。 これらの2぀のステップから始めるこずができたす。

  • 埌で簡単に移行できるように、どこでもgetStylesパタヌンを䜿甚しおください。
    codemodを䜿甚できたすか 知るか。
  • @alitaheriによっお提案された各コンポヌネントの内蚳。

@oliviertassinari私は行き止たりの結論に同意したす-それは未来ではありたせん。 私は䞻に、JSスタむルを私たちのために機胜させる方法に぀いおの䌚話を刺激するためにそれを持ち出したした。 この蟺りの䜕人かの人々が問題を取り巻くいく぀かの良いアむデアを持っおいるこずを私は知っおいたした😄FBが圌らの実隓ず䞀緒に_小さな_少し_だったらいいのに

私たちが珟圚採甚しおいるgetStyles()パタヌンには、それ自䜓に問題があるず思いたす。 @alitaheriず私は今日、JSスタむルのセットアップを改善するために䜕をすべきかテヌマを含むに぀いおかなり良いチャットをしたした。 メモを曞き留める機䌚がありたしたら、明日、さらに情報を返信したす。

来週は䌑暇䞭です。すべおのスタむルをJSベヌスに保ちながら、珟圚の問題の解決策を詊す予定です。

Reactアムステルダムで孊んだ教蚓に関するこの投皿https://medium.com/@kitze/lessons-learned-at-react-amsterdam-51f2006c4a59#.o12h794orを読んでください。プレれンテヌションの1぀は、Reactでのスタむリングの゜リュヌションに関するものでした。http //slides.com/kof/javascript-style-sheets#/このディスカッションのタむムリヌなプレれンテヌション。

私が考え続け、明瀺的に述べられおいない少なくずも私が芚えおいる芁件の1぀は、WebのみずWebをサポヌトし、ネむティブに反応する必芁があるこずです。 意図がWebのみである堎合぀たり、React Nativeは必須ではありたせん、ブラりザヌがすでに効率的か぀堅牢にサポヌトし、人々が非垞に粟通しおいるものを掻甚する゜リュヌションは良いこずです。 反応ネむティブをサポヌトするこずが必須である堎合、それは異なるニヌズず芁件のセットを開きたす。 テクノロゞヌの遞択、劥協などが評䟡されるずきに、考えお芚えおおくべきこずです。

@hburrows

そのプレれンテヌションを共有しおくれおありがずう

@alitaheri

そのプレれンテヌションで蚀及されおいるlibを芋たいず思うかもしれたせんこれがデモです。 それは私たちに倚くの仕事を節玄するこずができたす。 以前はそれを芋おいたしたが、気に入らなかったこずがいく぀かありたしたたずえば、すべおのコンポヌネントを独自のHoCでラップする必芁があるなど。 ただし、ここで発生しおたす。 圌は、このような倉曎を実装するず、HoCを䜿甚せずに䜿甚できるaphroditeも芋られたす。

たたは、 mixout機胜するjss独自のreactバむンディングをい぀でも䜜成できたす。

libの䜜者もこれを蚀っおいたすが、これは私自身の考えず䞀臎しおいたす👍

ただし、すべおがスタむルシヌトであるこずが理にかなっおいるわけではないこずを理解する必芁がありたす。 最も動的な倉曎には、むンラむンスタむルを䜿甚する必芁がありたす。

@nathanmarks実装はかなり小さく、非垞に簡単に組み合わせるこずができたすgrin
https://github.com/jsstyles/react-jss/blob/master/src/index.js
このラむブラリは私たちを助けるこずができるず思いたす+1

@alitaheriうん、そうだね

jssカスタムバむンディングもいく぀か詊しおいたす。取り組みたい問題/制限がいく぀かありたす。 ただし、コアラむブラリでの䜜業が必芁になる堎合がありたす

Reactコミュニティには、JavaScriptスタむリングが最善の解決策であるずいう䞀般的な感情があるようです。 その感情は倧䞈倫です、私はそれを持っおいる人たちず意芋が合わないわけではありたせん。 ただし、JavaScriptスタむリングの実装方法は、ほずんどの堎合、CSS開発者に関係ありたせん。 実装はすべおあたりにも頻繁に奜意style=/[element property]=以䞊className=しお自分の仕事をしおから、CSSの開発者を防ぐこずができたす。

以前のコメントで申し䞊げたように、この2぀はうたく共存できるず思いたす。 スタむルプロパティを適甚するには、単に動䜜アプロヌチをずる必芁がありたす。 ラむブラリは、芁玠ぞのスタむルプロパティの盎接適甚に察応する必芁がありたす。たたは、これらのスタむルプロパティで構成されるclassNameを䜜成する間接的なアプロヌチを蚱可する必芁がありたす。 開発者が動䜜を遞択できるラむブラリは、理想的な゜リュヌションのようです。

CSS開発者が単にアプロヌチを捚おたくない理由はたくさんありたす。 「cssを䜿甚する理由」を怜玢しお、人々がそれが有益であるず考える理由を確認しおください。 スタむルの抜象化ず匷力なセレクタヌ蚀語がその利点の1぀であるこずがわかりたす。 CSSナヌザヌに利益をもたらす今日存圚する膚倧な量のコヌドを忘れないでください。

繰り返しになりたすが、これは決しおプロのCSS解説を意図したものではありたせん。 スタむリングにCSSを䜿いたいずいう人もいたす。 このコメントは、開発者が遞択できるようにする、アヌキテクチャ的にニュヌトラルなスタむリングアプロヌチを奚励するこずを目的ずしおいたす。

@rvbyron珟圚のアプロヌチを倉曎したい䞻な理由の1぀は、cssを䜿甚しおコンポヌネントを簡単にカスタマむズできるようにするこずです。 jssようなラむブラリを䜿甚するず、jsスタむルを利甚しながらcss機胜を䜿甚できるようになりたす。 そしお、それらのスタむルをcssに倉えるので、醜い!importantハックなしで、远加のクラス名で簡単にオヌバヌラむドできたす。

@alitaheri聞いお

繰り返しになりたすが、classNameアプロヌチに぀いお聞くのは玠晎らしいこずです。 これを念頭に眮いお、どのように実装するかに぀いおいく぀か質問がありたす。

  • クラス名の呜名芏則はどのように芋えるず思いたすか
  • すべおのクラス名に「mui-」たたはその他のプレフィックスが付いおいたすか
  • クラスはコンポヌネント名のダッシュ衚蚘になりたすか
  • クラス名は各コンポヌネントのルヌト芁玠に適甚されたすか

@rvbyron

理想的には

カスタマむズ可胜なプレフィックス。 開発゚クスペリ゚ンスを向䞊させるためのある皮のダッシュ衚蚘ず、カスタムテヌマIDを䜿甚しお固定文字列に蚭定できるテヌマ蚭定が倉曎されおも倉曎されないハッシュサフィックス。 冗長性の䜎いプロダクションオプション、たたはカスタマむズするコヌルバック関数も含たれたす。 そしお、ルヌト䞊のクラスは通垞、ずにかく垞に必芁になるず思いたす。

蚘茉されおいる芁件や提案はたくさんあるず思いたす。 それで、この議論のすべおからの持ち垰りはありたすか 次の行動方針は䜕ですか このmaterial-uiにreact-jssを実装するために行われおいる䜜業はありたすか

@rvbyronうん、私たちは舞台裏でいく぀かの倧たかなアむデアを詊しおいたす。 より具䜓的なアむデアが埗られたら、この問題を曎新したす。

私の謙虚な意芋では、CSSずそれにコンパむルされるものは将来の䞀郚ではないず思いたす。 むンラむンスタむルが私たちの生掻をずっず楜にしおくれたこずに私たちは皆同意しおいるず思いたす。 正盎なずころ、むンラむンスタむルで私が目にする唯䞀の制限はhoverです。

問題は、hoverがスタむルの非垞に基本的で非垞に重芁な郚分であるずいうこずです。 未来掟はさおおき、ネむティブ機胜を再実装するためにチヌトず回避策に頌らなければならない゜リュヌションぞの時期尚早なコミットメントを回避するこずが賢明かもしれたせん。

@wtgtybhertgeghgtwtg :hoverなどの機胜がサポヌトされるように、実際のスタむルシヌトを䜿甚する゜リュヌションに向けお取り組んでいたす。

䞻芁なポむントが決定されおいるこずを考えるずclassNameずルヌト芁玠classNamesを介したJSSスタむリング、material-ui v0.16.0リリヌスのロヌドマップずタむムラむンはありたすか

@rvbyron玄束されたタむムラむンはありたせんが、

@newogaありがずうニヌル アップデヌトに感謝したす。 その他の問題に぀いおは、classNameベヌスのシステムに移行するだけで、倚くの人にずっお芖芚的に倧きな倉化になる可胜性があるこずを付け加えたいず思いたす。このリリヌスをそれだけに限定するこずをお勧めしたす。 それに加えお他の倉曎が実際に移行を劚げる可胜性がありたす。 しかし、私はあなたのチヌムが最良のバランスを遞ぶこずを知っおいたす。

@newoga over here jssは、material-uiのスタむリングシステムの未来ずしお呌び出されおいたす。 これは、16.0のリリヌスを芋越しお、他の人が今すぐプロゞェクトにjssをオンボヌディングし始めるこずができるほど具䜓的な蚈画ですか

@sorahnはただ

@sorahnこの問題は、解決が非垞に難しい問題に぀いおコミュニティからフィヌドバックを埗るために蚭蚈されおいたす。 公匏の決定はなされおいたせん。 今のずころ、誰もが自分ず自分のプロゞェクトに最適であるず評䟡したスタむルラむブラリたたはアプロヌチのみを遞択しお䜿甚する必芁がありたす。

ちなみに、このスタむリング倉曎の目暙は、党員を別の暙準に移行するこずではなく、䜿甚するスタむリングアプロヌチに関係なく、Material-UIコンポヌネントの䜿甚ずスタむリングを容易にするこずです。

tl; drいいえ 他の誰かが蚀うこずではなく、あなたにずっお最善のこずをしおください:)

@nathanmarks @newoga曎新しおいただきありがずうございたす

レスポンシブデザむンずすべおのむンラむンスタむルでのサヌバヌ偎レンダリングの制限に盎面しおいるため、代替案を調査しおいたす。 scss-modulesやcsxなどに぀いお特に匷い意芋はありたせんが、私たちはmaterial-uiが倧奜きなので、皆さんがやろうずしおいるこずをすべおフォロヌするのは玠晎らしいこずです:)

私はメディアク゚リに遭遇し、このスレッドおよび他のスレッドを読みたした。 私はいく぀かの朜圚的な解決策ず蚘事に飛び蟌みたす。

私はJSS + CSX゜リュヌションが本圓に奜きです開発者の_喜び_の芳点から。

JSSのメリットずパフォヌマンス

@sorahnず同様に、私はmaterial-ui暙準を採甚できれば幞いです。この方向で

@rosskevin私たちが話しおいるようにそれに取り組んでいたす-これたでのどの゜リュヌションでもカバヌされおいない、ここで考慮すべきこずがありたす。

私たちの芁件は、蚭蚈䞊の制限や意芋のために、既存の゜リュヌションがサポヌトできるよりもはるかに広いものです。 これは䞻に、既存の゜リュヌションが、コンポヌネントAPIの消費を完党に制埡できるアプリを念頭に眮いお開発されおいるのに察し、さたざたなツヌルを䜿甚しおコンポヌネントのスタむルを蚭定したいさたざたなナヌザヌがいるラむブラリが原因です。

@sorahn簡単な質問-サヌバヌ偎レンダリングのベンダヌプレフィックスに぀いお䜕をしおいたすか サヌバヌ䞊のすべおのプレフィックスをレンダリングしおいるだけですか それずもUAを通過しおいたすか

@nathanmarksナヌザヌ゚ヌゞェントをブラりザに送信しおいたすが、個人的にはそれに䟝存するのは奜きではありたせん。 それらをすべおデフォルトで配眮し、muiThemeオブゞェクトの小道具を介しおそれらをオヌバヌラむドできるようにするか、たたはその逆で、デフォルトでは䜕も行わず、オプトむンできるようにするのはどうでしょうか。

muiTheme: {
  // other stuff...
  stylePrefixes: ['webkit', 'moz', 'ms']
}

@sorahnプレフィックスではなくプレフィックスを付けたり、 allを枡したり、UAを枡したりするなど、奜きなこずを行うこずができたす。

@ nathanmarksjss @ 4.0.0をリリヌスしたした。 最も重芁な倉曎-決定論的IDの生成。これはreacthttp  //jsstyles.github.io/examples/index.htmlを䜿甚したssrの䟋です。

ここに$ .02を投入するだけです...むンラむンスタむルずアフロディヌテのアむデアは本圓に気に入っおいたすが、スタむルがブヌトストラップ4のようなscssのラむブラリ圢匏に基づいおいる方が簡単だず感じおいたす。

私が通垞行うこずは、_mixins.scssファむルを䜜成しながらbootstrap.scssファむルず_variables.scssファむルを文字通りコピヌするこずです...そのコピヌを./lib/styleの䞋に眮き、ロヌカルのbootstrap.scssファむルを曎新しおロヌカルを参照したす他のすべおのnode_modulesのバヌゞョンぞのパスを䜿甚しながら、倉数ずミックスむン...

次に、。/ lib / styleをsassLoader構成の怜玢パスの䞀郚にするようにwebpack構成をセットアップしたす。

このようにしお、ブヌトストラップなどをロヌドするmain.scssファむルを䜜成できたす。そこからプロゞェクトの残りの郚分で倉数やミックスむンを参照できたす。出力をビルド/バンドルする堎合、適切なスタむルは次のずおりです。含たれおいたす。

これの欠点は、マテリアルUIを゜ヌスビルド前ではないずしお䜿甚し、scssをバンドルに含めるためのwebpackを䜿甚するこずを芏定するこずです。 そうは蚀っおも、既存の倉数、クラス、スタむリングミックスむンを䜿甚するのがおそらく最も簡単な方法でしょう。

繰り返しになりたすが、私はJSスタむリングのアむデアが本圓に奜きで、アフロディヌテが提䟛するものが奜きです...むンラむンスタむルのスタむリングラむブラリず同様のダヌマず呌ぶ予定です䜜業を行っおいたしたが、アフロディヌテはすでにすべおを行っおいたす蚈画されおいるなど。

スタむリング゜リュヌションは完成しおいたすか

これに関する曎新はありたすか

はい、 nextブランチはjss

このプロゞェクトに出くわしたばかりですが、芋栄えがよく、サンプルペヌゞではコンポヌネントの䜿甚方法が非垞に簡単にわかり、広く䜿甚されおいるように芋えたので、非垞に興奮しおいたした。 しかし、私はむンラむンスタむルに非垞に倱望しおおり、皆さんがむンラむンスタむルから離れおいるのを芋おうれしいです。 私が指摘したいこずの1぀は、これらのコンポヌネントの倖偎のレむアりトに関係するものはすべお削陀し、芪コンポヌネントのスタむリングにそれを凊理させる必芁があるずいうこずです。 最䞋䜍レベルのコンポヌネントには、呚囲の芁玠を抌しのけるようなマヌゞンやパディングがないようにする必芁がありたす...特に、むンラむンスタむルをいじらずにオヌバヌラむドするこずはほが䞍可胜であるため、掘り䞋げお実行方法を芋぀ける必芁がありたす。それ。 残念ながら、このプロゞェクトは䜿甚できないず思ったので、このプロゞェクトに぀いおはあたり掘り䞋げおいたせん。 私は確かにむンラむン察CSSスタむリングの倚くの議論を読みたした。 ずにかく、あなたはTextFieldで私を倱いたした。 䞊に14px、䞋に16pxのマヌゞンがありたす。 それをオヌバヌラむドするために単玔なスタむルを曞くこずはあたり気になりたせんが、むンラむンスタむルのためにそれは䞍可胜であり、コンポヌネントをdivでラップする堎合のように、それを逆にするためだけに高レベルのコンポヌネントを䜜成する必芁があるのは完党にクレむゞヌですマヌゞンを実行する-14px 0 -16pxたたは蚈算で少し調敎したすが、䜕らかの方法でそれを修正する必芁はありたせん。 すでに行っおいるようにclassNameを小道具ずしお枡すこずを蚱可しお、コミュニティが望む方法でレむアりトスタむルをコンポヌネントに適甚できるようにするず、さらに奜たれたす。 ずにかく、それは私の$ .02です。

それに加えお、これらのレむアりトタむプのコンポヌネントを䜜成したり、レむアりトプロパティを凊理するための远加の小道具を䜜成したりするこずは、ファンデヌションやブヌトストラップのようなグリッドシステムを䜿甚するなどの理想的な堎合がありたす。 たずえば、サむズ、ガタヌ、幅、列などの小道具を䜿甚したすが、コンポヌネントで衚瀺されるものの倖偎をスタむリングしないこずから始めたす。

私は完党に@ jbsmith969ず䞀緒です

コンポヌネントをdivでラップしおマヌゞンを実行する堎合のように、それを逆にするために、より高いレベルのコンポヌネントを䜜成する必芁があるのは、私にずっお完党にクレむゞヌです-14px 0 -16pxたたは、蚈算で少し調敎しお、垌望どおりにしたす

@ jbsmith969䜎レベルのコンポヌネントにレむアりトロゞックを含めるべきではないこずに同意したす。 ただし、アプリの特異性のために高床に抜象化されたコンポヌネントを䜜成するこずは、たったくおかしなこずに聞こえたせん。
IMHO、これはReactが可胜にする最も匷力なパタヌンの1぀です分離プロパティのおかげで。

@oliviertassinari @ jbsmith969たさにそれが私たちがしたこずです 2぀のパラメヌタフィヌルド名ず色のように枡すCustomTextFieldコンポヌネントを䜜成したした。これは、それらの呚りにほんの少しのロゞックを実行し、 material-ui/TextFieldをレンダリングしたす。欲しいです。

それはずっず䞋のコンポヌネントです

したがっお、reactを䜿甚しお、htmlを取埗しおjsに入れたす。これは、問題なく、ダンディです。 しかし、私たちのcssを取り、それを私たちのhtmlに抌し蟌むのですか それは他の誰かずうたく座りたせんか

サスから離れるこずの利点は䜕でしたか

昔ながらの私を呌んでください、しかし私たちのjs / htmlずcssを別々に保぀こずの䜕がそんなに悪いのですか

私は合法的にここでいく぀かの答えを探しおいたす...

https://github.com/callemall/material-ui/issues/3614#issuecomment -249095805に関連しお、スタむリングは単にコンポヌネントになりたす。

CSSクラスは新しいコンポヌネントだず思いたす:(䟋 btn-danger -boostrapのように

const DangerButton = ({ hoverColor, style, ...others }) => {
    return (
        <MUI.FlatButton
            hoverColor={hoverColor || Colors.pink100}
            style={{ color: Colors.black, ...style }}
            {...others}
        />
    );
};

しかし、移行は苊痛です。

 @ jbsmith969の堎合、MUIはマテリアルデザむンの仕様に埓いたす。仕様に埓わない堎合は、䜕らかの回避策を

@vizathright私は間違いなく同じ考えを持っおいたす。 しかし、この゜リュヌションの利点は䜕ですか

少なくずもCSSず同じように実際に機胜する゜リュヌションがあれば、それを詊しおみるこずを怜蚎したす。 しかし、珟圚、譊告なしにそれを行うこずができる私が知っおいる解決策がないので、私は実際には頂点を芋おいたせん。

なぜこのリポゞトリは、゜リュヌションのアルファ段階のアむデアず思われるものを、他の点では非垞に有甚なコヌドベヌスに採甚しようずしおいるのですか 私たちはただテックを持っおいるずは思いたせんし、これがそのテックの適切なテストベッドだずは思いたせん。

@nathanmarks JSSを䜿甚しおコンポヌネントのスタむルをオヌバヌラむドする方法に぀いおアドバむスできたすか nextの最新のコヌドを䜿甚しおいたす

線集さお、それがただ完党に実装されおいないこずを理解しただけです。 私の悪い 😬

オブゞェクトキヌのデッドコヌドを排陀する良い方法はただ芋぀かりたせんでした。JSSでは、オブゞェクトを䜿甚しおスタむルを保存する必芁がありたす。

nextブランチのコンポヌネントのランダムな䟋ただ完了しおいたせん https 
primary accentクラスず

同じ理由で、以前はMUIがむンラむンスタむルを管理しおいた方法も奜きではありたせんでしたスタむルが個別に定矩されおいる堎合、lintは未䜿甚の倉数をキャッチしおいたした。https//github.com/callemall/material-ui/blob/を参照しおください 60a202fdc9645aa00f20c52e5152f168a1b0031b / src / IconButton / IconButton.jsL26。

サスから離れるこずの利点は䜕でしたか

@gdauntonむンラむンスタむル/ sassアプロヌチを䜿甚しないこずに関しおあなたが

ナヌザヌの芳点からは、次の改善が提䟛されたす。

  • キャッシュされお生成されたCSSシヌトに䟝存するため、より高速な反応レンダリング方法。
  • CSSの優先順䜍はむンラむンスタむルの優先順䜍よりも䜎く、ナヌザヌはDevToolsを䜿甚しお倉曎するシヌトを識別できるため、簡略化されたスタむルのオヌバヌラむド。
  • サヌバヌ偎のレンダリングを行うずきの最初のペむントが高速になりたす。

    • ナヌザヌは重芁なCSSシヌトをむンラむン化でき、ペヌゞ内で䜿甚されおいるものだけをむンラむン化できたす。 それは倧きなモノリスなので、_Bootstrap_ではできないこずです🙈。

    • ナヌザヌは、本番環境でクラス名キヌを醜くするこずができるはずです。

  • _scss-loader_や_Webpack_のようなビルドチェヌンの䟝存関係はありたせん。

コントリビュヌタヌ/メンテナヌの芳点から、次の改善が提䟛されたす。

  • CSSリンタヌはもうありたせん
  • プリプロセッサCSSはもうありたせん
  • 孊ぶべきCSS構文はありたせん
  • コンポヌネントのスタむルを蚭定するためのはるかに匷力な蚀語JavaScript
  • スタむル゚ンゞンを抜象化する可胜性を開きたす。 たずえば、 react-with-stylesを䜿甚

このレポがアルファステヌゞのアむデアず思われるものを採甚しようずしおいるのはなぜですか

アルファステヌゞのアむデアの意味によっお異なりたす。
このアプロヌチを䜿甚したのは私たちだけではありたせん。 䟋AirBnB、カヌンアカデミヌ、ReactNative。

少なくずもCSSず同じように機胜したした

CSSは、コンポヌネントではなく、ドキュメントのスタむルを蚭定するために最初から蚭蚈されたした。
それは私たちの業界の倧きな倉化です。

私の芳点からは、それはスタむリングコンポヌネントにひどいです。
Web仕様の背埌にいる人々はこの問題をよく知っおおり、ロヌカルスコヌプスタむルの_WebComponents_で察凊しようずしおいたす。
CSSの改善ずコンポヌネントベヌスのスタむルの䜜成を䞭心にReactがリリヌスされお以来、これらすべおの新しいプロゞェクトに気づきたしたか

はい、次のブランチはjssを䜿甚しおいたす

@nathanmarksこの倉曎に远い぀くためにどこに行けばいいですか

芋぀かりたした https 

@bramickは、0.15.0から開始されお動䜜しおいるためnextに぀いおで

わかりたした、それで私は䜕が新しいかを逃しおいたす...誰か

@bramick nextはただ完党に文曞化されおいたせんただし、文曞化サむトはありたす。 今のずころ、゜ヌスを読む必芁があり、ドキュメントサむトの゜ヌスコヌドを参照しお、それがどのように機胜するかを確認できたす。 それのいく぀かはただ動く暙的かもしれないこずをただ理解しおください。

@oliviertassinariうわヌ 綿密な察応に感謝したす。

私が完党に同意するずは蚀えたせんが、あなたは私が持っおいたいく぀かの質問を反抗的にクリアしたした。

私は同意したす、私たちは私たちのスタむルがコンポヌネントベヌスである䞖界に向かっお動くべきですそしおそうです、そしおcssはそのために玠晎らしいものではありたせん。 しかし、私の意芋ではこれを倧芏暡に採甚する前に、解決すべきいく぀かのしわがただありたす。

私は興味がありたすが、これず暙準のcssの間にパフォヌマンスの違いがあるかどうかを確認した人はいたすか 私はcssがただjavascriptで優䜍に立っおいるように感じたす。 ロヌドした埌も、スタむルを生成しお挿入する必芁がありたす。

@gdauntonは、 https//github.com/cssinjs/jss/blob/master/docs/performance.mdでjssのパフォヌマンスに぀いお読んでい

これは、レンダリングされ、ペヌゞに远加された暙準のcssですが、コンポヌネント内で䜜成されたす。 nextブランチを䜿甚しおいたすが、非垞にうたく機胜しおいたす。

@newogaあなたが蚀及しおいるものぞのリンクを私に送っおくれたせんか

@bramick OMG ずおも簡単ですよね たずえば、 next Buttonに぀いおは、こちらをご芧ください。

JSXが成功した埌、JavaScriptファむル内にCSSを配眮するこずの魅力は理解しおいたすが、アプリケヌションのすべおのCSSで同じこずを行うのが良いかどうかはわかりたせん。 JSSには、たずえば超耇雑な動的スタむルを扱う堎合など、いく぀かの優れたナヌスケヌスがあるこずを私は知っおいたす。

私の最倧の懞念は、スタむル情報がコンポヌネント定矩を乱雑にするこずになるずいうこずです。 JavaScriptオブゞェクトで衚珟されたCSSは、はるかに冗長で敎理が困難です。 たずえば、前の投皿で参照したButtonコンポヌネントでは、コヌドのほが半分がスタむル情報です。 関心の分離はもうありたせん。 スタむルコヌドを別のファむルに移動できるこずは知っおいたすが、そもそもJavaScriptでそれを䜿甚しおも意味がありたせん。

開発者にずっお最倧の欠点は、CSSプロパティずその倀に関するすべおのむンテリセンス情報が倱われるこずです。 実際、CSSプリプロセッサを正しく䜿甚すれば、その優れたコヌド構造ず衚珟力がすべお気に入っおいたす。

それがより倚くの䟡倀をもたらすのであれば、プロゞェクトに耇雑さを加えおもかたいたせん。 そのため、远加のCSSリンタヌ、プリプロセッサヌ、ロヌダヌ、および孊習する必芁のある远加の構文を気にするこずはありたせんでした。 私もJSSに぀いおオヌプンであり続けようずしおいたす、それは最初の倖芳の埌でそれが私を玍埗させなかったずいうこずだけです。

私の最倧の懞念は、スタむル情報がコンポヌネント定矩を乱雑にするこずになるずいうこずです。

これは完党にあなた次第であり、コヌドをどのように線成するかによっお異なりたす。いく぀かのルヌルに固執すれば、悪いこずは䜕も起こりたせん2幎の生産経隓から話しおいたす。

JavaScriptオブゞェクトで衚珟されたCSSは、はるかに冗長で敎理が困難です。

コヌドの再利甚レベルが高く、繰り返しが少ないため、実際には冗長性が䜎くなりたす。

開発者にずっお最倧の欠点は、CSSプロパティずその倀に関するすべおのむンテリセンス情報が倱われるこずです。

ここでの目暙は、material-uiのナヌザヌがスタむリングに必芁なものを䜕でも䜿甚できるようにするこずだず思いたす。 CSSの自動補完は、私がよく耳にする議論です。 ほずんどの堎合、cssinjsをあたり䜿甚しなかった人々から来おおり、以前の䟿利さを倱うこずを恐れおいるだけです。

それがより倚くの䟡倀をもたらすのであれば、プロゞェクトに耇雑さを加えおもかたいたせん。

重芁なのは、耇雑さを軜枛し、コヌドベヌスをより䞀貫性があり、䜿いやすく、理解しやすいものにするこずだず思いたすが、すべおの耇雑なシナリオを同時にカバヌしおいたす。

私の最倧の懞念は、スタむル情報がコンポヌネント定矩を乱雑にするこずになるずいうこずです。

私たちのプロゞェクトでは、コンポヌネントのスタむル情報を個別のファむルに抜出し、webpackでロヌドしたした。 䞻な利点は、すべおが適切に敎理されおおり、webpackがコンポヌネントごずにコヌドをバンドルできるため、jsコヌドずスタむル情報のコヌド分割が可胜になるこずです。

たた、ロゞックを分離しおスタむリングルヌルを䜜成するず、関心の分離が行われたす。 䞀䟋ずしお、よく知られおいるcssプリプロセッサでミックスむンのようにスタむリングを生成するスタむルファクトリ関数を導入したした。
私のポむントは、独自の特定のワヌクフロヌをモデル化し、プロゞェクトずチヌムのニヌズに最適に適応するための柔軟性が倧幅に向䞊するこずです。

これを確認しおくださいhttps://styled-components.com/

テクノロゞヌを倉曎するのはゲヌムのかなり遅い段階ですが、スタむル付きコンポヌネントが非垞に有望であるこずに同意したす。 SSR、メディアク゚リ、非垞に優れた構文などを凊理したす。 JSSず比范しお、自動プレフィックスずテヌマ蚭定も凊理したす。

私の知る限り、内郚でpostcssを䜿甚しおいたすが、゚ッゞケヌスの凊理ずプラグむンが倚数含たれおいる完党なcssパヌサヌであるため、実行時に蚱容できるパフォヌマンスは埗られたせん。 これをJSSJSONに前凊理するこずは想像できたすが、正盎なずころ、CSS蚀語を䜿甚しお、JS倉数や関数呌び出しず混合するこずず、JSを完党に䜿甚するこずにはあたり䟡倀がありたせん。

蚀うたでもなく、styled-componentsの珟圚のビルドは250kbで、すでに瞮小されおいたす。 公平を期すために、Reactずcoがバンドルされおいるためですが、それでも、PostCSSパヌサヌだけでも13kb最小化されおいない、2kb〜であり、すでにJSSたたはFelaずほが同じサむズです。

プレれンテヌションコンポヌネントの迅速でシンプルなプロトタむピングには最適ですが、他の゜リュヌションでは提䟛できないメリットや機胜は芋圓たりたせん。

同意したす。私が開発したラむブラリで詊しおみたしたが、公開するには重すぎたした。 圌らはそれで進歩するず確信しおいたすが、ここでのJSSの䜜業はほが完了しおおり、ほずんど同じ利点を提䟛しおいるようです。

私は最近react-toolboxを䜿甚したしたが、基本的にwebpackのsassLoader䟝存するCSSモゞュヌルをテヌマに䜿甚しおいたす。 私にずっお、それは本圓にうたくいきたした。 倚分それは調査する䟡倀がありたす。

ねえ、私は@mgcreaの意芋を二番目にする必芁がありreact-toolboxテヌマのサポヌトは単玔に玠晎らしいです-コンポヌネントの倖芳をカスタマむズするこずがフロント゚ンドストヌリヌの最も重芁な偎面であるため、切り替えたす。

叀き良きCSSスタむリングがMaterialUIの第䞀玚垂民になるこずを誰も期埅すべきではないず思いたす。それが、 react-toolboxが開始された理由です。

少なくずも、このトピックに関する倚くの問題や投皿を読んだ埌の私の印象です。 チヌムがReactNativeの互換性を向䞊させるために努力しおいるこずや、JSSで解決するのがはるかに簡単な゚ッゞケヌスのスタむリングに関する倚くのコメントをがんやりず芚えおいたす。

しかし、その情報は倚くの議論の䞭で倱われおいたす。 これは非垞に物議を醞すトピックであるため、プロゞェクトの目暙ず哲孊コアメンテナヌによっお曞かれたに関するWikiペヌゞがあり、Javascriptのスタむリングがなぜそれほど根付いおいるのかに぀いお匷い意芋があれば、信じられないほどの䟡倀があるず思いたす。フレヌムワヌク。

Reactの最もアクティブで掗緎されたマテリアルスタむリングフレヌムワヌクであるため、MaterialUIが本圓に奜きです。 ただし、サヌドパヌティのコンポヌネントずの統䞀されたスタむルを維持したい堎合、JSSはずっず頭痛の皮になりたす。

私自身は、react-toolboxのようなものではなく、Material-UIがスタむリングを行う方法に感謝しおいたす。その理由は、次のずおりです。私たちのプロゞェクトの1぀では、ナヌザヌが動的なテヌマを遞択できるようになっおいたす。

Imgur

ナヌザヌが事前に決定できない色のペアを遞択する可胜性があるため、䜿甚するテヌマスキヌムはどれも非垞に動的である必芁がありたす。 ず、テヌマの倉曎はラむブで行うこずができたす。b/ cすべおのスタむルはむンラむンで生成されたす。私がしなければならないのは、プラむマリ/アクセントカラヌを䞎えるこずだけです。

react-toolboxet。 al。、これは私が芋るこずができるものからの雑甚のようです。

@jropええ、この非垞に特殊なケヌスでは、動的JSSが必芁ですが、倚くのアプリケヌションでは、これは重芁な芁件ではなく、マテリアルのカスタマむズの珟圚の話UIテストに぀いおも蚀えたせん-uiは単に受け入れられたせん。 私たちは、デフォルトのマテリアルUIの倖芳を䜿甚するだけではなく、非垞に芖芚的で蚭蚈されたアプリを構築しおいたす。これは、その動䜜郚分がほずんど必芁であるためです。

@DominikGuzeiは、jssを䜿甚しおnextブランチをカスタマむズできたす。 これは、珟圚のリリヌスで芋られるものではありたせん。

皆さん、ここで死んだ銬を倒しおいるような気がしたす。 nextブランチは、テヌマを䜿甚しお別の倧幅に改善されたパスを遞択し、オヌバヌラむドを蚱可しおいたす。 むンラむンスタむルを䜿甚しなくなり、私が芁求した柔軟性を提䟛したす。 さらにカスタマむズ性が必芁な堎合は、 nextコンポヌネントに察しおHOCを䜿甚しお、独自のスタむルシヌトを䜜成できたす。

@nathanmarks 、この決定が䞋されたので私が知る限り、非垞にうたく機胜したす👍、芁玄を曞いおこの問題を閉じおロックし、問題を芋぀けた人が今埌の方向性を理解できるようにするこずをお勧めしたす。

プロゞェクトの目暙ず哲孊コアメンテナヌによっお曞かれたに぀いおのWikiペヌゞがあり、Javascriptスタむリングがフレヌムワヌクに深く根付いおいる理由に぀いおの匷い意芋があれば。

@fgarcia今週初めにパリで開催された地元のむベントで、Material-UIで䜿甚されおいるスタむリングアプロヌチの進化に぀いおプレれンテヌションを行いたした。 スラむドず_notes_より良いスタむルぞの旅をご芧になるこずをお勧めしたす。 私は課題、問題、解決策に焊点を圓おおいたす。

動的テヌマを遞択するナヌザヌ

CSS-Modulesの静的なスタむル生成の偎面は、かなりの結果をもたらしたす。
実行時にスタむルを挿入するず、コスト効率が䜎䞋

  • スタむルの実装により柔軟性がありたす。 たずえば、 CircularProgressは、CSSキヌフレヌムアニメヌションの実装方法にリンクされた固定のthicknessがありたす。 動的スタむルでは、thicknessプロパティを远加しお、ナヌザヌが倀を動的に倉曎できるようにするこずができたす。 ⚠虐埅されないように。
  • 倧芏暡なアプリでは、画面に衚瀺されおいるコンポヌネントに必芁なスタむルのみを挿入できたす。 ペヌゞをブヌトストラップするためにブラりザが必芁ずする䜜業量を削枛したす。 したがっお、むンタラクション埌に最初にペむントするたでの時間が短瞮されたす。 たずえば、重芁なCSSをSSRでむンラむン化したす。
  • ナヌザヌが動的なテヌマずコンポヌネントのバリ゚ヌションを䜿甚できるようにしたす。 たずえば、必芁なすべおのカラヌバリ゚ヌションでボタンの色を倉曎したす。

@oliviertassinariそれは聞いお玠晎らしいです。 私はCSSモゞュヌルに関しお非暙準的な芋方をしおいるかもしれたせんが、それらが倧隒ぎする䟡倀があるずは思いたせん。 このため、material-uiを通じおJSSのこずを聞いお興奮したした。 CSSモゞュヌルよりもJavaScriptの哲孊に沿っおいるようです。

@oliviertassinari特兞の抂芁をありがずう。 これらの偎面を芋るず、間違いなく興味深いものです。 珟時点でのJSSずその゚コシステムpostcssの欠点は、すべおが最先端であり、単玔なcss-modules + SASSのように確立されたツヌルチェヌンずナレッゞベヌスに䟝存できないこずです。 しかし、それはむノベヌションに支払う代償です。特定の芁件があるかどうか、バグや文曞化されおいないパスの代償を払っおも構わないず思っおいるかどうかによっお異なりたす。

JSSは、css-modulesより前に䜜成されおいたす。 CSSモゞュヌルは、構文を倧幅に倉曎するこずなく倧倚数のナヌザヌの問題を解決したため、急速に普及したした。

そうは蚀っおも、あなたはreactを䜿甚しおいたす。これも䞀皮の「新しい」テクノロゞヌです。 SASSが必芁な堎合は、vanilajsたたはbackbonejsも遞択する必芁がありたす

@kof Reactは、数十䞇の晩で消えるこずはありたせん、非垞に異なるストヌリヌです。したがっお、「新しい」かもしれたせんが、非垞に堅実です

SASSは最も確立されたcssプリプロセッサの1぀であり、あらゆるプロゞェクトで䜿甚できたす。非垞に堅牢で、テヌブルに倚くの䟡倀をもたらしたす。 だから私は絶察に必芁な堎合にのみJSSのようなものを遞びたす䟋えば動的なテヌマのためが、いく぀かの開発者がいる商甚゜フトりェアプロゞェクトで長幎の経隓/フレヌムワヌク/知識ベヌスなどを捚おるこずは嫌いです。 したがっお、JSSで動的テヌマの偎面のみを構築し、残りをsass / css-modulesで構築するこずも怜蚎したす。

私はこの考え方を理解しおいたすが、それは逆効果であるず考えおおり、むノベヌションず業界の速床を䜎䞋させおいるず非難しおいたす。

なぜあなたは䞡方をサポヌトしないのですか JavaScriptで曞かれたスタむルずcss-modulesで曞かれたスタむル たずえば、 https//github.com/callemall/material-ui/blob/next/src/Button/Button.jsを芋るず、小道具から枡されたクラス名を䜿甚するのは非垞に簡単です https://github.com/javivelasco/react-css-themrを䜿甚する代わりに

const classes = this.context.styleManager.render(styleSheet);

そうですね。

JSSやCSSの䜿甚に関する議論が終わりを迎えおいるようには芋えたせんただ。 私には、珟時点では50/50のように芋えたす。

SASSに関しおは、react-toolboxは珟圚、完党なpostCSS゜リュヌションを優先しお移行しおいたす。個人的には、postCSSsassLikeプラグむンを䜿甚の方が優れおおり、ビルド郚門がなくおもより匷力だず思いたす。

すべおのJS、特にReactのスタむリングは、明らかにただ急速な進化の状態にありたす。 ですから、あなたが䜕をするにしおも、私は意芋が分かれないようにしたす-珟圚の幅広い䜿甚法にうたく適合したす。

* styleプロップがあるずころならどこでも* classNameプロップを远加するこずを怜蚎しおください。 限目。

完党な開瀺私は幞せなAphroditeナヌザヌです。

classNameを远加するにstyleプロパティからが優先されるため、 !importantハックが必芁です。

@ligazもちろん、その通りです。 Aphroditeはデフォルトですべおに!importantを远加するので、おそらく「幅広い䜿甚法」に぀いおの私の考えはひどく歪んでいたす。

@ligaz @estaub - nextはすでにstyleなしでコヌディングされおおり、コンポヌネントのナヌザヌはclassName および耇雑なコンポヌネントのさたざたな郚分に耇数のクラス名を提䟛するこずでオヌバヌラむドできたす。

メンテナによるnextブランチのスタむリングパラダむム蚭定はJSSを䜿甚しおいたす。 個人たたはテヌマごずに䜿甚するこずは喜びであり、簡単に䞊曞きできたす。

この銬は死んでいる。 それを打぀のをやめたしょう。 @oliviertassinari nextの指瀺文を䜿甚しお、この問題を閉じおロックするこずをお勧めしたす。

こんにちは@ rosskevin-これが次にどのように機胜するかに぀いおの䟋を教えおいただけたすか

珟圚、新しいプロゞェクトのフレヌムワヌクを怜蚎しおいたす。マテリアルUIを䜿甚したいのですが、次に説明する倉曎が必芁です。 テストプロゞェクトに次のブランチを远加し、単玔なコンポヌネントを远加したしたが、むンラむンスタむルでいっぱいのむンスペクタヌが衚瀺されおいるので、䜕か間違ったこずをしおいるず思いたすか

それ以䞊の詳现は本圓に圹に立ちたす

ありがずう

@giuseppepaul nextはプレアルファ版であり、ただ完成しおいないため、npmでは公開されおいたせん。 https://github.com/callemall/material-ui.git#nextのクロヌンを䜜成し、 docs/siteを実行しお、むンラむンスタむルがもうないこずを確認できたす。 たた、適床な量のデモがありたす。

私はnextのプラむベヌトバヌゞョンを公開しおおり曎新を制埡できるように、たもなく本番アプリケヌションずしお䜿甚しおいたす。

この銬は死んでいる。 それを打぀のをやめたしょう。 @oliviertassinari次の方向性の声明で、この問題を閉じおロックするこずをお勧めしたす。

その銬は完党に死んでいない。 しかし、間違いなくタむトな堎所にありたす🔫。
同意したす。この問題を閉じたしょう。

その話に尜力しおくれた@nathanmarksに倧いに感謝し
5718で今埌の道のりに぀いおもっず情報を集めたした。

こんにちは、
IconButtonは、波及効果のためのCSS3 transitionプロパティがありたす。 Card @nextのドキュメントの耇雑な盞互䜜甚で、アむコンが反転したずきに遷移を远加するための倉換にtransitionを远加したした。
アプリで同じこずを行うず、䞀方の遷移リップルたたは埩垰が他方をオヌバヌラむドしたす芁玠が2぀のプロパティを持぀こずはできたせん。そうでない堎合、䞀方が他方をオヌバヌラむドしたす。
ただし、シェブロンアむコンには2぀のtransitionsが正垞に適甚されおいたす。 どういうわけか、 IconButtonによっお提䟛された遷移ずコヌドで定矩された遷移をマヌゞするからです。 どうやっおそれを達成したすか
他のいく぀かのものは私にはわかりにくく、関連するドキュメントが芋぀かりたせん。 themeは、 breakpoints ここでは䜿甚されおいたせん transitions ここで䜿甚されおいたすのように倚くのメ゜ッド/プロパティがありたす。 MuiThemeProvider.createDefaultContext()が返すもののthemeプロパティに぀いおのドキュメントはすでにありたすか特にコヌド内で広く䜿甚されおいるず䟿利だず思われたす。
this.context.styleManager.render(styleSheet)  䜕 
たた、 jss-theme-reactorを䜿甚したすが、 react-jssず比范しおただポむントがわかりたせん。

@NitroBAYこのスレッドは終了したした。 正しいチャネルで質問しおください。バグに気付いた堎合、たたはドキュメントを改善したい堎合は、問題を開いおください。 それ以倖の堎合は、gitter.imのStackOverflowを䜿甚できたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡