SVGスプライトのアイコンをレンダリングするための単純なコンポーネントを作成しました。このコンポーネントには、スタイルをグローバルに管理するためのデフォルトのCSSクラス(.svg-icon)が必要です。また、クラス名を介して 'class'属性を使用してコンテキスト依存スタイルを追加することもできます。Ember 1.13、コンポーネント内のクラス名の順序
JS:
App.SvgIconComponent = Ember.Component.extend
layoutName: 'components/svg-icon'
classNames: ['svg-icon']
tagName: 'svg'
attributeBindings: ['width', 'height', 'fill'],
width: 16
height: 16
fill: 'currentColor'
テンプレート:
<use xlink:href="#svg-icon-{{name}}"/>
使用法:
{{svg-icon name="facebook" class="social__icon" width="14" height="14"}}
HTML出力:
<svg id="ember1012" width="14" height="14" fill="currentColor" class="social__icon ember-view svg-icon">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-icon-facebook"></use>
</svg>
問題はEmberがデフォルトのクラス(.svg-icon)をクラスリストの最後にプッシュしたことです。しかし、カスケードに関するいくつかの問題を避けるためには、このクラスがクラスリストの最初に必要です(class = "svg-icon social__icon ember-view")。達成することは可能ですか?
私はclassNameBindingsプロパティでクラス名を設定できますが、この場合は 'class'とは異なる属性を使用する必要があります。ネイティブの 'class'属性の使用が望ましい
Thnx。
ためのクラスがSVGでCLASSLIST問題で定義されていますか?それは[他のHTML要素にはありません](http://stackoverflow.com/a/8127373/557612)。 – steveax
@steveax Ha、私はそれが問題だと確信していましたが、そうではありません!だから私の質問には意味がありません。返信用のThnx。 – Kuzzy