Reputation: 175
im having problem on how to change the color of label text for the radio button to blue color after the radio is checked. I've followed many sample code but it wont work.
Below is my html code
<div class="input-group">
<label for="pickup-1" class="radio-custom-label">10.00 PM</label>
<div class="text-group-field pickup-day choose-time">
<input id="pickup-1" class="radio-custom input-group-field" name="radio-group" type="radio">
</div>
</div>
Upvotes: 8
Views: 17439
Reputation: 81
input:checked + label{
color: @grey !important;
background-color: @white !important;
border-color: @white !important;
}
Upvotes: 0
Reputation: 1832
A result much closer to your reference image.
<div class="input-group">
<input id="pickup-1" class="radio-custom input-group-field" name="radio-group" type="radio">
<label for="pickup-1" class="radio-custom-label">10.00 PM</label>
<input id="pickup-2" class="radio-custom input-group-field" name="radio-group" type="radio">
<label for="pickup-2" class="radio-custom-label">20.00 PM</label>
</div>
and the css
.input-group{
background: #323447;
padding: 10px;
width: 100%;
box-sizing: border-box;
}
input[type=radio]{
display: none;
}
.radio-custom-label{
width: 200px;
padding: 10px;
display: block;
background: rgba(255,255,255,0.1);
color:#ddd;
font-weight: 600;
cursor: pointer;
margin-bottom: 5px;
}
.radio-custom-label::after{
width:15px;
height: 15px;
background: green;
display: inline-block;
content: "";
position:relative;
float: right;
border-radius: 15px;
display: none;
}
input[type=radio]:checked+.radio-custom-label::after{
display: block;
}
Upvotes: 0
Reputation: 9731
You need to change your HTML structure a little bit & use ~
(General Sibling Combinator) selector, like:
.radio-custom:checked ~ label {
color: blue;
}
Have a look at the snippet below:
.radio-custom:checked ~ label {
color: blue;
}
label {
display: block;
flex: 1;
}
.input-group {
display: block;
}
.text-group-field {
padding: 10px;
}
.inner-block {
position: relative;
display: flex;
flex-direction: row-reverse;
}
<div class="input-group">
<div class="text-group-field pickup-day choose-time">
<div class="inner-block">
<input id="pickup-1" class="radio-custom input-group-field" name="radio-group" type="radio">
<label for="pickup-1" class="radio-custom-label">10.00 PM</label>
</div>
</div>
<div class="text-group-field pickup-day choose-time">
<div class="inner-block">
<input id="pickup-2" class="radio-custom input-group-field" name="radio-group" type="radio">
<label for="pickup-2" class="radio-custom-label">10.00 PM</label>
</div>
</div>
<div class="text-group-field pickup-day choose-time">
<div class="inner-block">
<input id="pickup-3" class="radio-custom input-group-field" name="radio-group" type="radio">
<label for="pickup-3" class="radio-custom-label">10.00 PM</label>
</div>
</div>
</div>
Hope this helps!
Upvotes: 11
Reputation: 4590
Hope this helps. Works for all radio buttons having class radio-custom
. Sets blue
color only to selected radio button label.
window.onload = function () {
[].forEach.call(document.querySelectorAll(".radio-custom"), function (el) {
el.addEventListener("click", function () {
[].forEach.call(document.querySelectorAll(".radio-custom-label"), function(label){
label.style.color = "black";
});
document.querySelector("label[for='" + this.id + "']").style.color = "blue";
});
});
}
<div class="input-group">
<label for="pickup-1" class="radio-custom-label">10.00 PM</label>
<div class="text-group-field pickup-day choose-time">
<input id="pickup-1" class="radio-custom input-group-field" name="radio-group" type="radio">
</div>
</div>
<div class="input-group">
<label for="pickup-2" class="radio-custom-label">11.00 PM</label>
<div class="text-group-field pickup-day choose-time">
<input id="pickup-2" class="radio-custom input-group-field" name="radio-group" type="radio">
</div>
</div>
Upvotes: 1
Reputation: 50291
Add change
event to the radio button.On that event , get the label
tag matches with the id
of the radio. using document.querySelector
, then add a css class to the element
document.getElementById('pickup-1').addEventListener('change', function() {
document.querySelector('label[for="pickup-1"]').classList.add('colorText')
})
.colorText {
color: blue;
}
<div class="input-group">
<label for="pickup-1" class="radio-custom-label">10.00 PM</label>
<div class="text-group-field pickup-day choose-time">
<input id="pickup-1" class="radio-custom input-group-field" name="radio-group" type="radio">
</div>
</div>
Upvotes: 0