如何在网格布局中将引导下拉列表和其他内容对齐?

abi*_*964 6 css css3 twitter-bootstrap angularjs

我正在尝试创建过滤器,其布局应与下面的屏幕截图相匹配. 在此输入图像描述

到目前为止,我能够实现类似下面给出的截图. 在此输入图像描述

问题是我无法在空间方面均匀分配项目,如第1个屏幕截图所示.也是使用表创建这种布局的好方法吗?

请帮助我理解和创建这个布局.

以下是我的代码

<div class="panel panel-default">
    <div class="panel-heading" style="padding: 20px;">
        <div class="panel-title pull-left text-label-emphasize" style="margin-top: -8px;"><b>Filter</b></div>
        <div class="panel-title pull-right text-label" style="margin-top: -8px;">Reset</div>
    </div>
    <div class="panel-body">
        <table width="100%">
            <tr>
                <td colspan="1">
                    <div class="dropdown" ng-show="!loadinga" style="text-align: left;" width="100%">
                        <button class="btn btn-custom dropdown-toggle" type="button" style="text-align: left; background-color: #fff; border-color: #C3C3C3; " ng-disabled="loading">
                            {{dropDownTitle}}
                            <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu scroll-menu nav" role="menu">
                            <li ng-repeat="agent in agentListData">
                                <a role="menuitem" href="#" ng-click="">{{agent}}</a>
                            </li>
                        </ul>
                    </div>
                </td>
                <td align="left" colspan="1">
                    <div class="dropdown" ng-show="!loadinga" style="text-align: left;" width="100%">
                        <button class="btn btn-custom dropdown-toggle" type="button" style="text-align: left; background-color: #fff; border-color: #C3C3C3; " ng-disabled="loading">
                            {{dropDownAllTaskStatusTitle}}
                            <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu scroll-menu nav" role="menu">
                            <li ng-repeat="task in taskStatusListData">
                                <a role="menuitem" href="#" ng-click="">{{task.title}}</a>
                            </li>
                        </ul>
                    </div>
                </td>
                <td align="left" colspan="1">
                    <div ng-show="!loadinga">
                        <input id="autoComplete" type="text" ng-model="selected" typeahead="task.name for task in taskList | filter:$viewValue | limitTo:20" class="form-control" typeahead-on-select='' placeholder="Search Tasks here" typeahead-focus-first="true" ng-disabled="loading" />
                    </div>
                </td>
                <td colspan="1" style="padding-right: 200px"></td>
            </tr>
            <tr ng-show="isAdvancedFilterAvailable" style="padding:2px">
                <td colspan="4">
                    <hr/>
                </td>
            </tr>
            <tr ng-show="isAdvancedFilterAvailable" class="fadein fadeout">
                <td align="left" colspan="1">
                    <div style="margin-right: 5px;margin-left: 5px; margin-top:2px" ng-show="!loadinga">
                        <input type="checkbox" ng-model="isChecked" ng-click="checkboxClicked(isChecked)" ng-disabled="loading" />
                        <label for="excludeMinutesStep">Exclude tasks running &lt; </label>
                        <input id="excludeMinutesStep" type="number" min="0" max="10" ng-disabled="!isChecked || loading" ng-model="excludeValue" ng-change="" size="2" style="width:40px" /> <b>minutes</b>
                    </div>
                </td>
                <td align="left" colspan="1">
                    <div style="margin-right: 5px; margin-top:2px" ng-show="!loadinga">
                        <input id="datalabels" type="checkbox" ng-model="isLabelShowChecked" ng-click="" ng-disabled="loading" />
                        <label for="datalabels">Show Labels</label>
                    </div>
                </td>
                <td colspan="1" style="padding-right: 200px"></td>
                <td colspan="1" style="padding-right: 200px"></td>
            </tr>
            <tr style="padding:2px">
                <td colspan="4">
                    <hr/>
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <a ng-show="!isAdvancedFilterAvailable" ng-click="isAdvancedFilterAvailable=true">Show Advanced Filters</a>
                    <a ng-show="isAdvancedFilterAvailable" ng-click="isAdvancedFilterAvailable=false">Hide Advanced Filters</a>
                </td>
            </tr>
        </table>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.text-label {
    color: #aab2bd;
    font: 8pt;
}
.text-label-emphasize {
    color: #575F64;
}
Run Code Online (Sandbox Code Playgroud)

Zac*_*son 2

Bootstrap 有大量的时间致力于将所有“风格元素”制作成类,并使用它们。尽管很直率,但在遇到困难时阅读文档确实可以帮助您。

除此之外,让我们陷入你的问题。table如果您确实需要在面板中使用,那么最佳实践是将其放置在下方或之前.panel-body,但由于我们希望为所有未来的项目维护响应式移动优先技术,因此请尽量避免使用它,除非您确实想要一个数据表。嵌套列是维护这一点的最佳实践。

如何嵌套任何列的示例是使用.row后跟您希望嵌套的列大小,如下例。

<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

这将创建良好的断点,并允许您为应用程序维护良好的 UI/UX。

重要的是要了解 bootstrap 并不能提供所有答案,但它是一个很好的扩展样式框架,因此我们进行了覆盖 css 的更改。

我添加了一些 css 覆盖以使边框成为方形,并尝试维护您的 angular.js (您可能需要查看)

已完成的代码,并在bootply上托管预览

对于样式复选框,请查看Awesome Bootstrap Checkboxes,他们的完整文档可以在他们的 github 上找到。

编辑(全宽下拉菜单)——要使下拉菜单与按钮的宽度匹配,请将以下 css 代码添加到您的覆盖样式表中。

.open>.dropdown-menu {
      min-width: 100%;
}
Run Code Online (Sandbox Code Playgroud)

希望我有帮助;)