将容器中的元素和线上的容器对齐

Cat*_*ine 3 html css django-forms

我有几个元素,我试图组合在一起,然后将它们放在页面上,如下所示:

                                         |
                                         |
              Username:                  |                 
              ________________           |                 IMG 1
              Password:                  |                 
              ________________           |                 IMG 2
                  login                  |
                                         |
                                         |
Run Code Online (Sandbox Code Playgroud)

我不希望用户名和密码居中,我仍然希望那些位于输入框的最左侧.

现在它看起来像这样:

                                         |
 Username                              IM|G 2  
                                         |                 
         _______________                 |                 IMG 1
         _______________             Pass|word:                 
                                         |                 
                  login                  |
                                         |
                                         |
Run Code Online (Sandbox Code Playgroud)

我有IMG 1,登录按钮和垂直线在一个好位置,但形式只是到处都是.我已经尝试过玩很多不同的东西来获取其他登录表单和IMG 2在正确的位置,但我被卡住了.这是我的html文件的基本布局:

<div id="center-wrapper">
    <div id="img1">
        <img src="img1.png" />
    </div>
    <br>
    <div id="img2">
        <img src="img2.png" />
    </div>

    <div id="line"></div>

    <form id="form-wrapper" action="/login/" method="post" style="width:40%;">
    {% csrf_token %}
    {% for field in form %}
    <br>
        {% if field.errors %}
            <div class="form-group has-error">
                <label class="col-sm-2 control-label" for="id_{{ field.name }}">
                {{ field.label }}</label>
                <div class="col-sm-10">
                    {{ field|attr:"class:form-control" }}
                    <span class="help-block">
                        {% for error in  field.errors %}{{ error }}{% endfor %}
                    </span>
                </div>
            </div>
        {% else %}
            <div class="form-group">
                <label class="col-sm-2 control-label" for="id_{{ field.name }}">{{ field.label }}</label>
                <div class="col-sm-10">
                    {{ field|attr:"class:form-control" }}
                    {% if field.help_text %}
                        <p class="help-block"><small>{{ field.help_text }}</small></p>
                    {% endif %}
                </div>
            </div>
        {% endif %}
        <br>
    {% endfor %}
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <br>
            <button type="submit" class="btn btn-primary" value="Log In">{% trans "Log In" %}</button><br>
            <br>Don't have an account? <a href="/signup/">Sign Up</a>
        </div>
    </div>
    </form>
</div>
Run Code Online (Sandbox Code Playgroud)

我的按钮在我的表单内,所以我不确定为什么一个正确居中,其余的形式不是.此外,<br>还没有将IMG 2置于IMG 1之下.我的CSS是这样的:

#center-wrapper {
    text-align: center;
    margin: auto;
    width: 60%;
    height: 100%;
}

#form-wrapper {
    width: 50%;
}

#img1 {
    height: 220px;
    width: 274px;
    background: none;
    z-index: 30;
    float: right;
    position: absolute;
    margin-top: 0;
}

#img2 {
    height: 85px;
    width: 274px;
    background: none;
    z-index: 30;
    float: right;
    position: absolute;
    margin-bottom: 0;
}

#line {
    height: 305px;
    width: 2px;
    background-color: #8a8a8a;
    top: 200px;
    left: 50%;
    z-index: 30;
    position: absolute;
}
Run Code Online (Sandbox Code Playgroud)

我不认为我的问题很难,但我一直在努力使这种格式保持这么长时间,我只是想要一些建议!我正在使用Django表单,格式化很复杂(使用widget-tweaks格式化它们),但我不认为这对移动它的位置很重要.

Dan*_*niP 6

请避免使用absolute这种布局的位置,这些布局会在某些时候破坏您的视野.

我建议使用其他CSS方法.如果您有更多问题可以查询,请查看此代码段示例:

显示 - 表格

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box
}
html,
body {
  height: 100%;
}
#center-wrapper {
  height: 100%;
  width: 100%;
  display: table;
}
#center-wrapper > div {
  width: 50%;
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}
#center-wrapper > div:first-child {
  border-right: 2px solid red;
}
#form-wrapper {
  width: 70%;
  display: inline-block;
}
label,
input {
  width: 100%;
  text-align: left;
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div id="center-wrapper">
  <div>
    <form id="form-wrapper">
      <label>User</label>
      <input type="text">
      <label>Pass</label>
      <input type="text">
      <button type="submit" value="Log In">Log In</button>
    </form>
  </div>
  <div>
    <img src="http://placehold.it/200" />
    <img src="http://placehold.it/200" />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


inline-block的

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box
}
html,
body {
  height: 100%;
}
#center-wrapper {
  height: 100%;
  width: 100%;
}
#center-wrapper > div {
  width: 48%;
  display: inline-block;
  vertical-align: middle;
  text-align: center;
}
#center-wrapper > div.line {
  width:2%;
  height:100%;
  background:purple;
}
#form-wrapper {
  width: 70%;
  display: inline-block;
}
label,
input {
  width: 100%;
  text-align: left;
  display: block;
}
Run Code Online (Sandbox Code Playgroud)
<div id="center-wrapper">
  <div>
    <form id="form-wrapper">
      <label>User</label>
      <input type="text">
      <label>Pass</label>
      <input type="text">
      <button type="submit" value="Log In">Log In</button>
    </form>
  </div>
  <div class="line"></div>
  <div>
    <img src="http://placehold.it/200" />
    <img src="http://placehold.it/200" />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


注意:像flex这样的其他方法也可以使用,但是这里会给你一个想法