display:table-cell属性指让标签元素以表格单元格的形式呈现,类似于td标签。目前IE8+以及其他现代浏览器都是支持此属性
的,但是IE6/7只能对你说sorry了,这一事实也是大大制约了display:table-cell属性在实际项目中的应用。
我们都知道,单元格有一些比较特别的属性,例如元素的垂直居中对齐,关联伸缩等,所以display:table-cell还是有不少潜在的使用价
值的,虽说IE6/7不支持此属性,但是幸运的是,IE6/7一些乱糟糟的属性与渲染,我们可以其他方法实现同样或是类似的效果。
与其他一些display属性类似,table-cell同样会被其他一些CSS属性破坏,例如float,
position:absolute,所以,在使用display:table-cell与float:left或是position:absolute
属性尽量不用同用。设置了display:table-cell的元素对宽度高度敏感,对margin值无反应,响应padding属性,基本上就是活脱
脱的一个td标签元素了。
二、display:table-cell与大小不固定元素的垂直居中
使用display:table-cell让大小不固定元素垂直居中已经是很老的方法了,关于此应用,我已经在“大小不固定的图片、多行文字的水平垂直居中”这篇文章中有过介绍。
方便阅读,这里再次展示下代码:
/*这里的大小是根据高宽上限128像素图片设置的*/
div{display:table-cellwidth:1emheight:1emborder:1px solid #beceebfont-size:144pxtext-align:centervertical-align:middle}
div img{vertical-align:middle}
在 Java 中,可以使用 TableCellRenderer 和 TableCellEditor 接口来设置表格单元格的格式。其中,TableCellRenderer 用于设置单元格在表格中的展示效果,而 TableCellEditor 则用于设置单元格在被编辑时的效果。这两个接口都有一个方法 getTableCellRendererComponent() 或 getTableCellEditorComponent(),可以通过这些方法设置单元格的样式、字体、颜色等属性。
具体实现时,需要自定义一个类,实现 TableCellRenderer 或 TableCellEditor 接口,并重写其方法来进行单元格样式的设置。然后将该类对象赋给要设置的表格单元格即可。例如:
class MyCellRenderer
implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DefaultTableCellRenderer.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column)// 调用默认渲染器
c.setBackground(Color.YELLOW)// 设置背景色为黄色
return c
}
}
// 使用 MyCellRenderer 对象对表格第二列进行单元格样式设置
table.getColumnModel().getColumn(1).setCellRenderer(new MyCellRenderer())
上述代码中,自定义了一个 MyCellRenderer 类,并实现了 TableCellRenderer 接口中的 getTableCellRendererComponent() 方法来设置单元格样式。最后,使用 table.getColumnModel().getColumn(columnIndex).setCellRenderer(renderer) 来将 MyCellRenderer 对象应用到相应的表格列中。
ie7和ie6都不能识别 display: table-cell(但是支持display: block等css1的属性!)ie8以及以后版本可以识别!
ie7和ie6能识别vertical-align:middle
如果盒模型中间只有几段文字的话,设置line-height就可以实现居中显示了!
如果要实现盒模型中的div居中,可以参考以下代码:
div#wrap {
display: table
border: 1px solid #FF0099
background-color: #FFCCFF
width: 760px
height: 400px
*position: relative
overflow: hidden
}
div#subwrap {
vertical-align: middle
display: table-cell
*position: absolute
*top: 50%
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)