How to make the border increase not affect the position of the absolute element?
.switch { position: relative; display: inline-block; width: 60px; height: 34px; } .switch input {display:none;} .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; } .slider:focus::before { border: solid 4px rgba(255, 216, 64, 0.6); content:'cxcx'; } input:checked:active + .slider { background-color: #303030; border: solid 10px #ffc620; position: absolute; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: .4s; transition: .4s; } input:active + .slider { box-shadow: 0 0 1px #2196F3; border: solid 4px rgba(255, 216, 64, .6); } input:checked + .slider { background-color: #2196F3; } .slider:focus { } input:focus + .slider { box-shadow: 0 0 1px #2196F3; border: solid 4px rgba(255, 216, 64, .6); } input:checked + .slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(26px); } /* Rounded sliders */ .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } <label class="switch"> <input type="checkbox" checked> <span class="slider round"></span> </label>