2012-02-05 7 views
14
私はあまりCSSで次のように行うことができますどのように思っていた

:これがあればそこにある指し示すために必要なものだけの例、であるのコースCSSレスクラス擬似クラスを持つクラスを拡張

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.btn-foo { 
    .btn; 
    &:hover { 
    .btn:hover; 
    } 
} 

を私が必要とするあらゆる場所で:hover疑似クラスのプロパティを再入力しないようにするために、疑似クラスを拡張する方法です。私はそれのためのmixinを作成することができますが、私はそれを避けることができるかと思っています。

おかげ

答えて

30

UPDATE: あなただけのセレクタを再定義し、不足している状態を追加した外部ファイルを変更できない場合:

.btn { 
    // not adding anything here, won't affect existing style 
    &:hover { 
    // adding my own hover state for .btn 
    background: yellow; 
    ... 
    } 
} 

// this will make your foo button appear as in external style 
// and have the :hover state just as you defined it above 
.btn-foo { 
    .btn; 
} 

ベターになりましたか? :)


擬似クラスは不要です。

.btn { 
    background: yellow; 

    &:hover { // define hover state here 
    background: green; 
    } 
} 

button { 
    .btn; 
} 

作成した各要素がホバー状態を含む、定義されたものは何でも継承されます:それはちょうど

はこれを試してみてください:)動作します。私はそれがLESSの主な驚くべき機能の1つだと思います。

これが役に立ちます。あまり1.4.0では

+0

こんにちは、あなたの返事をありがとう、私はこれが動作することを知っているので、私は私の例ではなく、分離された定義に '&:hover'を持っていません。ありがとう – panosru

+0

確かにそれを分けるのは意味がありますか(lesscssを使用する場合)? – bzx

+0

いいえ、それは意味がありませんが、ベンダーの少ないファイルに触れたくない場合があります:) – panosru

6

(?1.4.1)

この:

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.btn-foo:extend(.btn all) { 
} 

たが、これに拡大:

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.abc .btn { 
    margin: 2px; 
} 

.btn-foo:extend(.btn all) { 

} 

.btn, 
.btn-foo { 
    color: black; 
} 
.btn:hover, 
.btn-foo:hover { 
    color: white; 
} 

は、しかし、この注意してください

これを出力します:

.btn { 
    color : black; 
} 

.btn:hover { 
    color : white; 
} 

.abc .btn { 
    margin: 2px; 
} 

.btn-foo:extend(.btn all) { 

} 

私はSASSを30分以上調べていませんが、後のケースはデフォルト(または唯一の)@extend動作だと思います。

+0

これはどこに文書化されていますか?私は公式サイトでそれを見つけることができません。 – ehdv

+0

@ehdvはい。現在、Githubのページで拡張が文書化されています。事はその文書が開発のかなり遅れていることです。ディスカッション(https://github.com/less/less.js/issues?labels=ReadyForImplementation&milestone=&page=1&state=openなど)に注意を払う必要があるかもしれません。 – John

関連する問題