css HTML -如何在元素的父元素设置为“display:table”?

iswrvxsc  于 2023-04-08  发布在  其他
关注(0)|答案(3)|浏览(148)

我使用一个表格视图来对齐我的表单,同时,我希望提交按钮在表单的中间,但浏览器似乎总是把它放在表格单元格的中间。

form {
  display: table;
}
form > div {
  display: table-row;
}
form > div > label {
  display: table-cell;
  padding-right: 10px;
}
form > input[type="submit"] {
  display: block;
  margin: auto;
}
<form>
  <div class="user-name">
    <label for="user-name">User Name</label>
    <input type="text" name="user-name" id="user-name" />
  </div>
  <div class="password">
    <label for="password">Password</label>
    <input type="password" name="password" id="password" />
  </div>
  <input type="submit" />
</form>
dzhpxtsq

dzhpxtsq1#

这里有一个使用Flex而不是Table的解决方案!我相信Flex可能是一个更可行的选择,因为它提供了更多的 * 灵活性 *,就定向和对齐内容而言。

form {
  display: inline-flex;
  flex-direction: column;
}

.user-name,
.password {
  display: flex;
  justify-content: flex-end;
}

form > div > label {
  padding-right: 10px;
}

form > input[type='submit'] {
  display: block;
  margin: 10px auto;
}
<form>
  <div class="user-name">
    <label for="user-name">User Name</label>
    <input type="text" name="user-name" id="user-name" />
  </div>
  <div class="password">
    <label for="password">Password</label>
    <input type="password" name="password" id="password" />
  </div>
  <input type="submit" />
</form>
atmip9wb

atmip9wb2#

这将是display: table版本。您的margin不能在表中工作。此外,没有可用的colspan。因此,您必须position: absolute一个子级并跨越整个宽度(或者在您的情况下,将其与lefttransform居中)。
因此,要么使用真实的的<table>,要么(因为现在是2023年)使用flexbox或更新的css grid

form {
  display: table;
}
form > div {
  display: table-row;
}
form > div > label {
  display: table-cell;
  padding-right: 10px;
}

.submit-btn {
  position: relative;
}

form input[type="submit"] {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}
<form>
  <div class="user-name">
    <label for="user-name">User Name</label>
    <input type="text" name="user-name" id="user-name" />
  </div>
  <div class="password">
    <label for="password">Password</label>
    <input type="password" name="password" id="password" />
  </div>
  <div class="submit-btn"><span>&nbsp;</span><input type="submit" /></div>
</form>
hts6caw3

hts6caw33#

.user-name,
.password {
    width: 250px;
    padding: 5px;
}

.user-name input,
.password input {
    float: right;
}
.submitButton {
    width: 250px;
    padding: 5px;
    display: flex;
    justify-content: center;
}
<form>
            <div class="user-name">
                <label for="user-name">User Name</label>
                <input type="text" name="user-name" id="user-name" />
            </div>
            <div class="password">
                <label for="password">Password</label>
                <input type="password" name="password" id="password" />
            </div>
            <div class="submitButton">
                <input type="submit" />
            </div>
        </form>

正如上面的代码,你可以改变你的显示风格,并添加更多的表单元素,就像这样,这将给予完美的外观,希望这有帮助,注解,如果你需要什么。

相关问题