【问题标题】:Div with dynamic content inside table cell and table row height alignment表格单元格内具有动态内容和表格行高对齐的 Div
【发布时间】:2012-08-17 19:40:51
【问题描述】:

我需要将 div 放在表格单元格中。 div 和单元格高度应始终根据 div 的动态内容对齐。

如果在其中插入文本,则 div 高度会增加,但其他 div 的高度保持不变:

示例: http://jsfiddle.net/BWYQg/

作为解决方法,我使用 js 扩展剩余 div 的高度(增加 div min-height),但是 如果插入后内容被清除,我会看到下图:

示例: http://jsfiddle.net/BWYQg/1/

那么问题是如何让 td 和 div 的高度始终根据 div 的内容对齐?

统一更新: div 的内容应该是可编辑的 (<div contenteditable>),所以输入文本后 div 的高度会增加。

【问题讨论】:

标签: jquery html css


【解决方案1】:

查看等高函数。 http://www.catswhocode.com/blog/8-awesome-jquery-tips-and-tricks希望对您有所帮助。

function equalHeight(group) {
    tallest = 0;
    group.each(function() {
        thisHeight = $(this).height();
        if(thisHeight > tallest) {
            tallest = thisHeight;
        }
    });
    group.height(tallest);
}



$(document).ready(function() {
    equalHeight($(".recent-article"));
    equalHeight($(".footer-col"));
});

【讨论】:

  • 这个在内容清除后不会降低高度。如果我在 div 中输入内容也不起作用。
  • 您从表格单元格中删除了 div,我知道它有效。但我正在寻找 div 位于单元格内的解决方案
  • @amit +1 感谢您的努力和解决方案。我认为这个mod会起作用。 jsfiddle.net/BWYQg/48
  • @Stano 你又做了一次 :) 它在 Chrome 中效果很好,但在 FF 中却很奇怪。每次我键入时,Div 边框都会复制(而不是扩展)。
  • Firefox 将可编辑区域中的换行符转换为<br/> 标签,Chrome 创建新的空<div>。这就是算法工作错误的原因。它需要更具体的 css 和 jquery 选择器。这是更新的小提琴:jsfiddle.net/BWYQg/54
【解决方案2】:

我可能会推荐使用 jQuery 等高类型的插件,比如这个:

您只需将相同的类添加到每个 DIV 并在调用插件时引用它。

http://www.cssnewbie.com/download/jquery.equalheights.js

所以你需要从上面的页面下载等高的 JS 文件,并在你调用 jQuery 之后将它包含在你的网页中。

然后你像这样调用脚本:

$(document).ready(function() {

    $('.myDiv').equalHeights();

});

【讨论】:

  • 据我所知,所有的 div 都应该在同一个容器中。它不适合我的情况。
  • @user947668 - DIV 不必在同一个容器中。它们只需要具有相同的类名。
  • @user947668 - 我已经链接到一个不同的插件来完成这项工作并且不依赖于容器 DIV,因为你正确地指出了另一个插件。这个新的只要求所有的 DIV 具有相同的类名。
  • @user947668 - 我已经通过在 DIV 上放置背景颜色并在中间 DIV 中放置更多文本来更新您的小提琴。我想你会看到这表明它有效,除非我看到东西!jsfiddle.net/BWYQg/36
  • 如果您尝试在其中一个单元格中输入内容,您会看到 div 滚动条出现并且 div 不会改变其自身的高度。
【解决方案3】:

您始终可以从具有内容的元素中获取 .height() 并将其设置为动态的其他元素。例如:

var $tdContentHeight = $('tr td .has-content').height();
$('tr').find('td .has-no-content').each(function() { $(this).height($tdContentHeight)})

您还可以比较高度并始终选择最高高度并将它们分配给 tr 中的所有其他元素。

再次更新小提琴。在这里查看:

http://jsfiddle.net/BWYQg/31/

【讨论】:

  • 例如,谢谢。但任务有点复杂。 Div 是可编辑的,应根据键入的内容调整大小。我试图在每个 keyup 事件 jsfiddle.net/BWYQg/17 之后指定 div 的高度,但没有任何反应。
  • 这一项仅适用于一个单元格。如果我尝试编辑多个单元格 div 与父表重叠。
猜你喜欢
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2012-06-14
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 2013-02-08
相关资源
最近更新 更多