首先,我对 CSS 完全无能。但是,我一直在观看/阅读教程,但仍然无法弄清楚为什么我的页面会呈现这种方式。我希望这对这里的人来说是快速而明显的。
我希望页面的形状如下:
筛选条件:CPM 所有者:[DROPDOWN] CP:[DROPDOWN] 系列:[DROPDOWN]
[批准选定] [拒绝选定]
[这里有一张桌子,但与问题无关]
但是,当我加载页面时,它看起来像这样:
编辑:我将 flexbox 容器更改为 span 而不是 div,现在页面看起来像:
有各种我不想要的换行符,并且在下拉列表之前放置了奇怪的间距。以下是构成页面这一部分的 CSS、JS 和 HTML 的相关部分:
HTML:
<div id="filters">
<span id="filter_dropdowns_label" class="dropdowns_bar_label">
Filter by:
</span>
<ul id="filter_dropdowns" class="dropdowns_bar">
<!-- populated by changerequest.js -->
</ul>
</div>
<ul id="buttons_top" class="buttons">
<li><input type="button" value="Approve Selected" id="approve_button_top" class="approve_button" onclick="approveSelected()"/></li>
<li><input type="button" value="Reject Selected" id="reject_button_top" class="reject_button" onclick="rejectSelected()"/></li>
</ul>
CSS:
.dropdowns_bar {
margin: 0;
padding: 0;
list-style-type: none;
}
.dropdowns_bar li {
display: inline;
}
.buttons li {
display: inline;
}
.hidden_column {
display: none;
}
#filters {
display: inline;
}
和 JS:
// Create a dropdown
function createDropdown(id, label, data, defaultValue) {
// initialize elements
listEl = document.createElement('li');
flexboxContainerEl = document.createElement('div');
spanEl = document.createElement('span');
// setup dropdown
$(flexboxContainerEl).flexbox(data);
$(flexboxContainerEl).attr('id', id);
if (defaultValue != null) {
$(flexboxContainerEl).setValue(defaultValue);
}
// setup label
$(spanEl).html(label + ':');
// add to document
$(listEl).append(spanEl);
$(listEl).append(flexboxContainerEl);
$('#filter_dropdowns').append(listEl);
}
// Creates and populates the filter dropdowns, selects default if present
function createDropdowns() {
createDropdown('cpm_dropdown', 'CPM Owner', cpmList, cpmDefault);
createDropdown('cp_dropdown', 'CP', cpList, cpDefault);
createDropdown('series_dropdown', 'Series', seriesList, seriesDefault);
}
对不起,我意识到这个问题非常“帮助,我的代码坏了,修复它”。我只是花了很多时间查看 CSS 教程和文档,但找不到任何与我的问题相似的东西。
编辑:根据这个答案修改了我的 CSS:https ://stackoverflow.com/a/17417451/1532702
页面现在看起来像:
我试过交换.append
s,但没有任何影响标签上的顺序。显然,它们应该位于每个相应输入的前面。
编辑:我通过将该部分重写为表格而不是列表来解决我的问题。让一切变得简单多了。