HTML:无法使表格单元格中的 URL 符合我想要的方式

标签 html css firefox-addon-sdk

我试图在 Firefox Jetpack SDK 插件面板的表格单元格中显示 URL。我试图主要实现 2 种不同的布局,但都没有用。我在 SO 上使用了各种线程来尝试找到解决方案,但我想保持这个干净(没有 JS 技巧或外部库),不想指定确切的大小,这些线程的一半答案让我感到困惑或没有工作,因为我的情况略有不同。 CSS 本身也让我感到困惑,因为它非常不直观,所以不用说我的尝试可能几乎是有效的。 Jetpack 面板在大小调整方面似乎也表现得很奇怪,因此增加了复杂性。

面板内容

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th class="status">Status</th>
                <th class="message">Message</th>
                <th class="url">URL</th>
            </tr>
        </thead>
        <tbody id="entries">
        </tbody>
    </table>
</body>
</html>

添加一个 td 行

const table = document.getElementById("entries");
function entry(data) {
let tr = document.createElement("tr");
for (let i in data) {
    if (data.hasOwnProperty(i)) {
        let td = document.createElement("td");
        if (i == "url") {
            let a = document.createElement("a");
            a.href = data[i];
            a.textContent = data[i];
            a.addEventListener("click", function(event) {
                event.preventDefault();
                event.stopPropagation();
            });
            td.appendChild(a);
        } else {
            td.textContent = data[i];
        }
        td.setAttribute("class", i);
        tr.appendChild(td);
    }
}
table.appendChild(tr);
}

TL:DR 为状态和消息添加一个 td,并在最终的 td 中使用 anchor 标记来显示 url。

尝试的 CSS

table {
width: 100%;
max-width: 100%;
}
td.url a {
width: 100%;
max-width: 100%;
white-space: nowrap;
text-overflow: ellipsis;
}

期望的结果

我不想看到水平滚动条出现!面板本身应该是自动调整大小的(通过 Firefox),以适合用户设备的未知大小显示其中的表格。表格应填满面板的宽度,但不超过它并导致水平溢出。

url 应该显示在一行中,当它达到 td 的最大宽度时用​​省略号截断(这是隐含的,来自表格的最大大小减去最小宽度以显示其他 tds)。

我不想指定确切的宽度或任何类似的东西,以保留响应式设计和用户偏好,如默认字体和字体大小。

TL:DR 我想要实现的是一个具有自然大小的表格,2 列自然显示,1 列在超过隐式剩余大小时被截断。

当前结果:http://i.imgur.com/xnephA0.png (表的最大尺寸发生了什么变化?)

之前的一次尝试,当我希望 url 以正好 2 行的纯文本显示时,用省略号截断:http://i.imgur.com/tUOTrKu.png (没错,它什么都没做)

感谢任何能帮助我找到解决方案的人,我个人开始沉浸在对我来说不再有意义的 CSS 语句中。

现在是 2015 年了,CSS 仍然非常笨拙,如果不花几个小时处理通常看起来不相关的事情,比如位置声明,我们仍然无法实现这样的基本废话?如果基本演示仍然像在 Haskell 中编写延迟加载数据库一样复杂,那么 CSS 如何实现其作为演示技术的目的? http://img.pandawhale.com/post-18529-Peter-Griffin-blinds-CSS-gif-I-lEO1.gif

最佳答案

根据更多修补的结果和其他帖子的信息花絮,text-overflow 仅在以下情况下有效

  • 元素有display: block
  • 元素的宽度为 px

所以除非我发疯/迟钝,否则这几乎意味着没有使用 CSS 使页面既可呈现又可响应的事情,因为显然有一半的基本呈现技巧仍然需要废话,比如设置宽度以 px 为单位,撤消响应能力。

有人和我一起签署这份请愿书,让起草 CSS 规范的人被解雇吗?第 3 次迭代,它仍然完全无法兑现它的 promise 。

关于HTML:无法使表格单元格中的 URL 符合我想要的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30144992/

相关文章:

javascript - HTML5 Canvas | .moveTo() 和 .fillI() 的细微差别

css - 截断 div 中的文本

javascript - 如何监听 HTML 页面中按下提交按钮的声音

javascript - 包含并使用来自 JSON 响应的 PHP 代码

html - 等高列的边距不起作用

css - 如何在 Windows 8 Store 应用程序的不同设备上使用屏幕区域的所有高度设置自动列数?

javascript - 悬停时更改 div 标签内文本的字体颜色

javascript - 在 Firefox 插件中捕获复制事件

javascript - 使用 SDK 在 Firefox 插件中查询添加书签的提要

javascript - Jquery Slide 面板 - 加载下一个面板时关闭原始面板