これはうまくいくはずですが、外部のSelect
のスタイルがどのように適用されているかによって、より高い特異性を持ち、依然として適用したスタイルをオーバーライドしている可能性があります。お使いのSelect
コンポーネント、それは少し難しいデバッグするのですが、私はそれが非常に持っているインラインスタイル(すなわちstyle
小道具)を使用していますと仮定している知らない
(特異性がどのように動作するかのプライマーのためのthis articleを参照してください)高い特異性を示し、適用されるスタイルをオーバーライドします。
外部コンポーネントがインラインスタイルを使用していない場合、はお勧めできません。スタイルの特異性をバンプする2つの方法があります。
特異性をバンプする最初の方法は!important
を使用することです:十分でない可能性がありますいくつかのケースでは
const StyledSelect = styled(Select)`
li {
margin-left: 20px!important;
}
`
、そしてあなたが強制的に上書きする必要がある複数のプロパティを持ってたら、それはまた、かなり面倒です。ずっといいが、それでもあまりにもお勧めできません、それは、クラスのハックを使用することです:(アンパサンドに注意してください)
const StyledSelect = styled(Select)`
&&& li {
margin-left: 20px;
}
`
ここ何styled-components
たCSSの意志を意味し、生成されたクラスでこれら&
のそれぞれを置き換えています
.sc-asdf123.sc-asdf123.sc-asdf123 li {
margin-left: 20px;
}
これらの3つのクラスは、ブロック内のスタイルの特異性を大幅に低下させます。それはトリックを行う必要があります!
あなたはnot
疑似セレクタと一緒にfirst-child
を使用することができ、最初の子のスタイルではないために:あなたはCSSの擬似クラスを使用することができます
const StyledSelect = styled(Select)`
&&& li:not(:first-child) {
margin-left: 20px;
}
`
あなたのコードはすべてli Selectコンポーネント内の要素最初のliを除外するには、CSSのルール/セレクタを追加する必要があります。 [この質問](https://stackoverflow.com/questions/10033299/is-there-any-way-to-specify-a-css-shorthand-for-all-elements-except-the-first-l)を参照してください。 – devboell
あなたの質問は少し不明です。 'margin-left:20px;'が適切に適用されていて、最初のliをどのように除外するのか疑問に思っていますか?あなたのスタイルはまったく適用されないのですか? – devboell