【问题标题】:How can I align text to the right side of radio and checkbox inputs?如何将文本对齐到单选框和复选框输入的右侧?
【发布时间】:2023-02-03 05:56:28
【问题描述】:

我试图让我的复选框和单选输入出现在表单标签的左侧,它们的标签出现在它们旁边。然而,无论我找到多少例子,似乎没有一个解决方案对我有帮助。

所有显示器都设置为 flex。我还注释掉了几行 CSS,因为它们旨在与 JavaScript(我还没有编写)一起使用。我怀疑它们是否相关,因为一个设置整个页面显示,另一个隐藏带有“隐藏问题”类的元素,但我将它们包括在内以防万一我遗漏了什么。

我希望这是足够的信息。任何帮助,将不胜感激。

这是我的代码:

* {
  margin: 0;
  padding: 0;
}

h2,
p,
label {
  color: #231f20;
}

h2,
p {
  font-weight: bold;
}

body {
  font-family: Arial, Helvetica, sans-serif;
  box-sizing: border-box;
  padding: 10px;
}

form {
  display: flex;
  /*height: 100vh;*/
  justify-content: center;
  align-items: center;
  background-color: #fac08e;
}

header {
  width: 100%;
  background-color: #fac08e;
  overflow: hidden;
}

input,
select {
  margin-top: 6px;
}

li {
  list-style: none;
  margin: 10px 0;
}

textarea {
  resize: none;
  font-family: Arial, Helvetica, sans-serif;
  padding: 5px;
}


/*.hide-question {
                display: none;
            }*/

.question {
  background-color: #fcd6b5;
  display: flex;
  flex-direction: column;
  padding: 10%;
  border-radius: 20px;
}

.question-title {
  font-size: 20px;
  margin-bottom: 5px;
}

.question-title span {
  font-size: 24px;
  margin-right: 12px;
}

#question-20 input,
#question-21 input {
  display: block;
}
<body>
  <form action="results.html" method="GET" enctype="multipart/form-data">
    <div class="question">

      <div id="question-4" class="hide-question">
        <p class="question-title"><span>4</span> Are you a Citizen?</p>
        
        <ul>
          <li>
            <label for="idyesCitizen">Yes</label>
            <input type="radio" name="Citizenship" id="idyesCitizen" value="Yes">
          </li>
          
          <li>
            <label for="idnoCitizen">No</label>
            <input type="radio" name="Citizenship" id="idnoCitizen" value="No">
          </li>
        </ul>
      </div>

      <div id="question-6" class="hide-question">
        <p class="question-title"><span>6</span> What other Languages can you speak?</p>
        <ul>
          <li>
            <label for="idmandarin">Mandarin</label>
            <input type="checkbox" name="Mandarin" id="idmandarin">
          </li>

          <li>
            <label for="iditalian">Italian</label>
            <input type="checkbox" name="Italian" id="iditalian">

          </li>

          <li>
            <label for="idarabic">Arabic</label>
            <input type="checkbox" name="Arabic" id="idarabic">
          </li>

          <li>
            <label for="idcantonese">Cantonese</label>
            <input type="checkbox" name="Cantonese" id="idcantonese">
          </li>

          <li>
            <label for="idgreek">Greek</label>
            <input type="checkbox" name="Greek" id="idgreek">
          </li>
        </ul>
      </div>
    </div>
  </form>
</body>

【问题讨论】:

  • 请使用tour,这样您就知道如何跟进您的问题。不鼓励使用“谢谢”cmets。

标签: html css checkbox radio-button alignment


【解决方案1】:

如果你想要输入后的标签,为什么所有的标签元素标记中的输入?

此外,对于单选按钮和复选框,标签可以输入。这消除了对 for 属性和 ID 的需要,它使标签可点击。

* {
  margin: 0;
  padding: 0;
}

h2,
p,
label {
  color: #231f20;
}

h2,
p {
  font-weight: bold;
}

body {
  font-family: Arial, Helvetica, sans-serif;
  box-sizing: border-box;
  padding: 10px;
}

form {
  display: flex;
  /*height: 100vh;*/
  justify-content: center;
  align-items: center;
  background-color: #fac08e;
}

header {
  width: 100%;
  background-color: #fac08e;
  overflow: hidden;
}

input,
select {
  margin-top: 6px;
}

li {
  list-style: none;
  margin: 10px 0;
}

textarea {
  resize: none;
  font-family: Arial, Helvetica, sans-serif;
  padding: 5px;
}


/*.hide-question {
                display: none;
            }*/

.question {
  background-color: #fcd6b5;
  display: flex;
  flex-direction: column;
  padding: 10%;
  border-radius: 20px;
}

.question-title {
  font-size: 20px;
  margin-bottom: 5px;
}

.question-title span {
  font-size: 24px;
  margin-right: 12px;
}

#question-20 input,
#question-21 input {
  display: block;
}
<body>
  <form action="results.html" method="GET" enctype="multipart/form-data">
    <div class="question">

      <div id="question-4" class="hide-question">
        <p class="question-title"><span>4</span> Are you a Citizen?</p>

        <ul>
          <li>
            <label>
              <input type="radio" name="Citizenship" value="Yes">
              Yes
            </label>
          </li>

          <li>
            <label>
              <input type="radio" name="Citizenship" value="No">
              No
            </label>
          </li>
        </ul>
      </div>

      <div id="question-6" class="hide-question">
        <p class="question-title"><span>6</span> What other Languages can you speak?</p>
        <ul>
          <li>
            <label>
              <input type="checkbox" name="Mandarin">
              Mandarin
            </label>
          </li>

          <li>
            <label>
              <input type="checkbox" name="Italian">
              Italian
            </label>
          </li>

          <li>
            <label>
              <input type="checkbox" name="Arabic">
              Arabic
            </label>
          </li>

          <li>
            <label>
              <input type="checkbox" name="Cantonese">
              Cantonese
            </label>
          </li>

          <li>
            <label>
              <input type="checkbox" name="Greek">
              Greek
            </label>
          </li>
        </ul>
      </div>
    </div>
  </form>
</body>

【讨论】:

    【解决方案2】:

    只需将标签放在复选框之后:

    * {
      margin: 0;
      padding: 0;
    }
    
    h2,
    p,
    label {
      color: #231f20;
    }
    
    h2,
    p {
      font-weight: bold;
    }
    
    body {
      font-family: Arial, Helvetica, sans-serif;
      box-sizing: border-box;
      padding: 10px;
    }
    
    form {
      display: flex;
      /*height: 100vh;*/
      justify-content: center;
      align-items: center;
      background-color: #fac08e;
    }
    
    header {
      width: 100%;
      background-color: #fac08e;
      overflow: hidden;
    }
    
    input,
    select {
      margin-top: 6px;
    }
    
    li {
      list-style: none;
      margin: 10px 0;
    }
    
    textarea {
      resize: none;
      font-family: Arial, Helvetica, sans-serif;
      padding: 5px;
    }
    
    
    /*.hide-question {
                    display: none;
                }*/
    
    .question {
      background-color: #fcd6b5;
      display: flex;
      flex-direction: column;
      padding: 10%;
      border-radius: 20px;
    }
    
    .question-title {
      font-size: 20px;
      margin-bottom: 5px;
    }
    
    .question-title span {
      font-size: 24px;
      margin-right: 12px;
    }
    
    #question-20 input,
    #question-21 input {
      display: block;
    }
    <body>
      <form action="results.html" method="GET" enctype="multipart/form-data">
        <div class="question">
    
          <div id="question-4" class="hide-question">
            <p class="question-title"><span>4</span> Are you a Citizen?</p>
            
            <ul>
              <li>
                
                <input type="radio" name="Citizenship" id="idyesCitizen" value="Yes">
               <label for="idyesCitizen">Yes</label>
              </li>
              
              <li>
                
                <input type="radio" name="Citizenship" id="idnoCitizen" value="No">
                <label for="idnoCitizen">No</label>
              </li>
            </ul>
          </div>
    
          <div id="question-6" class="hide-question">
            <p class="question-title"><span>6</span> What other Languages can you speak?</p>
            <ul>
              <li>
                
                <input type="checkbox" name="Mandarin" id="idmandarin">
                <label for="idmandarin">Mandarin</label>
              </li>
    
              <li>
                
                <input type="checkbox" name="Italian" id="iditalian">
    <label for="iditalian">Italian</label>
              </li>
    
              <li>
                
                <input type="checkbox" name="Arabic" id="idarabic">
    <label for="idarabic">Arabic</label>
              </li>
    
              <li>
                
                <input type="checkbox" name="Cantonese" id="idcantonese">
    <label for="idcantonese">Cantonese</label>
              </li>
    
              <li>
                
                <input type="checkbox" name="Greek" id="idgreek">
                <label for="idgreek">Greek</label>
              </li>
            </ul>
          </div>
        </div>
      </form>
    </body>

    【讨论】:

      【解决方案3】:
      • 老实说,如果我是你,我会把labels放在input标签之后,这样在应用flex后它们会自动相邻。
      • 但是如果你不想改变你html。你只需要flex-direction:row-reverse``. and justify-content:flex:end```。
      • 我已将类 reverseLabels 添加到 uls 并在 css 下应用。
      .reverseLabels>li {
        display: flex;
        align-items: center;
        flex-direction: row-reverse;
        justify-content: flex-end;
      }
      

      * {
        margin: 0;
        padding: 0;
      }
      
      h2,
      p,
      label {
        color: #231f20;
      }
      
      h2,
      p {
        font-weight: bold;
      }
      
      body {
        font-family: Arial, Helvetica, sans-serif;
        box-sizing: border-box;
        padding: 10px;
      }
      
      form {
        display: flex;
        /*height: 100vh;*/
        justify-content: center;
        align-items: center;
        background-color: #fac08e;
      }
      
      header {
        width: 100%;
        background-color: #fac08e;
        overflow: hidden;
      }
      
      input,
      select {
        margin-top: 6px;
      }
      
      li {
        list-style: none;
        margin: 10px 0;
      }
      
      textarea {
        resize: none;
        font-family: Arial, Helvetica, sans-serif;
        padding: 5px;
      }
      
      
      /*.hide-question {
                      display: none;
                  }*/
      
      .question {
        background-color: #fcd6b5;
        display: flex;
        flex-direction: column;
        padding: 10%;
        border-radius: 20px;
      }
      
      .question-title {
        font-size: 20px;
        margin-bottom: 5px;
      }
      
      .question-title span {
        font-size: 24px;
        margin-right: 12px;
      }
      
      #question-20 input,
      #question-21 input {
        display: block;
      }
      
      
      /*To acheive desire output use this css if you do not want to change html*/
      
      .reverseLabels>li {
        display: flex;
        align-items: center;
        flex-direction: row-reverse;
        justify-content: flex-end;
      }
      
      .reverseLabels>li input {
        margin-top: 0;
      }
      <body>
        <form action="results.html" method="GET" enctype="multipart/form-data">
          <div class="question">
      
            <div id="question-4" class="hide-question">
              <p class="question-title"><span>4</span> Are you a Citizen?</p>
      
              <ul class="reverseLabels">
                <li>
                  <label for="idyesCitizen">Yes</label>
                  <input type="radio" name="Citizenship" id="idyesCitizen" value="Yes">
                </li>
      
                <li>
                  <label for="idnoCitizen">No</label>
                  <input type="radio" name="Citizenship" id="idnoCitizen" value="No">
                </li>
              </ul>
            </div>
      
            <div id="question-6" class="hide-question">
              <p class="question-title"><span>6</span> What other Languages can you speak?</p>
              <ul class="reverseLabels">
                <li>
                  <label for="idmandarin">Mandarin</label>
                  <input type="checkbox" name="Mandarin" id="idmandarin">
                </li>
      
                <li>
                  <label for="iditalian">Italian</label>
                  <input type="checkbox" name="Italian" id="iditalian">
      
                </li>
      
                <li>
                  <label for="idarabic">Arabic</label>
                  <input type="checkbox" name="Arabic" id="idarabic">
                </li>
      
                <li>
                  <label for="idcantonese">Cantonese</label>
                  <input type="checkbox" name="Cantonese" id="idcantonese">
                </li>
      
                <li>
                  <label for="idgreek">Greek</label>
                  <input type="checkbox" name="Greek" id="idgreek">
                </li>
              </ul>
            </div>
          </div>
        </form>
      </body>

      【讨论】:

        猜你喜欢
        • 2014-06-07
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多