`
yiminghe
  • 浏览: 1453151 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

固定宽度表格布局设定宽度问题

阅读更多

近日做  GridLite 轻量级的Ext Grid 的列宽拖放调整时遇到了一点小问题,记一下呵

 

首先看下面一段代码:

 

动态生成一个 table-layout:fixed 的表格 (某一列内容很多不换行,并设置该列宽度),然后待table渲染后再设置整个 table的css宽度。

 

table.gridLite {
	border-collapse:collapse;
	table-layout:fixed;
	text-align:left;
	border:1px solid #D0D0D0;
	font-size:12px;
}


.x-grid3-hd-inner {
       overflow:hidden;
       white-space:nowrap;

}
.x-grid3-cell {
       overflow:hidden;
}


var table2 = Ext.DomHelper.append(document.body, {
    tag: 'table',
    cls: 'gridLite',
    cellspacing: "0",
    cellpadding: "0",
    //放其后设置 固定表格布局在 firefox 和 chrome 中失效 !!!
    //style:'width:800px',
    cn: [{
        tag: 'caption',
        html: 'test'
    },
    {
        tag: 'colgroup',
        cn: [{
            tag: 'col'
        },
        {
            tag: 'col'
        }]
    },
    {
        tag: 'thead',
        cn: [{
            tag: 'tr',
            cn: [{
                tag: 'th',
                cls: 'x-grid3-cell',
                style: 'width:21px;',
                cn: [{
                    tag: 'div',
                    cls: "x-grid3-hd-inner",
                    html: ' '
                }]
            },
            {
                tag: 'th',
                cls: 'x-grid3-cell',
                style: 'width:50px;',
                cn: [{
                    tag: 'div',
                    cls: 'x-grid3-hd-inner',
                    html: '我们 我们 我们 我们 我们 我们 我们 我们 我们 我们 我们 我们 我们 我们'
                }]
            },
            {
                tag: 'th',
                cls: 'x-grid3-cell',
                cn: [{
                    tag: 'div',
                    cls: 'x-grid3-hd-inner',
                    html: '1'
                }]
            }]
        }]
    }]
},
true);
//放其后设置 固定表格布局在 firefox 和 chrome 中失效 !!!ie opera 可行
table2.setStyle({
    width: '800px'
});
 

 

效果:

 

IE.Opera :

 

Firefox .Chrome

 

若把css width 创建表格时初始设置,则各个浏览器没有区别。

 

确实这方面标准没有规定,其实 firefox ,chrome 在初始没有设定css width时,即使设了 固定宽度表格布局,它们仍是按照自由宽度表格布局来处理的,后期设了表格宽度也没用了。(关于 自由宽度表格布局列宽度计算,有兴趣可以查阅 css权威指南 表的自动布局,很复杂 )


所以最好 table-layout:fixed 和 width 成对出现,可以设个默认值 100%  (后期可以再更改):

 

table.gridLite {
	border-collapse:collapse;
	table-layout:fixed;
	text-align:left;
	border:1px solid #D0D0D0;
	font-size:12px;
	/*fixed width 成对设置,否则部分浏览器会当做 自动宽度布局模型*/
	width:100%;
}
 

 

以下引自:css权威指南


注意:使用固定宽度布局模型时,没有必要非得为表指定一个显示宽度,不过如果指定一个宽度确实有帮助。不过这不是必要的。 用户代理也可以使用自动宽度布局模型对width值为auto的表完成布局。

 

  • 大小: 9.1 KB
  • 大小: 2.4 KB
分享到:
评论
1 楼 edokeh 2009-08-24  
设置成100%也有问题
据我测试,在IE6/7下,为table设置width为100%,如果外部的div又设置了overflow:auto,那么表格会认为这个100%的宽度是包含滚动条的div宽度,但在IE8和FF下则是不含滚动条的宽度

相关推荐

    javaweb表格宽度

    在HTML中,表格的宽度可以通过设置`width`属性来调整,但这种方法并不灵活,因为浏览器可能会忽略这些设定。在CSS中,我们可以使用更精细的方式来控制表格及其单元格的宽度。 1. **CSS样式控制** - `table-width`:...

    表格布局 html

    表格布局允许开发者通过`<table>`标签创建表格,用于展示数据或组织页面内容。下面我们将详细讲解表格布局的各个组成部分及使用方法。 1. **表格的基本结构**: 表格由三个主要的元素构成:`<table>`、`<tr>`...

    html表格布局实例.pdf

    虽然现在W3C推荐使用CSS进行布局,但表格布局仍有其独特的应用场合。 在HTML中,`<table>`元素用于创建表格,它包含了表格的结构,如表头`<thead>`、主体`<tbody>`、表脚`<tfoot>`等。在实例中,我们看到一个简单的...

    android Activity布局初步(一)- 线性、表格布局

    本篇文章将聚焦于Activity中的布局管理,特别是线性布局(LinearLayout)和表格布局(TableLayout),这两种布局方式是Android开发中最基础且常用的布局类型。 线性布局(LinearLayout): 线性布局按照垂直或水平...

    easyui datagrid标题列宽度自适应

    EasyUI是一个基于jQuery的轻量级框架,提供了一系列易于使用的UI组件,包括datagrid,用于创建表格布局。 在EasyUI的datagrid中,列的宽度通常可以设置为固定、自动或自适应。固定宽度是直接设定每列的具体像素值;...

    使用表格布局网页.ppt

    网页布局是构建网页的重要环节,而表格布局是其中一种常用的方法。在HTML中,表格用于组织数据,由单元格(标签)组成,横向的单元格形成行(标签),垂直的单元格形成列。表格的宽度可以通过和标签的属性来设置。未...

    网页设计表格布局的使用PPT学习教案.pptx

    网页设计中的表格布局是构建网页结构的重要方法,尤其在传统网页设计中,表格布局被广泛应用于页面元素的定位和组织。以下将详细讲解表格布局的相关知识点。 首先,表格是网页中用于展示信息的一种常见方式,它能够...

    又一个很好的js控制实现动态拖动表格宽度的例子

    3. **计算和限制**:在拖动过程中,需要实时计算新的宽度,同时可能还需要设定最小和最大宽度的限制,以保持表格的可用性和美观性。 4. **鼠标样式反馈**:CSS可以修改鼠标光标,如设置为`col-resize`,当鼠标位于...

    使用表格布局网页PPT学习教案.pptx

    网页设计中的表格布局是构建网页结构的重要手段,尤其在Dreamweaver中,表格不仅用于数据展示,更是网页定位和排版的关键。本教程主要讲解如何使用表格进行网页设计。 首先,我们了解表格的创建。在网页设计中,...

    用Dreamweaver8表格进行页面布局.doc

    5. 在“插入表格”对话框中,设定表格的行数(3行)、列数(1列)、宽度(700像素)、单位(像素)、边框(0)、单元格边距(0)和单元格间距(0),然后点击“确定”。 创建的表格将占用整个页面宽度,没有可见的...

    vue表格实现固定表头首列

    同样,需要处理好宽度和定位问题,确保与原表格同步。 5. **响应式设计**:对于移动端,我们需要考虑不同屏幕尺寸下的适配。Vue的`v-bind`和计算属性可以帮助我们动态调整表格样式。例如,可以使用`v-bind:style`...

    利用表格布局网页PPT学习教案.pptx

    总结来说,本教程旨在帮助学习者掌握网页设计中表格布局的基本技巧,从创建基础表格到进行复杂编辑,再到实际应用,逐步提升网页设计的专业能力。通过实践和练习,可以更好地理解和运用表格布局,从而提升网页的视觉...

    DW网页布局表格、布局表格.ppt

    网页设计中,Dreamweaver(DW)是一个不可或缺的工具,尤其在处理表格布局方面。本资料主要探讨了如何使用DW进行网页表格的创建、选择、属性设置以及各种高级操作,以实现精确的网页布局。 首先,表格是网页布局的...

    Dreamweaver CS6中使用表格进行网页布局.pdf

    在这里,设定表格的行数为2,列数为1,表格宽度为780像素,并设置边框、单元格边距和单元格间距的值。点击“确定”后,表格就会被插入到网页中。 然后,我们需要拆分表格单元格以实现所需的布局。选择第二行的...

    改变el-table宽度

    如果存在这些宽度数据,那么它会更新`tableColumn`对象,确保表格加载时显示用户之前设定的宽度。 此外,`surverWidth`方法是处理列宽变化的关键。当用户拖动列宽时,`@header-dragend`事件会被触发,传递一个新的...

    HTML表格固定第一行第一列效果

    为了解决这个问题,我们可以实现一个类似于Excel的功能,即在滚动时固定表格的第一行和第一列,使得在浏览大量数据时,关键的列名和行标识始终可见。以下将详细介绍如何实现这个效果。 首先,我们需要创建一个基本...

    固定 table宽度 table-layout: fixed

    首先,让我们了解一下表格布局的默认模式——"auto"布局。在默认情况下,表格的列宽会根据其内容的宽度自动调整,如果单元格中的文本较长,会导致表格自动扩展,甚至可能导致文本换行,进而影响整个表格的样式和布局...

Global site tag (gtag.js) - Google Analytics