我有一个KPI仪表板,里面有很多小图表。一种类型的图表实际上是HTML表格。它显示在DIV中。
<div style="width:400px; height:250px;overflow:hidden">
<table>
<tr><th>Col1</th><th>Col2</th></tr>
<tr><td>Row1</td><td>Row2</td></tr>
</table>
<div>
目前,我隐藏了溢出。我想让桌子“适合”div。
如果table
太大而无法显示,我怎样才能使DIV
适合/缩小到{{1}}?理想情况下,文本也会缩小。
答案 0 :(得分:4)
此CSS将使您的表格与您正在使用的容器具有相同的高度/宽度。仅添加边框/背景以显示发生的情况。
缩小文本将更具挑战性。没有使用javascript来实现这一点可能没办法。即使你这样做,由于字体太小,内容可能最终变得不可读。
我设法提出一些javascript / jquery代码来更改字体大小,直到表格适合div或字体大小达到5px(=不可读)。粗略的,你需要自己编辑一些(因为如果不将选择器更改为id,它将适用于所有表)
table{
width: 100%;
background-color: red;
}
th, td{
width: 50%;
border: blue solid 1px;
}
Jquery / Javascript
$(document).ready(function () {
var HeightDiv = $("div").height();
var HeightTable = $("table").height();
if (HeightTable > HeightDiv) {
var FontSizeTable = parseInt($("table").css("font-size"), 10);
while (HeightTable > HeightDiv && FontSizeTable > 5) {
FontSizeTable--;
$("table").css("font-size", FontSizeTable);
HeightTable = $("table").height();
}
}
});
答案 1 :(得分:0)
这是我目前使用的,它嵌入在项目中(例如参见类),但可以随意使用它作为灵感。
scaleTable = function (markupId) {
//This hacky stuff is used because the table is invisible in IE.
function realWidth(obj){
var clone = obj.clone();
clone.css("visibility","hidden");
$('body').append(clone);
var width = clone.outerWidth();
clone.remove();
return width;
}
function realHeight(obj){
var clone = obj.clone();
clone.css("visibility","hidden");
$('body').append(clone);
var height = clone.outerHeight();
clone.remove();
return height;
}
var table = $("#"+markupId+" table:first-of-type");
var tablecontainer = $("#"+markupId).parents( ".scalabletablecontainer" );
var scalex = tablecontainer.innerWidth() / realWidth(table);
var scaley = tablecontainer.innerHeight() / realHeight(table);
var scale = Math.min(scalex, scaley);
if (scale<1.0) {
var fontsize = 12.0 * scale;
var padding = 5.0 * scale;
$("#"+markupId+" table tbody").css("font-size", fontsize + "px");
$("#"+markupId+" table tbody TD").css("padding",padding + "px");
$("#"+markupId+" table TH").css("padding",padding + "px");
}
};
答案 2 :(得分:0)
获取表和div的尺寸,如之前的注释所示。然后应用CSS
transfrom:scale(factorX, factorY)
到桌子上。