【问题标题】:How to Prevent long text label wrapping under the checkbox/radio button?如何防止长文本标签在复选框/单选按钮下换行?
【发布时间】:2017-07-05 08:19:19
【问题描述】:

Sample Markup and CSS

.wrap {
  width: 220px;
}

.indi-wrap {
  padding-bottom: 10px;
}

.control-label {
  display: inline;
  font-weight: 300;
}

button.btn-link {
  background: 0;
  border: 0;
  padding: 0;
  margin: 0;
}
<div class="wrap">
  <div class="indi-wrap">
    <input type="checkbox" />
    <label class="control-label">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.</label>
    <button type="button" class="btn btn-link">only</button>
  </div>
  <div class="indi-wrap">
    <input type="checkbox" />
    <label class="control-label">Xonsectetur adipiscing.</label>
    <button type="button" class="btn btn-link">only</button>
  </div>
  <div class="indi-wrap">
    <input type="checkbox" />
    <label class="control-label">Sed do eiusmod tempor incididunt ut labore.</label>
    <button type="button" class="btn btn-link">only</button>
  </div>
</div>

注意: 我知道我可以将复选框包装在标签内来解决这个问题,但是从“indi-wrap”类开始,它会自动填充在父级“wrap”中,因此我无法在“indi-wrap”中编辑任何内容。

有什么方法可以将文本标签的第二行与第一行对齐?防止它包裹在复选框下。

【问题讨论】:

  • 呃什么?你的代码在哪里?第二行是什么?
  • 已编辑,很抱歉我是新来的
  • 是的,但问题是我无法编辑“indi-wrap”类中的任何内容,而且我里面有 3 个元素,输入、标签和按钮。标签和按钮是内联的,复选框不应该是内联的。

标签: html css twitter-bootstrap


【解决方案1】:

您可以使用 flexbox 来实现这一点。

.wrap {
  width: 220px;
}

.indi-wrap {
  padding-bottom: 10px;
  display: flex;
  align-items: flex-start;
}
.indi-wrap input { flex: 1; }
.indi-wrap label { flex: 7; }

.control-label {
  display: inline;
  font-weight: 300;
}

button.btn-link {
  background: 0;
  border: 0;
  padding: 0;
  margin: 0;
}
<div class="wrap">
  <div class="indi-wrap">
    <input type="checkbox" />
    <label class="control-label">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.</label>
    <button type="button" class="btn btn-link">only</button>
  </div>
  <div class="indi-wrap">
    <input type="checkbox" />
    <label class="control-label">Xonsectetur adipiscing.</label>
    <button type="button" class="btn btn-link">only</button>
  </div>
  <div class="indi-wrap">
    <input type="checkbox" />
    <label class="control-label">Sed do eiusmod tempor incididunt ut labore.</label>
    <button type="button" class="btn btn-link">only</button>
  </div>
</div>

【讨论】:

    【解决方案2】:

    保持现有标记,实现接近目标的一种简单方法是在 .indi-wrap 的 3 个子级上使用 inline-block,并在一行中使用 max-width 将它们全部放在一行中。

    .indi-wrap > * {
        display: inline-block !important;
        max-width: 70%;
        vertical-align: top;
    }
    

    .wrap {
      width: 220px;
    }
    
    .indi-wrap {
      padding-bottom: 10px;
      display: block;
    }
    
    .indi-wrap > * {
        display: inline-block !important;
        max-width: 70%;
        vertical-align: top;
    }
    .control-label {
      font-weight: 300;
    }
    
    button.btn-link {
      background: 0;
      border: 0;
      padding: 0;
      margin: 0;
    }
    <div class="wrap">
      <div class="indi-wrap">
        <input type="checkbox" />
        <label class="control-label">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.</label>
        <button type="button" class="btn btn-link">only</button>
      </div>
      <div class="indi-wrap">
        <input type="checkbox" />
        <label class="control-label">Xonsectetur adipiscing.</label>
        <button type="button" class="btn btn-link">only</button>
      </div>
      <div class="indi-wrap">
        <input type="checkbox" />
        <label class="control-label">Sed do eiusmod tempor incididunt ut labore.</label>
        <button type="button" class="btn btn-link">only</button>
      </div>
    </div>

    【讨论】:

      【解决方案3】:

      你可以试试这样的

      .wrap {
        width: 220px;
      }
      
      .indi-wrap {
        position: relative;
        padding-bottom: 10px;
      }
      
      .indi-wrap input[type='checkbox'] {
        position: absolute;
        left: 0;
      }
      
      .control-label {
        padding-left: 20px;
        font-weight: 300;
        font-size: 14px;
        display: block
      }
      
      button.btn-link {
        background: 0;
        border: 0;
        padding: 0;
        margin: 0;
        font-size: 14px;
        padding-left: 20px;
      }
      <div class="wrap">
        <div class="indi-wrap">
          <input type="checkbox" />
          <label class="control-label">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.</label>
          <button type="button" class="btn btn-link">only</button>
        </div>
        <div class="indi-wrap">
          <input type="checkbox" />
          <label class="control-label">Xonsectetur adipiscing.</label>
          <button type="button" class="btn btn-link">only</button>
        </div>
        <div class="indi-wrap">
          <input type="checkbox" />
          <label class="control-label">Sed do eiusmod tempor incididunt ut labore.</label>
          <button type="button" class="btn btn-link">only</button>
        </div>
      </div>

      【讨论】:

        【解决方案4】:

        一种方法是将输入和按钮都放在标签内,然后使用display:block 作为标签以及正负边距,就像这样

        .wrap {
          width: 220px;
        }
        
        .indi-wrap {
          padding-bottom: 10px;
        }
        
        label.control-label {
          display:block;
          font-weight: 300;  
            margin-left: 20px;
        }
        input{  
            float: left;
            margin-left: -20px !important;
        }
        
        button.btn-link {
          background: 0;
          border: 0;
          padding: 0;
          margin: 0;
        }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
        <div class="wrap">
          <div class="indi-wrap">
            <label class="control-label">
              <input type="checkbox" />
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.
              <button type="button" class="btn btn-link">only</button>
            </label>
          </div>
          <div class="indi-wrap">
            <label class="control-label">
              <input type="checkbox" />
              Xonsectetur adipiscing.
              <button type="button" class="btn btn-link">only</button>
            </label>
          </div>
          <div class="indi-wrap">
            <label class="control-label">
              <input type="checkbox" />
              Sed do eiusmod tempor incididunt ut labore.
              <button type="button" class="btn btn-link">only</button>
            </label>
          </div>
        </div>

        【讨论】:

        • 再次抱歉,我应该说“我无法在“indi-wrap”中编辑任何内容”
        猜你喜欢
        • 2013-01-20
        • 2014-06-21
        • 2023-03-08
        • 2021-05-07
        • 2016-02-12
        • 2012-10-16
        • 2010-10-24
        • 2016-08-16
        • 1970-01-01
        相关资源
        最近更新 更多