Is it possible to change the color of selected radio button's center circle

前端 未结 3 2159
既然无缘
既然无缘 2020-12-13 10:49

Is it possible to style the center circle of a selected radio button, at least in webkit browsers…?

What I have now:

相关标签:
3条回答
  • 2020-12-13 11:20

    You can mimic the radio button using some round border trick (to render the outer circle) and the pseudo-element :before (to render the inner circle) which can fortunately be used on an input field of radio type:

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

    Working Demo.

    0 讨论(0)
  • 2020-12-13 11:22

    You could also apply a background-image when the radio button is checked

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

    An example: http://jsfiddle.net/yZ6tM/

    0 讨论(0)
  • 2020-12-13 11:38

    You can bind radio-button to label, than you can hide radio-button and style label whatever you like. Example.

    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>

    0 讨论(0)
提交回复
热议问题