tutorial telefono plugin personalizar formularios form enviar ejemplos desplegable datos customizer color cf7 cambiar boton html css checkbox input pseudo-element

html - telefono - ejemplos formularios contact form 7



Casilla de verificación personalizada usando solo CSS y HTML (2)

El problema es que está utilizando el mismo pseudo elemento para el borde cuadrado y la marca de verificación. La solución simple sería continuar utilizando :before pseudo elemento para el borde, y luego usar un :after pseudo elemento para la marca de verificación.

Ejemplo actualizado

.checkbox-custom colocar absolutamente el :after pseudo elemento relativo al elemento de etiqueta padre .checkbox-custom .

Aquí está el código actualizado:

.checkbox-custom { display: none; } .checkbox-custom-label { display: inline-block; position: relative; vertical-align: middle; margin: 5px; cursor: pointer; } .checkbox-custom + .checkbox-custom-label:before { content: ''''; background: #fff; border-radius: 5px; border: 2px solid #ddd; display: inline-block; vertical-align: middle; width: 10px; height: 10px; padding: 2px; margin-right: 10px; } .checkbox-custom:checked + .checkbox-custom-label:after { content: ""; padding: 2px; position: absolute; width: 1px; height: 5px; border: solid blue; border-width: 0 3px 3px 0; transform: rotate(45deg); top: 2px; left: 5px; }

<h3>Checkboxes</h3> <div> <input id="checkbox-1" class="checkbox-custom" name="checkbox-1" type="checkbox"> <label for="checkbox-1" class="checkbox-custom-label">First Choice</label> </div> <div> <input id="checkbox-2" class="checkbox-custom" name="checkbox-2" type="checkbox"> <label for="checkbox-2" class="checkbox-custom-label">Second Choice</label> </div>

Necesito crear una casilla de verificación personalizada usando solo html y CSS. Hasta ahora tengo:

HTML / CSS:

.checkbox-custom { opacity: 0; position: absolute; } .checkbox-custom, .checkbox-custom-label { display: inline-block; vertical-align: middle; margin: 5px; cursor: pointer; } .checkbox-custom + .checkbox-custom-label:before { content: ''''; background: #fff; border-radius: 5px; border: 2px solid #ddd; display: inline-block; vertical-align: middle; width: 10px; height: 10px; padding: 2px; margin-right: 10px; text-align: center; } .checkbox-custom:checked + .checkbox-custom-label:before { content: ""; display: inline-block; width: 1px; height: 5px; border: solid blue; border-width: 0 3px 3px 0; transform: rotate(45deg); -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); border-radius: 0px; margin: 0px 15px 5px 5px; }

<div> <input id="checkbox-1" class="checkbox-custom" name="checkbox-1" type="checkbox"> <label for="checkbox-1" class="checkbox-custom-label">First Choice</label> </div> <div> <input id="checkbox-2" class="checkbox-custom" name="checkbox-2" type="checkbox"> <label for="checkbox-2" class="checkbox-custom-label">Second Choice</label> </div>

La casilla de verificación checked debe ser una marca de verificación con el recuadro bordeado en lugar de solo una marca de verificación. Buscando respuestas, solo he encontrado casos donde la marca de verificación se muestra usando un carácter UTF-8 o una imagen. No puedo usar ninguno de estos para lo que estoy tratando de lograr. Solo puedo usar CSS y HTML simples. ¿Alguna sugerencia?

codepen aquí: http://codepen.io/alisontague/pen/EPXagW?editors=110


Mi respuesta anterior es incorrecta porque usa el selector ::before pseudo-element en un elemento que no es un contenedor . Gracias a @BoltClock por señalar mi error. Entonces, se me ocurrió otra solución que utiliza el Checkbox Hack y el selector de hermanos CSS3 ( ~ ).

Demostración en CodePen

input[type=checkbox] { position: absolute; top: -9999px; left: -9999px; } input[type=checkbox] ~ label::before { content: ''/2713''; display: inline-block; text-align: center; color: white; line-height: 1em; width: 1em; height: 1em; border: 1px inset silver; border-radius: 0.25em; margin: 0.25em; } input[type=checkbox]:checked ~ label::before { color: black; }

<form name="checkbox-form" id="checkbox-form"> <div> <input id="checkbox-1" class="checkbox-custom" name="checkbox-1" type="checkbox"> <label for="checkbox-1" class="checkbox-custom-label">First Choice</label> </div> <div> <input id="checkbox-2" class="checkbox-custom" name="checkbox-2" type="checkbox"> <label for="checkbox-2" class="checkbox-custom-label">Second Choice</label> </div> </form>

No utilicé la funcionalidad "Ejecutar código-fragmento" de porque hace algo extraño cuando lo ejecuto. Creo que es por el truco de la casilla de verificación.