2017-10-16 105 views
0

CSS不是複選框列表工作

input[type="checkbox"]:checked + label:after{ 
 
       border: 2px solid red; 
 
       background-color: red; 
 
     }
<div class="input-field col s12"> 
 
     <input id="cb1" name="testCheck" type="checkbox" required> 
 
     <label for="cb1">Option 1</label> 
 
</div> 
 

 
<div class="input-field col s12"> 
 
     <input id="cb2" name="testCheck" type="checkbox" required> 
 
     <label for="cb2">Option 2</label> 
 
</div> 
 

 
<div class="input-field col s12"> 
 
    <input id="cb3" name="testCheck" type="checkbox" required> 
 
    <label for="cb3">Option 3</label> 
 
</div>

我有一個複選框列表

<div class="input-field col s12"> 
     <input id="cb1" name="testCheck" type="checkbox" required> 
     <label for="cb1">Option 1</label> 
</div> 

<div class="input-field col s12"> 
     <input id="cb2" name="testCheck" type="checkbox" required> 
     <label for="cb2">Option 2</label> 
</div> 

<div class="input-field col s12"> 
    <input id="cb3" name="testCheck" type="checkbox" required> 
    <label for="cb3">Option 3</label> 
</div> 

我用下面的CSS改變的複選框的顏色選中時:

input[type="checkbox"]:checked + label:after{ 
       border: 2px solid red; 
       background-color: red; 
     } 

不起作用。有趣的是,相同的CSS:

input[type="radio"]:checked + label:after{ 
       border: 2px solid red; 
       background-color: red; 
     } 

適用於單選按鈕列表。

我想這樣的事情:

enter image description here https://d2d3qesrx8xj6s.cloudfront.net/img/screenshots/68b1d126c5b51eb4267aed2e5fd751db1c72aa1b.jpeg

+0

您確定CSS可用於無線電輸入嗎?因爲你實際上不能將兄弟選擇器和僞元素一起使用。 – FluffyKitten

+0

可能的重複[我可以使用兄弟組合器在一個僞元素之前或之後:](https://stackoverflow.com/questions/7735267/can-i-target-a-before-or-after-僞元素與同級組合器) – FluffyKitten

+0

你希望用':after'和'label'完成什麼? – j08691

回答

0

我發現,爲我工作的解決方案。我向每個複選框添加了一個類 - class="filled-in"並更改了我的css:

input[type="checkbox"].filled-in:checked + label:after{ 
    border: 2px solid red; 
    background-color: red; 
} 
0

如果這是你的代碼的整體也不會因爲是工作。你需要給:after psuedo元素一些額外的屬性。即content: "";

更新 - 在你提到的評論你只是想添加一個邊框到複選框。要做到這一點使用outline。就像這樣:

input[type="checkbox"]:checked { 
 
    outline: 3px solid red; 
 
}
<div class="input-field col s12"> 
 
    <input id="cb1" name="testCheck" type="checkbox" required> 
 
    <label for="cb1">Option 1</label> 
 
</div> 
 

 
<div class="input-field col s12"> 
 
    <input id="cb2" name="testCheck" type="checkbox" required> 
 
    <label for="cb2">Option 2</label> 
 
</div> 
 

 
<div class="input-field col s12"> 
 
    <input id="cb3" name="testCheck" type="checkbox" required> 
 
    <label for="cb3">Option 3</label> 
 
</div>

+0

不幸的是,沒有任何區別,仍然是一樣的 – ElenaDBA

+0

你使用的是什麼瀏覽器/操作系統組合? –

+0

我在Windows 7上使用Chrome。此外,我正在使用材料設計框架 – ElenaDBA

0

我沒有看到你發佈的:after代碼任何目的 - 沒有什麼後,您的標籤突出,所以我不知道爲什麼你試圖設計它。

如果您將其從規則中刪除,CSS會將標籤以紅色突出顯示。我認爲這就是你想要做的?

input[type="checkbox"]:checked + label{ 
    border: 2px solid red; 
    background-color: red; 
} 

工作例如:

input[type="checkbox"]:checked + label{ 
 
       border: 2px solid red; 
 
       background-color: red; 
 
     }
<div class="input-field col s12"> 
 
     <input id="cb1" name="testCheck" type="checkbox" required> 
 
     <label for="cb1">Option 1</label> 
 
</div> 
 

 
<div class="input-field col s12"> 
 
     <input id="cb2" name="testCheck" type="checkbox" required> 
 
     <label for="cb2">Option 2</label> 
 
</div> 
 

 
<div class="input-field col s12"> 
 
    <input id="cb3" name="testCheck" type="checkbox" required> 
 
    <label for="cb3">Option 3</label> 
 
</div>

+0

事情是我只想突出顯示覆選框本身,而不是標籤 – ElenaDBA