问题描述

今天在使用Bootstrap给页面添加底部导航栏时,需要在手机下也使导航栏呈现水平排列的效果。最后在网上查找解决方法是,看到这样一个解决方法:

.nav-justified > li {
display: table-cell;
width: 1%;
}

而且确实奏效了,但是代码很有意思,我便另外试了试,如果width为百分数,发现随着width值的改变,。这也算前端的一个hack方法,也有许多人已经研究过,推荐一个别人写的网站,可以调试这个方法。http://codepen.io/ld0rman/pen/FCiLh

问题理解

在这里,我在查看了网上的资料后也讲讲我自己的理解。

实际上,有关表的宽度计算是件挺麻烦的事情,这也不是我们的重点,之间先来看看我把table-cell的width设为1%,为什么会出现这样的结果好了。

这里我们利用”display: table-cell”使得每个li元素变成了一个表格中的单元格,注意到我们并没有这个单元格添加外层的表格布局,但是实际上浏览器会默认添加一个隐藏的table,它默认的布局是”table-layout: auto”,所以这个表格的大小是根据单元格的大小确定的。有前端基础的都知道,表格中每个单元格是有自己的最小宽度的,这样我们设置了”width: 1%”实际上是设置table的大小为单元格的最小宽度的100倍。但是很明显,表格是不可能这么宽的,这里可以理解为让表格的宽度尽可能的宽。而且根据单元格必须填满表格一行的特性,就自然呈现出这样的效果。

为了验证,你把width设置为10%时,你会发现表格变小了,也是因为表格大小变成了最小单元格的宽度的10倍,这样也可以解释了

另外如果我把width设置为100%时,会发现第一个单元格非常大然而,其他的也还是存在,但是都被压缩了。我是这样理解的——首先第一个单元格的宽度为100%的话,那么就是表格的大小了,但是这一行还有其他的单元格存在,它是不可能达到100%的,所以第一个尽可能宽,而其他的也能有最小宽度。

问题总结

根据width的值不同,表格会有不同的表现,可以分成两种情况。这里我们需要先计算width =(表格的最大宽度)×width的结果

  • 计算出的width小于单元格最小宽度

这种情况下就是以单元格的最小宽度为width,再计算表格应有的大小,再分别各个单元格

  • 计算出的width大于单元格最小宽度

这种情况下就从第一个单元格起尽量满足它的宽度,但是要保证后面的单元至少有它的最小宽度

原文出处:https://liaolushen.github.io/2015/09/12/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3-1-table-cell-width/

table-cell width:1% 深入理解的更多相关文章

  1. IText 生成pdf,处理table cell列跨页缺失的问题

    /**     * 创建(table)PDF,处理cell 跨页处理     * @param savePath(需要保存的pdf路径)     * @param pmbs (数据库查询的数据)    ...

  2. 关于表格元素的使用,table、<width>、<heigh>、<border>、<tr>、<th>、<td>、<align>、<colspan>、<rowspan>

    <html>    <head>        <meta charset="UTF-8">        <title>个人简历& ...

  3. table边框和td的width失效

    table元素有一个属性border,可设置table的边框.这个边框对内部元素有效. 不同于style:border,这个仅仅是外边框. table{ width:60%; border-colla ...

  4. 从零开始学ios开发(十五):Navigation Controllers and Table Views(中)

    这篇内容我们继续上一篇的例子接着做下去,为其再添加3个table view的例子,有了之前的基础,学习下面的例子会变得很简单,很多东西都是举一反三,稍稍有些不同的内容,好了,闲话少说,开始这次的学习. ...

  5. Table View Programming Guide for iOS---(六)---A Closer Look at Table View Cells

    A Closer Look at Table View Cells A table view uses cell objects to draw its visible rows and then c ...

  6. JS-scrollTop、scrollHeight、clientTop、clientHeight、offsetTop、offsetHeight的理解

    scrollTop, 可写(这些属性中唯一一个可写的元素) Element.scrollTop 属性可以获取或设置一个元素的内容垂直滚动的像素数. 一个元素的 scrollTop 值是这个元素的顶部到 ...

  7. 网页制作中在头部固定悬浮table表头(thead)的方法

    这两天接了一个需求,页面是这样的 然后需求是页面中的这个表格当页面向上滚动,且表格的表头到达窗口上方时,表头悬浮在页面的上方,表格正常滚动,这样表格内的数据可以随时看到表头内容. 一开始我认为这是极简 ...

  8. 9月6日表格标签(table、行、列、表头)(补)

    一.<table> <table>代表表格标签.   <table></table> 1.width  表示表格宽度,宽度表达方式有像素和百分比两种.网 ...

  9. html中表table行循环滚动例子

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><meta h ...

随机推荐

  1. Canvas 画占比图 解决canvas锯齿 bug

    案例如图: <section class=" chartWrap"> <div class="chartContent"> <di ...

  2. EF 简单介绍<一>

    一:EF概述 Entity Framework(EF)是一个开源的“对象/关系映射(ORM:Object Relational Mapping)”框架,使应用程序可以使用一种“纯”的对象模型来访问关系 ...

  3. [八省联考2018]林克卡特树lct

    题解: zhcs的那个题基本上就是抄这个题的,不过背包的分数变成了70分.. 不过得分开来写..因为两个数组不能同时满足 背包的话就是 $f[i][j][0/1]$表示考虑i子树,取j条链,能不能向上 ...

  4. UOJ#347. 【WC2018】通道 边分治 虚树

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ347.html 题意 有三棵树,边有边权. 对于所有点对 (x,y) 求在三棵树上 x 到 y 的距离之和 ...

  5. JavaEE 之 SpringBoot

    1.Springboot a.定义:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程 b.约定目录结构:(Maven的资源文件目 ...

  6. Linux 定时任务的配置

    通常我们会需要定时启动一些shell脚本,类似Windows中的Task Scheduler, 下面是在AWS EMR Cluster 主几点上配置的步骤: 1. 先创建一个shell脚本,将需要执行 ...

  7. SpringBoot2 task scheduler 定时任务调度器四种方式

    github:https://github.com/chenyingjun/springboot2-task 使用@EnableScheduling方式 @Component @Configurabl ...

  8. git彻底删除某个文件的全部log历史记录

    git filter-branch -f --tree-filter 'rm -rf vendor/gems' HEAD git push origin --force如果log历史较多 可能需要一点 ...

  9. XVII Open Cup named after E.V. Pankratiev. GP of Moscow Workshops

    A. Centroid Tree 枚举至多两个重心作为根,检查对于每个点是否都满足$2size[x]\leq size[father[x]]$即可. #include<stdio.h> # ...

  10. Linux 内核参数 arp_ignore & arp_announce 详解

    arp_ignore定义了对目标地址为本机IP的ARP询问的不同应答模式. arp_announce对网络接口(网卡)上发出的ARP请求包中的源IP地址作出相应的限制:主机会根据这个参数值的不同选择使 ...