2017-01-26 4 views
2

これは簡単なようですが、私はこれをあまりにも思っていますので、これを動作させることができません。CSS:ボタンクラスのデフォルトのハイパーリンクの色を無視する方法

私は私のデフォルトのハイパーリンクのスタイルを持っている:

a { 
    text-decoration: none; 
    color: blue; 
} 
a:hover { 
    color: red; 
} 
a:visited { 
    color: purple; 
} 

そして私はまた、ボタンのいくつかのスタイルがあります。

.button { 
    padding: 0.4em; 
    border: 1px solid #535353; 
    color: #535353; 
} 

最後に、私はカスタマイズする要素に付加されているいくつかのグローバルクラスを持っていますフォントの色:

.color-green { 
    color: green; 
} 
.color-yellow { 
    color: yellow; 
} 

私の問題は、ハイパーリンクのようなボタンを扱っています:

<a class="button" href="#">A button</a> 

私はそれはホバー上で、デフォルトの状態だし、訪問にcolor: #535353;をするクラスbuttonで任意のリンクをしたいと思います。ボタンは色のクラスを持っている場合は、色がに変わります

<a class="button color-green" href="#">A green button</a> 

:ボタンのような、色のクラスを持っていない限り、ボタンは常にその色... ...ない限り

する必要がありますどのカラークラスも指定されています...これはすべての状態(デフォルト、ホバー、訪問)を含みます。

私が抱えている問題は、:hover:visitedハイパーリンクボタンの状態です。たとえば、ボタンにカラークラスがある場合、その色は、ホバリングされると常に赤に変わります。

ボタンをカラークラスにすると、すべての状態でその色になるように、どうすれば更新できますか?

もありますのでご注意ください

など、DIV、色のクラスは要素のすべての種類(などのdiv、スパン、P、)で使用され、また、ボタンクラスがリンク上で使用され、送信ボタンを覚えておいてくださいハイパーリンクにはクラスcolor-yellowがありますが、ハイパーリンクがデフォルトのハイパーリンクのホバーカラーを継承したいと考えています。私はクラスbuttonの何かが、デフォルトのハイパーリンクのホバーと訪問された色を無視するだけです。

a { 
 
    text-decoration: none; 
 
    color: blue; 
 
} 
 
a:hover { 
 
    color: red; 
 
} 
 
a:visited { 
 
    color: purple; 
 
} 
 
.button { 
 
    width: auto; 
 
    padding: 0.4em; 
 
    border: 1px solid #535353; 
 
    color: #535353; 
 
} 
 
.color-green { 
 
    color: green; 
 
} 
 
.color-yellow { 
 
    color: yellow; 
 
}
<a href="#">Normal hyperlink</a> 
 
<a class="color-yellow" href="#">Yellow normal, red hovered</a> 
 
<a class="button" href="#">Default button</a> 
 
<a class="button color-green" href="#">Green color button</a>

答えて

1

一つの解決策は、を使用することである:ないセレクタ

a { 
    text-decoration: none; 
    color: blue; 
} 
a:not(.button):hover { 
    color: red; 
} 
a:not(.button):visited { 
    color: purple; 
} 
+1

私はこの応答が本当に好きです。他のクラスの状態ごとに追加のCSSルールを追加することは避けますが、サポートはかなり限られています。 http://caniuse.com/#search=not() –

+2

@ hopkins-matt間違ったリンク、それは "セレクタリストの引数"です。 ':not()'は良いサポートを持っています。http://caniuse.com/#feat=css-sel3 –

+2

@ hopkins-mattはい、かなりいいサポートを楽しんでいます。イベントIE9はそれをサポートしています。 ) – demonofthemist

0

は、アンカータグで色クラスを指定してみてください:a.color緑色

コード下記参照

a { 
 
    text-decoration: none; 
 
    color: blue; 
 
} 
 
a:hover { 
 
    color: red; 
 
} 
 
a:visited { 
 
    color: purple; 
 
} 
 
.button { 
 
    width: auto; 
 
    padding: 0.4em; 
 
    border: 1px solid #535353; 
 
    color: #535353; 
 
} 
 
.color-green, 
 
a.color-green { 
 
    color: green; 
 
} 
 
.color-yellow, 
 
a.color-yellow { 
 
    color: yellow; 
 
}
<a href="#">Normal hyperlink</a> 
 
<a class="button" href="#">Default button</a> 
 
<a class="button color-green" href="#">Green color button</a>

2

あなたはCSSルールから.color-*を除外するために、クラス属性ワイルドカードセレクタとの組み合わせで:not()を使用することができます。指摘する

a { 
 
    text-decoration: none; 
 
    color: blue; 
 
} 
 
a:not([class*="color-"]):visited { 
 
    color: purple; 
 
} 
 

 
a:not([class*="color-"]):hover { 
 
    color: red; 
 
} 
 
.button { 
 
    width: auto; 
 
    padding: 0.4em; 
 
    border: 1px solid #535353; 
 
    color: #535353; 
 
} 
 
.color-green { 
 
    color: green; 
 
} 
 
.color-yellow { 
 
    color: yellow; 
 
}
<a href="#">Normal hyperlink</a> 
 
<a class="button" href="#">Default button</a> 
 
<a class="button color-green" href="#">Green color button</a>

0

ことの一つは、これらのリンクをスタイリングすることは、実際にそれらの順序を持​​っているということです。 hereを参照してください。 "あなたのホバーは訪問した後に行く必要があります"。

ボタンの色については、.color-greenを使用してリンクに表示しているクラスを参照していないことを指摘すると、同じものではないクラスとしてbutton color-greenと記述します。

クラスごとにリンクスタイルを設定できます。例えばa.button:hoverのようにあなたはかなり異なる設定をしているでしょうが、現時点であなたが持っているものは、すべてのリンクのためにデフォルトになります。

1

これは!importantの完璧な使用例です。追加のマークアップ/ルール/セレクタを使う必要はありません。

a { 
 
    text-decoration: none; 
 
    color: blue; 
 
} 
 
a:hover { 
 
    color: red; 
 
} 
 

 
.button { 
 
    padding: 0.4em; 
 
    border: 1px solid #535353; 
 
    color: #535353 !important; 
 
} 
 

 
.color-green { 
 
    color: green !important; 
 
} 
 
.color-yellow { 
 
    color: yellow !important; 
 
}
<a href="#">This link has no class.</a> <br> <br> 
 
<a href="#" class="button">This link has class "button".</a> <br><br> 
 
<a href="#" class="button color-green">This link has classes "button" and "color-green".</a>

+0

私はOPも '.button'クラスで永続的な' color'を望んでいたと思います。 "クラスボタンとのリンクはすべて色で表示したい:#535353;デフォルト状態、ホバー上、訪問先" –

+0

ありがとう、私は私の答えを編集しました。簡単な修正で、 '.button'に同じ!importantを追加しました。 – Santi

関連する問題