Niestandardowe pola typu checkbox i radio

Kodując wszelkiego rodzaju formularze zapewne nie raz spotkałeś się z problemem o stylowania pól typu radio i checkbox. Nie da się ich stylować za pomocą CSS tak prosto jak pola tekstowe, ale wraz z pojawieniem się CSS 3 powstał pewien prosty sposób :)

<!DOCTYPE html>
<html>
<head>
    <title>Demo</title>
    <style>
        body{
            background: #e2fbff;
        }
        input[type=radio], input[type=checkbox] {
            display: none;
        }
        .radio {
            display: inline-block;
            color: #464949;
            margin: 12px 20px 28px 0;
            cursor: pointer;
        }
        .radio:before {
            content: "";
            display: inline-block;
            width: 18px;
            height: 18px;
            vertical-align: middle;
            background-color: #ffffff;
            text-align: center;
            color: #14aa9e;
            border: 2px solid #71b9c9;
            border-radius: 25px;
            font-size: 22px;
        }

        input[type=radio]:checked + .radio:before {
            content: "\2022";
            font-size: 18px;
            color: #ed4a13;
        }
        .radio span{
            padding-left: 10px;
        }

        .checkbox {
            display: inline-block;
            color: #464949;
            margin: 12px 20px 0 0;
            cursor: pointer;
        }
        .checkbox:before {
            content: "";
            display: inline-block;
            width: 22px;
            height: 22px;
            vertical-align: middle;
            background-color: #ffffff;
            text-align: center;
            color: #14aa9e;
            font-size: 22px;
        }

        input[type=checkbox]:checked + .checkbox:before {
            content: "\221A";
            font-size: 22px;
            color: #ed4a13;
        }
        .checkbox span{
            padding-left: 10px;
        }
    </style>
</head>
<body>
<input name="name" type="radio" id="radio1" value="tak"/> <label for="radio1" class="radio"><span>tak</span> </label>
<input name="name" type="radio" id="radio2" value="nie"/> <label for="radio2" class="radio"><span>nie</span> </label><br/><br/>
<input type="checkbox" id="checkbox1" value="checkbox 1"/> <label for="checkbox1" class="checkbox">checkbox 1 </label><br/>
<input type="checkbox" id="checkbox2" value="checkbox 2"/> <label for="checkbox2" class="checkbox">checkbox 2 </label><br/>
<input type="checkbox" id="checkbox3" value="checkbox 3"/> <label for="checkbox3" class="checkbox">checkbox 3 </label><br/>
</body>
</html>

Stosując powyższe reguły CSS wystarczy dodać odpowiednią klasę dla znacznika label i … gotowe :). Oczywiście tło, wypełnienie itp można dowolnie modyfikować. Rozwiązanie testowane w Chrome, FireFox, Opera, IE (od wersji 9), mobilny FireFox. Tak wygląda u mnie powyższy przykład:
przyklad

Print Friendly, PDF & Email