我正在尝试使CSS滑块开关对齐。
我曾尝试使用position: absolute; margin-left: 15em
来正常工作……但是滑块依赖于不是position: absolute;
并将其设为绝对值会破坏滑块的视觉效果。
我考虑使用flex网格,但不希望这些开关包装。
我可以使用表,但是如果可以的话,我想避免使用它。
/* toggle switch */
.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:#555;-webkit-transition:.4s;transition:.4s}
.slider:before{position:absolute;content:"";height:26px;width:26px;left:4px;bottom:4px;background-color:#000;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:#fff}input:focus+.slider{box-shadow:0 0 1px #fff}input:checked+.slider:before{-webkit-transform:translateX(26px);-ms-transform:translateX(26px);transform:translateX(26px)}
.slider.round{border-radius:34px}
.slider.round:before{border-radius:50%}
<div class="vfor-content">
<span v-bind:id="item.name" onclick="_app.doFlipRelay(this.id)">
<span>thing 1</span>
<label class="switch">
<input type="checkbox" v-model="item.value == '1'" disabled>
<span class="slider round"></span>
</label>
</span>
</div>
<div class="vfor-content">
<span v-bind:id="item.name" onclick="_app.doFlipRelay(this.id)">
<span>thing 2 with long name</span>
<label class="switch">
<input type="checkbox" v-model="item.value == '1'" disabled>
<span class="slider round"></span>
</label>
</span>
</div>
<div class="vfor-content">
<span v-bind:id="item.name" onclick="_app.doFlipRelay(this.id)">
<span>thing 3</span>
<label class="switch">
<input type="checkbox" v-model="item.value == '1'" disabled>
<span class="slider round"></span>
</label>
</span>
</div>
答案 0 :(得分:1)
好吧,flex是更好的方法,也可以支持更轻松的垂直对齐,但这需要重新排列DOM。如果要保留此结构,最简单的解决方案可能是在跨度标签中添加一个类:<span class="switch__title">thing 1</span>
然后添加:
.switch__title {
display: inline-block;
width: 200px;
}