如何在:before、:after伪元素中实现类似flex-end的靠右对齐效果
解决方案
只需调整以下CSS规则即可实现复选框靠右对齐的效果:
- 让
label元素撑满父容器.wrapper的全部宽度 - 给
.reverse类对应的复选框伪元素设置右定位,覆盖默认的左定位逻辑
修改后完整CSS代码
.wrapper { position: relative; display: inline-flex; min-height: 1.5rem; border: 1px solid black; margin-right: 1rem; padding: 0.5rem; width: 200px; } .input { position: absolute; z-index: -1; visibility: hidden; } .label-wrapper { margin-left: 24px; margin-right: 0; } .label.reverse > .label-wrapper { margin-left: 0; margin-right: 24px; } .label { position: relative; margin-bottom: 0; display:flex; flex-direction: row; width: 100%; /* 新增:撑满父容器宽度 */ } .label.reverse{ flex-direction: row-reverse; } .label:before { position:absolute; display: block; width: 20px; height: 20px; content: ""; background-color: #fff; border: 1px solid black; border-radius:4px; } /* 新增:reverse状态下复选框框体靠右 */ .label.reverse::before { right: 0; left: auto; } .label:after { position: absolute; display: block; height: 20px; content: ""; background-repeat: no-repeat; background-position: center center; background-size: 80%; } /* 新增:reverse状态下勾选标记靠右 */ .label.reverse::after { right: 0; left: auto; } input[type="checkbox"]:checked ~ .label::after { background-image: url("https://cdn-icons-png.flaticon.com/512/447/447147.png"); width: 20px; height: 20px; }
HTML代码无需修改,可直接沿用原有结构。
内容的提问来源于stack exchange,提问作者cts
相关产品推荐
相关产品推荐

