javascript - 如何创建即使缩放也能正确调整大小的 1px 边框折叠表格网格

标签 javascript jquery html css datagrid

好的。经过大量的努力和烦恼,我创建了一个相当称职的 1px 边框 15*15 网格设计,可以在不同的缩放级别正确显示。然而,试图补偿最小宽度和最小高度是一件痛苦的事情。这是必要的,因为网格在 150+% 缩放时会变得不成比例,因为尚不存在内联 block 值的 `min-width: intrinsic' 之类的 css 属性。虽然我可以简单地指定一个我认为不会被越过的默认最小宽度,但这似乎有点 hack。我想正确地做到这一点。

由于网格是我可以而且实际上可能应该使用表格的罕见情况之一,所以我想使用表格。 (耶。)如果我能让我的表格正常工作,我将简单地将最小宽度设置为我的首选表格宽度(和高度),工作完成。

但是,我发现表格在不同的缩放级别下非常古怪且难以预测。 Firefox 并不总是平等地显示表格单元格的宽度,甚至会导致某些单元格的边框宽度出现奇怪的不规则变化。如果我不在 td 本身上定义宽度,Chrome 似乎不会保持表格正方形(这首先违背了使用表格的目的)。显示:表具有相同的悲伤行为。而且我什至不想知道 IE 到底是做什么的。我错过了什么吗?

如果有人帮助我创建一个真正的表格,它看起来像我的以下代码,但在不同的 devicePixelRatios(以及不同的浏览器)下正确地保持其形状和网格边界,我将不胜感激。

<style>
.squares { border-left: 1px #bcafaf solid; border-top: 1px #bcafaf solid; float: left;
  background: black; }
</style>

<div id = "board" style = "display: inline-block; border: 1px brown solid;"></div>
<script src = 'jquery-1.11.1.min.js'></script>
<script>
$(function() {
for (var i=0;i<225;i++) { 
$('#board').append( $('<div/>',{ 'class':"squares", width:'2.0rem', height : '2.0rem', id : 'x'+(i+1) }) ); 
    if (i%15===0) { $('.squares').eq(i).css({ clear: 'left' }); } 
}
});
// code for adding border-right and border-bottom for necessary squares, etc
</script>

非常感谢

注意:此时我使用绝对 rem 值来避免缩放时浏览器压缩问题(以及如果浏览器窗口太小)——尽管现在我可能不得不使用无处不在。

最佳答案

在过去的 2 年里,我一直“很高兴”不得不处理表格样式……(太棒了!我知道)。我已经学会了一些驯服它们的方法,一旦您掌握了这些简单的小技巧,您就会像 1999 年那样设计 table 。

HTML

从您的 html 开始,看起来像这样:

<table class="flipscroll">
<thead>
    <tr>
        <th class="width10">10% Width</th>            
        <th class="width20">20% Width</th>
        <th class="width10">10% Width</th>
        <th class="width10">10% Width</th>
        <th class="width50">50% Width</th>
    </tr>
</thead>            

<tbody>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
        <td>5</td>
    </tr>
</tbody>

</table>

CSS

首先将您的默认样式设置为“border-box(仅此一项就解决了很多问题,我建议您在以后构建的每个网站上都使用它!)”

/* Default Styles */
*, *:after, *:before { margin:0; padding:0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;  }

然后应用表格样式:

/* Table styles */
table { table-layout: fixed; width: 100%; border-collapse: collapse !important; border-spacing: 0 !important; } 
table * { border: 1px solid black; }

不要在 tds 上设置宽度,而是更上一层楼(字面意思)并在您的 thead 中设置宽度:

    /* Table widths (controled only by <th>) */
    .width10 { width: 10%; }
    .width20 { width: 20%; }
    .width50 { width: 50%; }

现在,这将使您的表格处于良好状态。如果您想超越它,您将必须添加一些媒体查询并将您的表格转换为“ block ”和“内联 block ”元素。

这是所有已完成的示例:http://jsfiddle.net/oneeezy/MJ2nt/5/

关于javascript - 如何创建即使缩放也能正确调整大小的 1px 边框折叠表格网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25397328/

相关文章:

javascript - 使用 indexedDB 存储一个 three.js 网格对象

javascript - javascript中的Angular2递归模板

javascript - AJAX 单页爬取

javascript - 包含来自 Codeigniter 的 PHP 数据的数据表子行

jquery - 如何做bootstrap醉酒工具提示多行

html - 如何摆脱 <hr> 垂直间距?

php - 每个值都显示在新行 HTML 表中

javascript - Rails & JQuery : Invalid association. 确保 Accepts_nested_attributes_for 用于

javascript - 如何实际计算奇偶校验是偶数还是奇数?

javascript - 启用单词建议时,Android 上的 Firefox 不会触发关键事件