【问题标题】:Make two elements with variable width content the same width使具有可变宽度内容的两个元素具有相同的宽度
【发布时间】:2014-08-14 22:40:52
【问题描述】:

我有一个包含两个子元素(上一个/下一个链接)的容器。上一个/下一个链接的标签长度​​不同,但我需要两个链接在页面上的宽度相同。每个链接都应该是最宽元素的宽度,但不能更宽。分页容器应根据需要扩展,但如果链接的文本不需要,则不应为页面的全宽。链接的文字可能会改变,所以我不能在它们上设置固定的宽度。

这是我目前所拥有的:http://jsbin.com/kukucusabecu/1/edit?html,css,output 我想要的是“下一个”链接与“上一个”链接的宽度相同,而不使用固定宽度,因为链接的文本是可变的。

我已经搜索过 SO,我发现所有相关的是:Make Two Floated CSS Elements the Same Height 但是,这是关于使两个元素具有相同的高度,而不是相同的宽度。我不想为此使用表格,因为这不是表格数据!

【问题讨论】:

  • 你不能只在你的css中设置一个宽度吗?
  • @Pete 我在我的问题中特别指出,我不能设置固定宽度,因为内容的宽度会是可变的。
  • 公平点,我的错误

标签: html css


【解决方案1】:

您总是可以使用 CSS 表格布局 - 每个链接都是一个宽度为 50% 的单元格:

Demo Fiddle

.pagination {
    background: #ccc;
    display: table;
    font-size: 20px;
}
.pagination a {
    display: table-cell;
    width:50%;
    padding: 0.5em;
}
.pagination .prev {
    background: #ddd;
}
.pagination .next {
    background: #ccc;
}

请注意,这与使用 HTML 表格不同,HTML 表格应该(语义上)用于数据内容——可以使用 CSS 表格来模拟列表布局

【讨论】:

  • 这似乎可以满足我的需求。我有点犹豫是否使用表格来布置非表格数据。 (是的,我知道它不是标记中的表格,但它仍然看起来像一个 hack。)如果这是唯一的方法,那么浏览器如何支持这种方法?
  • @PeterAndrews - 重要的是要注意 CSS display:table !== HTML <table>。 CSS 是为了产生一个表现性的布局,而 HTML 表示内容。 HTML 表格的呈现来自浏览器默认的 CSS,HTML table 是表格数据的语义符号。两者不应混淆。
  • 我确实说过“我知道它不是标记中的表格,但它仍然看起来像一个 hack。”我的反对意见是它是一个 hack,而不是我认为它是一个 HTML 表格。我很清楚其中的区别。
  • @PeterAndrews - 当然,绝对 - 抱歉,我试图澄清它不是黑客这一事实,我相信你很清楚其中的区别。
  • 我明白了。看起来这是要走的路,我已经接受了这个答案。感谢您的帮助!
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2011-10-02
相关资源
最近更新 更多