CSS开发技巧(二):表格合并边框后的单元格宽度计算
前言:
分离边框模型和合并边框模型是表格的两种模型,它通过以下属性确定:
border-collapse:separate(默认值) | collapse | inherit
当采用分离边框模型时,表格单元格宽度是相当清晰的,和盒模型几乎一致。
当使用合并边框模型时,则不太明了,可能产生以下疑问:
(1)两个单元格的边框合并成了一个边框,那么这个边框究竟算谁的呢?
(2)现在各单元格内容区宽度如何计算呢?
示例
<div id="container">
<table class="content-table">
<colgroup>
<col width='100'>
<col width='100'>
<col width='100'>
<col width='100'>
<col width='80'>
<col width='80'>
<col width='80'>
<col width='80'>
</colgroup>
<thead>
<tr>
<th>姓名</th>
<th>语文</th>
<th>数学</th>
<th>英语</th>
<th>物理</th>
<th>化学</th>
<th>生物</th>
<th>总分</th>
</tr>
</thead>
<tbody>
<tr>
<td>赵一</td>
<td>80</td>
<td>90</td>
<td>79</td>
<td>56</td>
<td>56</td>
<td>79</td>
<td>98</td>
</tr>
</tbody>
</table>
</div>
CSS:
#container{
height: 500px;
padding: 10px;
border: 1px solid green;
}
.content-table{
table-layout: fixed;
border-collapse: collapse;
}
.content-table td,.content-table th{
padding: 1px;
border: 1px solid blue;
}
分析
这里每列都被设置了宽度,由于table固定布局根据第一行宽度设置确定每列列宽,那么每一列的列宽将是确定的。现在的问题是,每列单元格的内容区宽度是多少?
事实上,每列内容区宽度分别为:97px,97px,97px,97px,77px,77px,77px,77px,这的确是些意料之外的数字。
第一,将以上数字各加2px的padding,再加上9个1px的边框,则得到表格总宽度721px。我们在chrome浏览器调试工具的Elements标签内,点击table元素,可以发现表格实际宽度的确为721px,如下所示:
第二:我们设置的表格宽度为100px+100px+100px+100px+80px+80px+80px+80px=720px,总宽度为720px与上面所述721px有1px的宽度差。在chrome中查看盒模型的宽度,可以看到,浏览器认为我们设置的宽度的确为720px,如下:
第三,两个宽度不一致的原因在于,720px是浏览器根据我们设置的各列宽度简单相加得到的理论宽度值。然而,浏览器渲染表格有一套略为复杂的机制,721px是实际渲染宽度值。这里来分析一下各列的实际渲染宽度值计算:
(1)每个边框宽度
1px,由于合并单元格,这将使得每个单元格左右边框实际都为单个边框的一半,即0.5px;左右边框宽度加起来为0.5px+0.5px=1px;
(2)每个单元格左右内边距1px,则每个单元格边框加上左右内边距为1px+1px*2=3px;
(3)每列宽度则为设置宽度减去3px,即97px,97px,97px,97px,77px,77px,77px,77px。
(4)表格实际宽度:由于第一列左边多出0.5px边框,最后一列右边多出0.5px边框,则合计将多出1px宽度,即721px。
CSS开发技巧(二):表格合并边框后的单元格宽度计算的更多相关文章
- SQL开发技巧(二)
本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...
- SQL开发技巧(二) 【转】感觉他写的很好
本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...
- 如何让elemengUI中的表格组件相同内容的单元格自动合并
1. 前言 这两天在工作中遇到这样一个需求:将某个Excel中的数据在页面上以表格形式展示出来,并且尽量保持数据层级与Excel中一致.在原始Excel文件中,对每一行相同的数据都进行了合并,使得数据 ...
- 关于html表格单元格宽度的计算规则
* { margin: 0; padding: 0 } body { background: #fafafa } ul,li { list-style: none } h1 { margin: 20p ...
- 请教 JTable 里的单元格如何使得双击进入单元格后,单元格的内容处于全选中状态
http://bbs.csdn.net/topics/390195204 ———————————————————————————————————————— java 达人, 最近在开发一个 java ...
- 使用js合并table中的单元格
用primefaces做的报表,领导要求合并相同内容的单元格,但是primefaces没有找到可以合并单元格的组件,想来想去,只有页面加载后用js合并了. http://blog.csdn.net/d ...
- colgroup中col定义表格单元格宽度
colgroup中可以使用col来定义表格单元格宽度,可以使用像素(数字),百分比,我们来具体看看有什么不同. 先看一个最基本的:用像素(数字)表示,因为table有个宽度,这里表示占比 <ht ...
- 提高你css技能的css开发技巧(转载)
一.resize实现图片对比 resize的语法如下: resize:none | both | horizontal | vertical 案例效果如下图 (鼠标移到左下角白色区域,往右侧拖动,实现 ...
- 用css样式,为表格加入边框
Table 表格在没有添加 css 样式之前,是没有边框的.这样不便于我们后期合并单元格知识点的讲解,所以在这一节中我们为表格添加一些样式,为它添加边框. 在右侧代码编辑器中添加如下代码: <s ...
随机推荐
- .Net微服务实践(四)[网关]:Ocelot限流熔断、缓存以及负载均衡
目录 限流 熔断 缓存 Header转化 HTTP方法转换 负载均衡 注入/重写中间件 后台管理 最后 在上篇.Net微服务实践(三)[网关]:Ocelot配置路由和请求聚合中我们介绍了Ocelot的 ...
- 标准与扩展ACL
标准与扩展ACL 案例1:配置标准ACL 案例2:配置扩展ACL 案例3:配置标准命名ACL 配置扩展命名ACL 1 案例1:配置标准ACL 1.1 问题 络调通后,保证网络是通畅的.同时也很可能出现 ...
- wireshark抓包实战(二),第一次抓包
1.选择网卡. 因为wireshark是基于网卡进行抓包的,所以这时候我们必须选取一个网卡进行抓包.选择网卡一般有三种方式 (1)第一种 当我们刚打开软件是会自动提醒您选择,例如: (2)第二种 这时 ...
- 多数据源系统接入mybatis-plus, 实现动态数据源、动态事务。
目录: 实现思想 导入依赖.配置说明 代码实现 问题总结 一.实现思想 接手一个旧系统,SpringBoot 使用的是纯粹的 mybatis ,既没有使用规范的代码生成器,也没有使用 JPA 或者 m ...
- Struts2-学习笔记系列(10)-自定义类型转换
注意name=user和对应action中的实例名称一致 这些代码是写在HTML文件中的 <s:form action="login"> <s:textfield ...
- Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 官方介绍 Allure Frame ...
- 搭建WEB、NFS共享、sersync实时同步以及全网定时备份服务流程
本次实验的主要目的: 1.搭建web服务,使用nfs服务共享的/data目录挂载到web站点目录上. 2.nfs服务器与backup服务器使用sersync实时同步/data目录中的文件. 3.bac ...
- docker-compose 基于Dockerfile 安装并启动redis容器的血案
前言 为了实现"一键部署"的目的,我采用Dockerfile 和 docker-compose来实现自己的目的.这个过程中,我怎么也无法启动自己的redis-server服务. 目 ...
- redis和memcache列出所有key
//redis $redis = new Redis(); $redis->connect("host", "port"); $redis->sel ...
- Spring Data REST不完全指南(二)
上一篇文章介绍了Spring Data REST的功能及特征,以及演示了如何在项目中引入Spring Data REST并简单地启动演示了Spring Data REST项目.在本文中,我们将深入了解 ...