【问题标题】:Fix div position in a form修复表单中的 div 位置
【发布时间】:2017-09-11 10:19:02
【问题描述】:

我在两个不同的页面上使用相同的表单。在第一个上,每个 div 都整齐地放在所需的位置。在第二页上,有一个仅在更改后出现的选择(jquery 触发器),这导致其下方的 div 首先出现在右侧,但在触发器之后它向左移动。我希望包含单选按钮的 div 始终位于左侧,就像它在第一页上一样。我要修复的部分是#center-add-new-event-form .container-field input[type=radio]

这是css。

#center-add-new-event-form,
#center-add-new-event-form * {
    box-sizing: border-box;
}

#center-add-new-event-form {
    padding: 20px 10px 0px;
}

#center-add-new-event-form .container-field {
    width: 50%;
    float: left;
    padding: 0 10px;
    margin-bottom: 20px;    
    vertical-align: top;    
}

#center-add-new-event-form .container-field label {
    display: block;
    font-weight: 600;
    margin-bottom: 5px;
}

#center-add-new-event-form .container-field input[type=text],
    #center-add-new-event-form .container-field select {
    height: 34px;
    border: 1px solid #ddd;
    padding: 0 7px;
    display: block;    
    width: 100%;
}

#center-add-new-event-form .container-field input[type=radio]
{
    height: 34px;
    border: 1px solid #ddd;
    padding: 0 7px;
    display: block;    
    width: 100%;
}


#center-add-new-event-form .center-error-message {
    font-size: 0.9em;
    color: darkred;
    display: block;
    margin-left: 1px;
}

.center-event-actions {
    border-top: 1px solid #ddd;
    padding: 20px 20px 15px;
    text-align: right;

}

.clearfix:before,.clearfix:after {  
    display: table;  
    content: " ";
}

.clearfix:after {
    clear: both;
}


@media screen and (max-width: 767px) {
    #center-add-new-event-form .container-field {
        float: none;
        width: 100%;
    }   
}
<form id="center-add-new-event-form" class="clearfix">



    <div class="container-field" style="width: 100%">
            <label></label>
            <div id="center-request-details">

            </div>
        </div>

        <div class="container-field">
            <label for="teaching-requests"></label>
            <select id="input-teaching-requests" name="teaching-requests" class="create-request-event ui-widget-content ui-corner-all">
                <option value=""></option>

                        <option value=""></option>
            </select>
            <span class="center-error-message"></span>
        </div>
        <div class="container-field">
            <label for="request-date"></label>
            <input type="text" name='request-date' class="create-request-event event-datepicker ui-widget-content ui-corner-all">
            <span class="center-error-message"></span>
            </div>
        </div>


    <div class="container-field">
        <label for="teaching-start-time"></label>
        <input type="text" name="teaching-start-time" class="create-request-event event-timepicker text ui-widget-content ui-corner-all">
        <span class="center-error-message"></span>
    </div>

    <span class="clearfix"></span>

    <div class="container-field">
        <label for="teaching-end-time"></label>
        <input type="text" name="teaching-end-time" class="create-request-event event-timepicker text ui-widget-content ui-corner-all">
        <span class="center-error-message"></span>
    </div>

    <div class="container-field">
        <label for="teaching-teacher"></label>
        <div id='contanier-teacher-selection'>

        </div>
        <span class="center-error-message"></span>

    </div>           
    <div class="container-field pull-left" align="left">
        <label for="recursive-events" align="left">
        <input type="radio" align="left" name="recursive" value="daily"/>Daily
        <input type="radio" align="left" name="recursive" value="weekly"/>Weekly
        <input type="radio" align="left" name="recursive" value="monthly"/>Monthly
        </label>
    </div>
    <span class="center-error-message"></span>        
</form>

<div class="center-event-actions">
    <button id="cancel-add-new-event" class='button' data-izimodal-close="" data-izimodal-transitionout="bounceOutDown"></button>
    <button id="add-new-event" class='button button-primary'></button>
</div>

Before After

【问题讨论】:

  • 如果你不使用 display:none 隐藏元素(这是 jQuery 的 .hide 所做的),而是使用 visibility:hidden 来隐藏元素,这可能最容易解决。
  • .hide 没用,有条件。在更改触发器之前显示 php echo。您打开窗口,选择不存在,但回显行,您更改其他 div 的输入,然后选择 div 出现在屏幕上,这反过来又移动了左侧的无线电 div。
  • 那么请出示实际的相关代码。
  • 我在OP中添加了之前和之后的截图。

标签: javascript jquery html css forms


【解决方案1】:

看起来是由 container-field

<span class="clearfix"></span>

在带有单选按钮的元素之前

【讨论】:

    【解决方案2】:

    这可能有效:

    #center-add-new-event-form .container-field input[type=radio]:before
    {
        height: 34px;
        border: 1px solid #ddd;
        padding: 0 7px;
        display: block;    
        width: 100%;
    }
    
    #center-add-new-event-form .container-field input[type=radio]:after
    {
        height: 34px;
        border: 1px solid #ddd;
        padding: 0 7px;
        display: block;    
        width: 100%;
        float: right;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 2020-10-25
      • 2018-12-31
      • 1970-01-01
      • 2013-05-12
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多