如何在不破坏CSS滑块开关的情况下对齐它们

时间:2019-01-27 02:37:34

标签: html css

我正在尝试使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>

1 个答案:

答案 0 :(得分:1)

好吧,flex是更好的方法,也可以支持更轻松的垂直对齐,但这需要重新排列DOM。如果要保留此结构,最简单的解决方案可能是在跨度标签中添加一个类:<span class="switch__title">thing 1</span>

然后添加:

.switch__title {
    display: inline-block;
    width: 200px;
}