angularjs - 如何在网格布局中将 bootstrap 下拉菜单和其他菜单对齐?

标签 angularjs twitter-bootstrap css

我正在尝试创建过滤器,其布局应与下面的屏幕截图相匹配。 enter image description here

到目前为止,我能够实现类似于下面给出的屏幕截图的效果。 enter image description here

问题是我无法按空间均匀分布元素,如第一个屏幕截图所示。使用表格创建这种布局也是一种好方法吗?

请帮助我理解和创建此布局。

下面是我的代码

<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>

CSS

.text-label {
    color: #aab2bd;
    font: 8pt;
}
.text-label-emphasize {
    color: #575F64;
}

最佳答案

Bootstrap 有很多周的时间致力于将所有“样式元素”放入类中,并使用它们。尽管直言不讳,请阅读 documentation当卡住时,它确实可以帮助您。

除此之外,让我们陷入您的问题。 如果您真的需要在面板中使用 table,那么 best practice是将它放在 .panel-body 的下方或之前,但由于我们希望为我们所有 future 的元素保持响应式移动优先技术,因此请尽量避免使用它,除非您真的想要一个数据表。 Nested columns是保持这一点的最佳实践。

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

<div class="row">
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4"></div>
</div>

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

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

I added a few css overrides to make the borders square, and tried to maintain your angular.js (you may need to review that)

bootply 上托管的带有预览的完整代码

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

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

.open>.dropdown-menu {
      min-width: 100%;
}

希望我能帮上忙 ;)

关于angularjs - 如何在网格布局中将 bootstrap 下拉菜单和其他菜单对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480324/

相关文章:

javascript - 单击插入另一个模板

javascript - 如何在 Angularjs 中打印表单内的数组值?

css - 如何解决 Bootstrap 类名冲突

javascript - Angular Bootstrap 模态计数器

javascript - 通过 Javascript 创建的列表项未正确对齐

javascript - 使用javascript删除div后无法读取空错误的属性 'appendChild'

css - 防止在 IE 和 Android 的初始页面加载时显示 iFrame

angularjs - $locationChangeStart、$routeChangeStart 和 $stateChangeStart 之间的区别

javascript - Twitter Bootstrap 示例在 IE8 中不工作

jquery - bootstrap 切换和 if 语句