Skip to content

Commit 3112707

Browse files
committed
[design] improve form radio and checkbox
1 parent 5490da8 commit 3112707

File tree

2 files changed

+99
-75
lines changed

2 files changed

+99
-75
lines changed

‎src/css/form.css‎

Lines changed: 96 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ input[type="radio"]:disabled:focus+label{
368368

369369
input[type="checkbox"]+label .label-icon,
370370
input[type="radio"]+label .label-icon{
371+
background-color:rgb(var(--form-icon));
371372
margin-right:1em;
372373
width:var(--form-thumb-size);
373374
height:var(--form-thumb-size);
@@ -377,117 +378,139 @@ input[type="radio"]+label .label-icon{
377378
flex-grow:0;
378379
flex-shrink:0;
379380
z-index:1;
381+
box-shadow: none;
382+
transition: background-color var(--layout-timing-extra-fast), box-shadow var(--layout-timing-extra-fast);
380383
}
381384

382-
input[type="checkbox"]+label .label-icon:before,
383-
input[type="radio"]+label .label-icon:before{
384-
content:"";
385-
border-style: solid;
386-
border-width:var(--layout-line-width);
387-
border-color:rgb(var(--form-icon));
388-
width:100%;
389-
height:100%;
390-
position: absolute;
391-
top:0;
392-
left:0;
393-
display: block;
394-
z-index:2;
395-
transition: border-color var(--layout-timing-extra-fast), border-width var(--layout-timing-extra-fast), box-shadow var(--layout-timing-extra-fast);
385+
input[type="checkbox"]+label .label-icon{
386+
border-radius:0.25em;
396387
}
397388

398-
input[type="checkbox"]:focus+label .label-icon:before,
399-
input[type="checkbox"]:hover+label .label-icon:before,
400-
input[type="radio"]:focus+label .label-icon:before,
401-
input[type="radio"]:hover+label .label-icon:before{
402-
border-color:rgb(var(--form-icon-focus-hover));
389+
input[type="radio"]+label .label-icon{
390+
border-radius:50%;
391+
}
392+
393+
input[type="checkbox"]:focus+label .label-icon,
394+
input[type="checkbox"]:hover+label .label-icon,
395+
input[type="radio"]:focus+label .label-icon,
396+
input[type="radio"]:hover+label .label-icon{
397+
background-color:rgb(var(--form-icon-focus-hover));
403398
box-shadow:var(--form-hover-ring);
404399
}
405400

406-
input[type="checkbox"]:active+label .label-icon:before,
407-
input[type="radio"]:active+label .label-icon:before{
408-
border-color:rgb(var(--form-icon-active));
401+
input[type="checkbox"]:active+label .label-icon,
402+
input[type="radio"]:active+label .label-icon{
403+
background-color:rgb(var(--form-icon-active));
409404
box-shadow:var(--form-focus-ring-accent);
405+
transition: none;
410406
}
411407

412-
input[type="checkbox"]:checked+label .label-icon:before,
413-
input[type="radio"]:checked+label .label-icon:before{
414-
border-color:rgb(var(--form-icon-checked));
408+
input[type="checkbox"]:checked+label .label-icon,
409+
input[type="radio"]:checked+label .label-icon{
410+
background-color:rgb(var(--form-icon-checked));
411+
}
412+
413+
input[type="checkbox"]:disabled+label .label-icon,
414+
input[type="checkbox"]:disabled:hover+label .label-icon,
415+
input[type="checkbox"]:disabled:focus+label .label-icon,
416+
input[type="checkbox"]:checked:disabled+label .label-icon,
417+
input[type="checkbox"]:checked:disabled:hover+label .label-icon,
418+
input[type="checkbox"]:checked:disabled:focus+label .label-icon,
419+
input[type="radio"]:disabled+label .label-icon,
420+
input[type="radio"]:disabled:hover+label .label-icon,
421+
input[type="radio"]:disabled:focus+label .label-icon,
422+
input[type="radio"]:checked:disabled+label .label-icon,
423+
input[type="radio"]:checked:disabled:hover+label .label-icon,
424+
input[type="radio"]:checked:disabled:focus+label .label-icon{
425+
background-color:rgb(var(--form-icon-disabled));
426+
box-shadow: none;
415427
}
416428

417429
input[type="checkbox"]+label .label-icon:before{
418-
border-radius:0.25em;
419-
}
420-
421-
input[type="radio"]+label .label-icon:before{
422-
border-radius:50%;
430+
content:"";
431+
border-right:0.2em solid rgb(var(--form-icon-symbol));
432+
border-bottom:0.2em solid rgb(var(--form-icon-symbol));
433+
box-sizing: content-box;
434+
top:50%;
435+
left:50%;
436+
width:15%;
437+
height:35%;
438+
transform-origin: left top;
439+
transform:scale(0) rotate(45deg) translate(-55%,-60%);
440+
display: block;
441+
position: absolute;
442+
z-index:2;
443+
transition: background-color var(--layout-timing-extra-fast), transform var(--layout-timing-extra-fast);
423444
}
424445

425-
input[type="checkbox"]:disabled+label .label-icon:before,
426-
input[type="checkbox"]:disabled:hover+label .label-icon:before,
427-
input[type="checkbox"]:disabled:focus+label .label-icon:before,
428-
input[type="radio"]:disabled+label .label-icon:before,
429-
input[type="radio"]:disabled:hover+label .label-icon:before,
430-
input[type="radio"]:disabled:focus+label .label-icon:before{
431-
border-color:rgb(var(--form-icon-disabled));
432-
box-shadow: none;
446+
input[type="checkbox"]:checked+label .label-icon:before{
447+
transform:scale(1) rotate(45deg) translate(-55%,-60%);
433448
}
434449

435-
input[type="checkbox"]:checked+label .label-icon:before,
436-
input[type="radio"]:checked+label .label-icon:before{
437-
border-top-width:calc(var(--form-thumb-size) /2);
438-
border-bottom-width:calc(var(--form-thumb-size) /2);
439-
border-left-width:calc(var(--form-thumb-size) /2);
440-
border-right-width:calc(var(--form-thumb-size) /2);
450+
input[type="checkbox"]:checked:active+label .label-icon:before{
451+
transform:scale(0.8) rotate(45deg) translate(-55%,-60%);
441452
}
442453

443454
input[type="checkbox"]+label .label-icon:after,
444455
input[type="radio"]+label .label-icon:after{
445456
content:"";
446-
position: absolute;
457+
background-color:rgb(var(--form-icon-symbol));
458+
width:100%;
459+
height:100%;
447460
display: block;
461+
position: absolute;
462+
top:0;
463+
left:0;
464+
transform:scale(0.7);
465+
transform-origin: center;
448466
z-index:3;
449-
transition:transformvar(--layout-timing-extra-fast),opacityvar(--layout-timing-extra-fast);
467+
transition:background-colorvar(--layout-timing-extra-fast),transformvar(--layout-timing-extra-fast);
450468
}
451469

452470
input[type="checkbox"]+label .label-icon:after{
453-
border-right:0.2em solid rgb(var(--form-icon-symbol));
454-
border-bottom:0.2em solid rgb(var(--form-icon-symbol));
455-
box-sizing: content-box;
456-
top:50%;
457-
left:50%;
458-
width:0.2em;
459-
height:0.5em;
460-
opacity:0;
461-
transform-origin: left top;
462-
transform:rotate(0deg) translate(-54%,-58%);
471+
border-radius:0.25em;
463472
}
464473

465-
input[type="checkbox"]:checked+label .label-icon:after{
466-
opacity:1;
467-
transform:rotate(45deg) translate(-54%,-58%);
474+
input[type="radio"]+label .label-icon:after{
475+
border-radius:70%;
468476
}
469477

470-
input[type="radio"]+label .label-icon:after{
471-
background-color:rgb(var(--form-icon-symbol));
472-
border-radius:50%;
473-
top:50%;
474-
left:50%;
475-
width:0.25em;
476-
height:0.25em;
477-
transform:translate(-54%,-58%);
478-
opacity:0;
479-
transition: opacity var(--layout-timing-extra-fast);
478+
input[type="checkbox"]:active+label .label-icon:after,
479+
input[type="radio"]:active+label .label-icon:after{
480+
transform:scale(0.6);
481+
transition: none;
480482
}
481483

484+
input[type="checkbox"]:checked+label .label-icon:after,
482485
input[type="radio"]:checked+label .label-icon:after{
483-
opacity:1;
486+
background-color:rgb(var(--form-icon-symbol-active));
487+
border-radius:50%;
484488
}
485489

486-
input[type="checkbox"]:disabled+label .label-icon:before{
487-
border-color:rgb(var(--form-icon-symbol-disabled));
490+
input[type="checkbox"]:checked+label .label-icon:after{
491+
transform:scale(0);
488492
}
489493

490-
input[type="radio"]:disabled+label .label-icon:before{
494+
input[type="radio"]:checked+label .label-icon:after{
495+
transform:scale(0.3);
496+
}
497+
498+
input[type="checkbox"]:disabled+label .label-icon:after,
499+
input[type="checkbox"]:disabled:hover+label .label-icon:after,
500+
input[type="checkbox"]:disabled:focus+label .label-icon:after,
501+
input[type="checkbox"]:disabled:active+label .label-icon:after,
502+
input[type="checkbox"]:checked:disabled+label .label-icon:after,
503+
input[type="checkbox"]:checked:disabled:hover+label .label-icon:after,
504+
input[type="checkbox"]:checked:disabled:focus+label .label-icon:after,
505+
input[type="checkbox"]:checked:disabled:active+label .label-icon:after,
506+
input[type="radio"]:disabled+label .label-icon:after,
507+
input[type="radio"]:disabled:hover+label .label-icon:after,
508+
input[type="radio"]:disabled:focus+label .label-icon:after,
509+
input[type="radio"]:disabled:active+label .label-icon:after,
510+
input[type="radio"]:checked:disabled+label .label-icon:after,
511+
input[type="radio"]:checked:disabled:hover+label .label-icon:after,
512+
input[type="radio"]:checked:disabled:focus+label .label-icon:after,
513+
input[type="radio"]:checked:disabled:active+label .label-icon:after{
491514
background-color:rgb(var(--form-icon-symbol-disabled));
492515
}
493516

‎src/css/variables.css‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,10 @@
105105
--form-icon:var(--theme-gray-08);
106106
--form-icon-focus-hover:var(--theme-gray-18);
107107
--form-icon-active:var(--theme-style-text);
108-
--form-icon-disabled:var(--theme-gray-04);
109108
--form-icon-checked:var(--theme-style-text);
110-
--form-icon-symbol:var(--theme-gray-02);
109+
--form-icon-disabled:var(--theme-gray-04);
110+
--form-icon-symbol:var(--theme-gray-01);
111+
--form-icon-symbol-active:var(--theme-gray-01);
111112
--form-icon-symbol-disabled:var(--theme-gray-01);
112113
--form-placeholder:var(--theme-gray-06);
113114
--form-placeholder-focus-hover:var(--theme-gray-10);

0 commit comments

Comments
(0)