【问题标题】:How to align radio button inside a li tag如何对齐 li 标签内的单选按钮
【发布时间】:2019-11-13 07:07:15
【问题描述】:

我正在尝试使用 vanilla javascript 创建一个待办事项列表,当文本输入到文本输入时,它将动态创建一个

  • 和文本。我想动态添加一个单选按钮并将其与中心的 li 末尾对齐。

    我尝试将display: table-cell;vertical-align center 添加到

  • 标记中,但这不起作用,因为它使
  • 太小。我还尝试了
  • 标签上的display: flex 和单选按钮上的justify-content: flex-end;,但它会将单选按钮移动到另一个位置,但仍然不正确。

    我已将代码放入小提琴中:https://jsfiddle.net/oub5pm4g/

    document.querySelector("#add").addEventListener("click", btnClick);
    document.querySelector("#input").addEventListener("keyup", keyUp)
    
    function keyUp(event) {
        if (event.keyCode === 13) {
            event.preventDefault();
            btnClick();
        }
    }
    
    function btnClick(event) {
        event.preventDefault()
        var input = document.querySelector("#input");
        var ul = document.querySelector("ul");
        li = document.createElement("li");
        ul.appendChild(li);
        h2 = document.createElement("h2");
        text = document.createTextNode(input.value);
        h2.appendChild(text);
        li.appendChild(h2);
        var radio = document.createElement("input");
        radio.setAttribute("type", "radio");
        li.appendChild(radio);
        document.querySelector("#form").reset();
    
    
    }
    body {
      background: rgb(238, 237, 237);
    }
    
    .container {
      background: white;
      max-width: 50%;
      max-height: 80%;
      margin: 0 auto;
      border-radius: 25px;
      padding: 2%;
      box-shadow: 0 5px 10px rgba(154, 160, 185, 0.05),
        0 15px 40px rgba(166, 173, 201, 0.2);
    }
    
    h1 {
      font-family: "Roboto", sans-serif;
      font-weight: 900;
      text-align: center;
    }
    
    h2 {
      font-weight: 600;
    }
    
    h3 {
      font-weight: 00;
    }
    
    h4 {
      font-weight: 100;
    }
    
    ul {
      list-style: none;
      padding: 0;
      font-family: "Roboto", sans-serif;
      margin-top: 5%;
      color: white;
    }
    
    li {
      box-sizing: border-box;
      width: 100%;
      margin-bottom: 5%;
      font-size: 1em;
      background: crimson;
      padding: 1em;
      border-radius: 15px;
    }
    
    input[type="text"] {
      box-sizing: border-box;
      width: 85%;
      font-size: 1em;
      padding: 1em;
    }
    
    input[type="radio"] {
      float: right;
      align-content: center;
    }
    
    button {
      padding: 1em;
      width: 13%;
      font-size: 1em;
      color: white;
      background: crimson;
      margin-left: 1.4%;
    }
    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Page Title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
        <link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet">
    
    </head>
    
    <body>
    
        <div class="container">
    
            <h1>To-Do List</h1>
            <form id="form">
    
                <input type="text" placeholder="Add new task..." id="input">
                <button id="add" type="submit">Add</button>
    
    
            </form>
            <ul>
    
    
            </ul>
    
        </div>
    
    </body>
    <script src="main.js"></script>
    
    </html>

    谢谢。

  • 【问题讨论】:

    • to the end of the li in the center
    • @ScottMarcus 我希望它右对齐,但如果有意义的话,与文本在同一行
    • @Paulie_D 问题已编辑,谢谢!

    标签: javascript html css


    【解决方案1】:

    li 标签上尝试flex 属性

    li {
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
    

    document.querySelector("#add").addEventListener("click", btnClick);
    document.querySelector("#input").addEventListener("keyup", keyUp)
    
    function keyUp(event) {
      if (event.keyCode === 13) {
        event.preventDefault();
        btnClick();
      }
    }
    
    function btnClick(event) {
      event.preventDefault()
      var input = document.querySelector("#input");
      var ul = document.querySelector("ul");
      li = document.createElement("li");
      ul.appendChild(li);
      h2 = document.createElement("h2");
      text = document.createTextNode(input.value);
      h2.appendChild(text);
      li.appendChild(h2);
      var radio = document.createElement("input");
      radio.setAttribute("type", "radio");
      li.appendChild(radio);
      document.querySelector("#form").reset();
    
    
    }
    body {
      background: rgb(238, 237, 237);
    }
    
    .container {
      background: white;
      max-width: 50%;
      max-height: 80%;
      margin: 0 auto;
      border-radius: 25px;
      padding: 2%;
      box-shadow: 0 5px 10px rgba(154, 160, 185, 0.05), 0 15px 40px rgba(166, 173, 201, 0.2);
    }
    
    h1 {
      font-family: "Roboto", sans-serif;
      font-weight: 900;
      text-align: center;
    }
    
    h2 {
      font-weight: 600;
    }
    
    h3 {
      font-weight: 00;
    }
    
    h4 {
      font-weight: 100;
    }
    
    ul {
      list-style: none;
      padding: 0;
      font-family: "Roboto", sans-serif;
      margin-top: 5%;
      color: white;
    }
    
    li {
      box-sizing: border-box;
      width: 100%;
      margin-bottom: 5%;
      font-size: 1em;
      background: crimson;
      padding: 1em;
      border-radius: 15px;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
    
    input[type="text"] {
      box-sizing: border-box;
      width: 85%;
      font-size: 1em;
      padding: 1em;
    }
    
    input[type="radio"] {
      float: right;
      align-content: center;
    }
    
    button {
      padding: 1em;
      width: 13%;
      font-size: 1em;
      color: white;
      background: crimson;
      margin-left: 1.4%;
    }
    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title>Page Title</title>
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
      <link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet">
    
    </head>
    
    <body>
    
      <div class="container">
    
        <h1>To-Do List</h1>
        <form id="form">
    
          <input type="text" placeholder="Add new task..." id="input">
          <button id="add" type="submit">Add</button>
    
    
        </form>
        <ul>
    
    
        </ul>
    
      </div>
    
    </body>
    <script src="main.js"></script>
    
    </html>

    【讨论】:

    • 我建议您使用label 而不是h2 并在label 上应用font-sizeCheck this
    猜你喜欢
    • 2015-01-25
    • 2014-12-01
    • 2021-03-27
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 2015-09-17
    • 2021-03-09
    相关资源
    最近更新 更多