web-dev-qa-db-fra.com

Est-il possible de changer la couleur du cercle central du bouton radio sélectionné

Est-il possible de styliser le cercle central d'un bouton radio sélectionné, au moins dans les navigateurs webkit…?

Ce que j'ai maintenant: enter image description here

Ce que je veux: enter image description here

Je peux changer la couleur d'arrière-plan, l'ombre, etc. comme suit

#searchPopup input[type="radio"]{
  -webkit-appearance:none;
  box-shadow: inset 1px 1px 1px #000000;
  background:#fff;
}

#searchPopup input[type="radio"]:checked{
  -webkit-appearance:radio;
  box-shadow: none;
  background:rgb(252,252,252);
}

Des idées..?

15
T J

Vous pouvez imiter le bouton radio en utilisant une astuce de bordure ronde (pour rendre le cercle extérieur) et le pseudo-élément :before (pour rendre le cercle intérieur) qui peut heureusement être utilisé sur un champ de saisie de type radio:

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;
}

Démo de travail.

33
King King

Vous pouvez lier un bouton radio à une étiquette, que vous pouvez masquer un bouton radio et une étiquette de style comme vous le souhaitez. Exemple .

div {
    background-color: #444444;
    display: flex-column;
    display:webkit-flex-column;
}
input {
    margin: 10px;
    position: absolute;
    left: 100px;
}
label {
    box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    margin: 10px;
    display: block;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    -webkit-border-radius: 50%;
    background-color: #ffffff;
    box-shadow: inset 1px 0 #000000;
}
#green {
   border: 8px solid green;
}
#red {
    border: 8px solid red;
}
input:checked + #green {
    border: 8px solid #ffffff;
    background-color:green !important;
}
input:checked + #red {
    border: 8px solid #ffffff;
    background-color: red !important;
}
Click a button on the left - radio button on the right will be checked.
<div>
    <input id="greenInput" type="radio" name="someName">
    <label id="green" for="greenInput"> </label>
    <input id="redInput" type="radio" name="someName">
    <label id="red" for="redInput"></label>
 </div>
3
snowerest

Vous pouvez également appliquer une image d'arrière-plan lorsque le bouton radio est coché

[type="radio"]:checked {
    width: 16px;
    height: 16px;
    -webkit-appearance: none;
    background-image:  ...
}

Un exemple: http://jsfiddle.net/yZ6tM/

2
Vangel Tzo