xxxxxxxxxx
<!DOCTYPE html>
<html>
<head>
<title>Dynamic Website Color</title>
<style>
body {
transition: background-color 0.5s;
}
</style>
</head>
<body>
<h1>Change Website Color</h1>
<input type="radio" name="color" id="color1" value="#ff0000">
<label for="color1">Red</label>
<input type="radio" name="color" id="color2" value="#00ff00">
<label for="color2">Green</label>
<input type="radio" name="color" id="color3" value="#0000ff">
<label for="color3">Blue</label>
<script>
const radioButtons = document.querySelectorAll('input[type="radio"]');
radioButtons.forEach((radio) => {
radio.addEventListener('change', () => {
document.body.style.backgroundColor = radio.value;
});
});
</script>
</body>
</html>
xxxxxxxxxx
input[type='radio'] {
-webkit-appearance:none;
width:20px;
height:20px;
border:1px solid darkgray;
border-radius:50%;
outline:none;
box-shadow:0 0 5px 0px gray inset;
}
input[type='radio']:hover {
box-shadow:0 0 5px 0px orange inset;
}
input[type='radio']:before {
content:'';
display:block;
width:60%;
height:60%;
margin: 20% auto;
border-radius:50%;
}
input[type='radio']:checked:before {
background:green;
}
xxxxxxxxxx
input[type='radio']:after {
width: 15px;
height: 15px;
border-radius: 15px;
top: -2px;
left: -1px;
position: relative;
background-color: #d1d3d1;
content: '';
display: inline-block;
visibility: visible;
border: 2px solid white;
}
input[type='radio']:checked:after {
width: 15px;
height: 15px;
border-radius: 15px;
top: -2px;
left: -1px;
position: relative;
background-color: #ffa500;
content: '';
display: inline-block;
visibility: visible;
border: 2px solid white;
}
xxxxxxxxxx
Using CSS you can use filter: grayscale(1); for dark grey, or use filter: hue-rotate() for other colors, in case you don't want to create a custom element.
xxxxxxxxxx
Add this attribute to your radio input selector
input[type="radio"]{
accent-color:green;
}