【问题标题】:Move checkbox label to left on bootstrap custom checkbox在引导程序自定义复选框上将复选框标签移动到左侧
【发布时间】:2019-12-03 22:34:55
【问题描述】:

我有一个复选框

<div class="custom-control custom-checkbox custom-control-inline">
   <input type="checkbox"  id="location"  v-model="checkedLocations"   value="location" name="customRadioInline1" class="custom-control-input">
   <label class="custom-control-label" for="location"> Option 1</label>
</div>

如何将标签移动到左侧显示?我已经尝试更改顺序,但它只是破坏了复选框的功能。

    <div class="custom-control custom-checkbox custom-control-inline">
         <label class="custom-control-label" for="location2"> Option 2</label>
        <input type="checkbox"  id="location2"  value="location2" name="custom2" class="custom-control-input">
   </div>

CODEPEN Link to show both examples

【问题讨论】:

    标签: html css twitter-bootstrap bootstrap-4


    【解决方案1】:

    答案似乎不适用于custom-switch。这是一个工作示例。

    CSS

    div.custom-control-right {
        padding-right: 24px;
        padding-left: 0;
        margin-left: 0;
        margin-right: 0;
    }
    div.custom-control-right .custom-control-label::after{
        right: -1.5rem;
        left: auto;
    }
    div.custom-control-right .custom-control-label::before {
        right: -2.35rem;
        left: auto;
    }
    

    HTML

    <div class="custom-control custom-control-right custom-switch">
        <input type="checkbox" class="custom-control-input" disabled id="customSwitch2">
        <label class="custom-control-label" for="customSwitch2">Right switch element</label>
    </div>
    

    JsFiddle

    https://jsfiddle.net/2cmbq9r0/

    编辑:将 left:initial 更改为 left:auto 以使其适用于 IE11。

    【讨论】:

      【解决方案2】:

      复选框不是实际的&lt;input&gt;(已隐藏)。这样做是为了使其样式一致地跨浏览器、跨设备,因为 &lt;input type="checkbox"&gt; 目前无法做到这一点。

      改为使用&lt;label&gt;::before 伪元素。

      因此,您应该在包装器上放置一个自定义类(在下面的示例中为custom-control-right)并添加一些覆盖默认值的 CSS:

      div.custom-control-right {
        padding-right: 24px;
        padding-left: 0;
        margin-left: 16px;
        margin-right: 0;
      }
      div.custom-control-right .custom-control-label::before,
      div.custom-control-right .custom-control-label::after{
        right: -1.5rem;
        left: initial;
      }
      <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
      <div style="margin:20px;">
          <div class="custom-control custom-checkbox custom-control-inline custom-control-right">
              <input type="checkbox"  id="location"     value="location" name="custom1" class="custom-control-input">
             <label class="custom-control-label" for="location"> Option 1</label>
          </div>
        
          <div class="custom-control custom-checkbox custom-control-inline custom-control-right">
               <input type="checkbox"  id="location2"  value="location2" name="custom2" class="custom-control-input">
              <label class="custom-control-label" for="location2"> Option 2</label>
         </div>
      </div>

      注意:您可以将div.custom-control-right 选择器替换为.custom-control-right,如果此代码在您加载Bootstrap css 之后被解析。但是,在 SO 上,链接资源是在 CSS 面板中的代码之后加载的,我必须对选择器进行过度限定才能使其工作。

      【讨论】:

      • 我的错,我只在标签文字上测试过,没有在盒子上测试过。我更新了所需的选择器。
      • 复选框和标签之间有一个小空间,不会触发更改。但这是故意的,原来的也是如此。它旨在使标签文本可以在不触发更改的情况下被选择。我决定保留它。如果您不想要它,您需要在&lt;label&gt; 上添加一些padding-right 和一个同样负的边距,以便它覆盖复选框。
      【解决方案3】:

      试试看:Fiddle

      <div style="margin:20px;">
        <div class="custom-control custom-checkbox custom-control-inline">
          <input type="checkbox" id="location" value="location" name="custom1" class="custom-control-input">
          <label class="custom-control-label" for="location"> Option 1</label>
        </div>
      
        <div class="custom-control custom-checkbox custom-control-inline">
      
          <input type="checkbox" id="location2" value="location2" name="custom2" class="custom-control-input">
          <label class="custom-control-label" for="location2"> Option 2</label>
        </div>
      </div>
      

      css:

      .custom-checkbox {
        padding-left: 0;
      }
      
      label.custom-control-label {
        padding-right: 1.5rem;
      }
      
      .custom-control-label::before,
      .custom-control-label::after {
        right: 0;
        left: auto;
      }
      

      【讨论】:

      • 请注意,这将更改所有 custom-checkbox 实例。请注意,针对特定情况有特定的类(即:custom-control-inline)。最好的方法是保持默认功能不变,使其仍按预期工作,并使用自定义类添加新功能,以便您可以在需要的地方应用它。
      • 你可以新建一个类,把上面的CSS放进去。以便您可以在需要时使用它。例如:jsfiddle.net/abhineetV/mhrgvkbj/3
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      相关资源
      最近更新 更多