• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > 关于CSS中的display:table-cell使用技巧的几种应用

关于CSS中的display:table-cell使用技巧的几种应用

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含display:table-cell,CSS等相关知识,佚名 希望在学习及工作中可以帮助到您
一、display:table-cell属性简述

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-cell; width:1em; height:1em; border:1px solid #beceeb; font-size:144px; text-align:center; vertical-align:middle;} div img{vertical-align:middle;}[code] <p>结果如下图:
<img title="table-cell和文字大小实现的图片垂直居中显示" height="158" alt="table-cell和文字大小实现的图片垂直居中显示" width="632" src="http://files.jb51.net/file_images/article/201212/2012120716364114.jpg" /></p> <p>这里有个demo地址,里面有display:table-cell实现大小不固定图片垂直居中的效果展示,您可以狠狠地点击<a class="a_link" target="_blank" _blank="" href="http://www.jb51.net/css/67404.html">这里</a>。</p> <strong>二、display:table-cell与两栏自适应布局</strong> <p>就在前不久,看facebook好友动态列表页面前端代码的时候才发现原来display:table-cell可以用在两栏的自适应布局上。
<img class="alignnone" title="facebook的table-cell自适应方法 张鑫旭-鑫空间-鑫生活" height="316" alt="facebook的table-cell自适应方法 张鑫旭-鑫空间-鑫生活" width="591" src="http://files.jb51.net/file_images/article/201212/2012120716364115.png" /></p> <p>虽然IE6/7不认识display:table-cell,但是亏了其一向自以为是的渲染与解析,我们可以很幸运的使用其他属性实现几乎一致的效果。
<img class="alignnone" title="display:table-cell下的两栏自适应效果截图 张鑫旭-鑫空间-鑫生活" height="256" alt="display:table-cell下的两栏自适应效果截图 张鑫旭-鑫空间-鑫生活" width="487" src="http://files.jb51.net/file_images/article/201212/2012120716364116.png" /></p> <p>您可以狠狠地点击这里:<a class="a_link" target="_blank" href="http://www.jb51.net/css/67405.html">display:table-cell下两栏自适应布局demo</a></p> <p><strong>代码展示:</strong>
本例中,左侧为头像,右侧内容自适应。其中头像部分使用了float属性,左浮动,IE8+以及Firefox、Chrome、Opera等现代浏览器右侧使用了display:table-cell属性,结果就自适应了,很简单的代码,很神奇的效果。
<img class="alignnone" title="display:table-cell自适应布局代码展示 张鑫旭-鑫空间-鑫生活" height="362" alt="display:table-cell自适应布局代码展示 张鑫旭-鑫空间-鑫生活" width="585" src="http://files.jb51.net/file_images/article/201212/2012120716364117.png" /></p> <p>OK,对于不认识display:table-cell属性的IE6/7呢?哦呵呵,很简单,使用display:inline-block属性代替display:table-cell就完全ok的啦!</p> <p>原因在于:IE6/7下block属性的元素对inline-block属性是有反应,但是却不是纯洁的反应,而是怪蜀黍看到粉嫩小萝莉的一点邪念,就是让元素有个怪异的haslayout属性。//zxx:大家似乎都喜欢用haslayout解析一些老IE下的一些怪异现象,但我自己打心底里是不认同这个概念。</p> <p>如果IE6/7是很标准的纯洁的解释inline-block属性的话,是无法实现自适应的,右侧的文字描述内容会跑到头像的下面,哦呵呵~~有点负负得正,以毒攻毒的意味。代码如下:</p> [code]display:table-cell; *display:inline-block;

就万事大吉,收工回家了。

在本例demo中,右侧内容足够多,所以宽度完整的撑开了,如果内容有限,则宽度就是内容的宽度,此时想要让某个元素(例如关闭按钮)右侧定位就会有问题,解决方法就是定义一个非常宽的宽度,就像上面facebook截图中的CSS属性一样,所以,考虑到各种情况,更健壮耐用的CSS代码应如下:


三、display:table-cell下的等高布局

table表格中的单元格最大的特点之一就是同一行列表元素都等高。所以,很多时候,我们需要等高布局的时候,就可以借助display:table-cell属性。说到table-cell的布局,不得不说一下“匿名表格元素创建规则”:

CSS2.1表格模型中的元素,可能不会全部包含在除HTML之外的文档语言中。这时,那些“丢失”的元素会被模拟出来,从而使得表格模型能够正常工作。所有的表格元素将会自动在自身周围生成所需的匿名table对象,使其符合table/inline-table、table-row、table- cell的三层嵌套关系。

举个例子吧,如果我们为元素使用“display:table-cell;”属性,而不将其父容器设置为“display:table-row;”属性,浏览器会默认创建出一个表格行,就好像文档中真的存在一个被声明的表格行一样。如果您还不是很理解,可见参见支付宝UED的“基于display:table的CSS布局”一文。//zxx:支付宝今年的招牌广告做得很赞的~~

实现等高布局,毫无疑问,display:table-cell是首选,这就好比鼹鼠,生下来就是为了打洞用的。考虑到匿名创建表格元素的问题,所有table-cell元素外一定要留有一个用来包裹的标签。于是,我们有类似下面的CSS代码:


对于不支持display:table-cell属性的IE6/7浏览器,又当如何解决呢?
我们可以使用“补差等高法”,就是一个一个很大的margin-bottom负值配上一个同样大小的padding-bottom值,本例中为了实例需要,margin-bottom值就百来像素。显然,由于两者原理不同,难免需要用到hack,所以demo完整CSS代码如下:


.list_row{display:table-row; overflow:hidden;} .list_cell{display:table-cell; width:30%; margin-bottom:-100px; padding:1.6%; *padding-bottom:110px; background-color:#f5f5f5; *float:left;} .list_center{background-color:#f

您可能想查找下面的文章:

  • 实现div垂直居中的display:table-cell方法示例介绍
  • display:table-cell实现兼容性的两栏自适应布局实现代码
  • 关于CSS中的display:table-cell使用技巧的几种应用

相关文章

  • 2017-08-06css实现照片模糊效果类似毛玻璃效果
  • 2017-08-06使用CSS来扩展增强Input Range的示例
  • 2017-08-02chrome表单自动填充input黄色背景解决方案
  • 2017-08-06CSS代码使纯英文数字自动换行的简单实现
  • 2017-08-06引用css样式的书写格式详解
  • 2017-08-06CSS中的选择器种类总结及效率比较
  • 2017-08-06css gorush 状态栏不显示链接地址
  • 2017-08-06CSS实现类似条状统计表效果的方法
  • 2017-08-06IE对标准的支持不够好导致CSS渲染跟其它浏览器有什么不同
  • 2017-08-06让文字旋转270度的css样式

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 将ul+li 分两列显示(横向显示)的方法
    • CSS代码编写中视觉格式化模型的学习教程
    • CSS Cookbook创建水平导航菜单
    • 10 套华丽的CSS3 按钮小结
    • CSS3实现3D翻书效果
    • css3实现的多级渐变下拉菜单导航效果代码
    • CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
    • 控制span的width属性及display属性值的选择
    • CSS实现标题文字过长部分显示省略号的方法
    • ul和li实现分两列(多列)布局显示

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有