代码之家  ›  专栏  ›  技术社区  ›  ShellRox

通过适当的文字环绕垂直对齐输入字段

  •  0
  • ShellRox  · 技术社区  · 7 年前

    我正在尝试创建一些注册框,其中的标签和输入总是水平对齐。为此,我使用了列表元素,其中每个列表都包含标签和输入。

        #container {
        	background-color: rgb(229, 229, 229);
        }
        
        #lcontainer {
        	list-style-type: none;
        }
        
        #lcontainer li {
        	width: 100%;
        	white-space: nowrap;
        }
        #lcontainer li label {
        	word-break: break;
        	white-space: pre-wrap;
        }
        #lcontainer li input {
        	display: inline-block;
        	white-space: normal;
        }
     <div id="container">
        	<ul id="lcontainer">
        		<li>
        			<label>some text</label>
        			<input></input>
        		</li>
        		<li>
        			<label>some bigger text</label>
        			<input></input>
        		</li>
        		<li>
        			<label>some bigger bigger text</label>
        			<input></input>
        		</li>
        		<li>
        			<label>some bigger bigger bigger text</label>
        			<input></input>
        		</li>
        		<li>
        			<label>some smaller one</label>
        			<input></input>
        		</li>
        	</ul>
        </div>

    如可见,标签的宽度不同,但文本字段的宽度必须相同。


    第一个问题是在一定尺寸的 ul , input 元素包装。我只需要一个标签来包装,所以我使用了 white-space 属性,但不幸的是,它没有任何效果(即使元素的显示属性为 inline-block )

    如何在不进行包装的情况下排列输入元素(因此只有标签包装才负责对输入元素进行同等的衬里)?

    谢谢您!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gautam Naik    7 年前

    这是你想要的吗?

    我做了输入和标签

      display: inline-block;
      vertical-align:middle;
    

    我也给了标签固定的宽度,以便输入正确对齐。

    #container {
      background-color: rgb(229, 229, 229);
    }
    
    #lcontainer {
      list-style-type: none;
    }
    
    #lcontainer li {}
    
    #lcontainer li label {}
    
    #lcontainer li input {}
    
    label {
      width: 100px;
      display: inline-block;
      vertical-align:middle;
    }
    
    input {
      display: inline-block;
      vertical-align:middle;
    }
    <div id="container">
      <ul id="lcontainer">
        <li>
          <label>some text</label>
          <input/>
        </li>
        <li>
          <label>some bigger text</label>
          <input/>
        </li>
        <li>
          <label>some bigger bigger text</label>
          <input/>
        </li>
        <li>
          <label>some bigger bigger bigger text</label>
          <input/>
        </li>
        <li>
          <label>some smaller one</label>
          <input/>
        </li>
      </ul>
    </div>