2013-08-26 66 views
20

我有種奇怪的情況。我試圖設計一個禁用的輸入按鈕,因爲我有一個惱人的懸停將文本變成白色。這使用戶感到困惑,因爲它的行爲就像一個普通的按鈕。使用CSS僅禁用輸入樣式

我已經嘗試了一些東西,主要是CSS和幾個jQuery的東西。如果可能的話,我想保留在CSS中。

這是我的html,對不起,它是在一個更加尖銳的形式助手。

{{ Form::submit('Change', array_merge($design_project->is_locked ? ['disabled' => 'disabled'] : [], ['class' => 'btn btn-blue span3'])) }} 

,這是什麼瀏覽器會產生

<input disabled="disabled" class="btn btn-blue span3" type="submit" value="Change"> 

和我工作這樣的事情

.btn:hover input[disabled], .btn:active input[disabled], .btn:focus input[disabled]{ 
    color:green 
} 

任何幫助將是美好的!

+1

你可以發佈生成的HTML嗎? – ComFreek

+0

@Vector如果將鼠標懸停在按鈕上,文字是否會變爲綠色? – ComFreek

回答

44

使用此CSS(jsFiddle example):

input:disabled.btn:hover, 
input:disabled.btn:active, 
input:disabled.btn:focus { 
    color: green 
} 

你必須寫在左邊和最外層元素右邊最裏面的元素。

.btn:hover input:disabled將選擇包含在當前被用戶徘徊的類btn的元素中的任何禁用的輸入元素。

我寧願:disabled超過[disabled],看到這個問題的討論:Should I use CSS :disabled pseudo-class or [disabled] attribute selector or is it a matter of opinion?


順便說一句,Laravel(PHP)生成HTML - 而不是瀏覽器。

+0

謝謝,這對我來說非常合適。我和我的愚蠢空間! :) – zazvorniki

+0

偉大的,這在IE9中工作! – Neolisk

+0

在使用'[disabled]'和':disabled'之間是否有任何偏好的原因? (這也是可鏈接→https://css-tricks.com/almanac/selectors/d/disabled/) –

1

CSS選擇器中的空間選擇子元素。

.btn input 

這基本上就是你寫的,它會選擇具有btn類中的任何元素中<input>元素。

我認爲你正在尋找

input[disabled].btn:hover, input[disabled].btn:active, input[disabled].btn:focus 

這將選擇<input>元素,其的hoveractivefocus了三個不同的狀態disabled屬性和btn類。

17

這麼說吧,你有3個按鈕:

<input type="button" disabled="disabled" value="hello world"> 
<input type="button" disabled value="hello world"> 
<input type="button" value="hello world"> 

款式禁用的按鈕,你可以使用下面的CSS:

input[type="button"]:disabled{ 
    color:#000; 
} 

這隻會影響到按鈕,這被禁用。

要停止色變徘徊,你可以使用這個太時:

input[type="button"]:disabled:hover{ 
    color:#000; 
} 

您也可以通過使用CSS復位避免這種情況。

+1

這是爲什麼downvoted?這對現代瀏覽器來說是一個完美有效的解決方案。 – FakeRainBrigand

+4

謝謝隊友。我正要開始思考我的整個CSS職業生涯是一個謊言:) –

+0

@thesaadarshad我剛剛收到我對這個問題的回答upvote。無意中,我也看到了你的回答,我因爲一個我不記得了的原因而低估了自己的回答。我做了一個編輯,能夠恢復downvote。 +1! – ComFreek