【发布时间】:2019-03-08 10:00:12
【问题描述】:
今天使用 CSS appeared on Smashing Magazine 在容器中均匀分布元素的方法。
我最近不得不使用 Javascript 来为可变宽度的元素实现相同的效果,但是 SM 上提出的方法让我想知道是否可以不使用 Javascript。
有this question,其中gargantaun 说:
恕我直言,您可能不想听到这个,但设计可能存在缺陷。众所周知,使用 CSS 在布局中均匀分布项目是一件很痛苦的事情,因此设计师应该避免这样做。
但我不能告诉设计师改变他的设计,我不同意CSS的缺点应该限制设计师。
无论如何,这是我在 HTML 中的内容(翻译和简化):
<div id="menu">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/news">News</a></li>
<li><a href="/theme">Theme</a></li>
<li><a href="/activities">Activities</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div>
在 CSS 中(删除和简化不相关的属性):
#menu li { float: left; margin-right: 20px; }
#menu a { display: block; padding: 0 1em; }
在 Javascript 中:
function justifyMenu() {
var menuItems = $$("#menu li");
var menuWidth = $("menu").getWidth();
var totalWidth = 0;
menuItems.each(function(e) {
totalWidth += e.getWidth();
});
var margin = (menuWidth - 4 - totalWidth) / (menuItems.length - 1);
margin = parseInt(margin);
menuItems.each(function(e) {
e.setStyle({ marginRight: margin + 'px' });
});
menuItems[menuItems.length - 1].setStyle({ marginRight: '0' });
}
这是一个按比例缩小的屏幕截图(查看菜单如何与标题图像对齐):
知道如何在没有 Javascript 的情况下实现这一目标吗?
【问题讨论】:
标签: javascript css