问题描述

今天在使用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. jmeter的基本功能使用详解

    jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简 单.因为jmeter是java开发的,所以运行的时候必须先要 ...

  2. 查看linux空间大小

    du -sh : 查看当前目录总共占的容量.而不单独列出各子项占用的容量 du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量.

  3. Maya cmds pymel scriptJob() 和 undoInfo() 在回调中撤销(undo)

    Maya cmds pymel scriptJob() 和 undoInfo() 在回调中撤销(undo) def myEventFun(): cmds.undoInfo(stateWithoutFl ...

  4. POJ 1201 Intervals (经典) (差分约束)

    <题目链接> 题目大意:给你$n$段区间,$a_i,b_i,c_i$ 表示在 $[a_i,b_i]$ 区间内至少要选择$c_i$个点.现在问你在满足这n个条件的情况下,最少要选多少个点? ...

  5. port bridge enable命令导致的环路

    1.故障描述 前几天机房一台连接数据中心与核心交换的交换机宕机(硬件故障),机房有备用的设备,随即更换(配置也是早就配置好了的),但是下午就出现数据中心网络丢包问题,表现为存在mac漂移 2.拓扑 核 ...

  6. 潭州课堂25班:Ph201805201 tornado 项目 第七课 界面美化和静态文件处理(课堂笔记)

    tornado 相关说明 使用  Bootstrap 前端框架 可以在 bootCDN 这里找 jquery ,poppe.js 文件 美化项目 twittel 的开源项目, 在 static 目录下 ...

  7. 清除电脑缓存的bat文件

    电脑在使用了之后,会产生垃圾缓存,若不及时清理会降低电脑的运行速度. 1.步骤: 2.新建一个记事本文件,命名“系统清理”;(或其他名字) 3.原封不动复制下面的文字到该记事本中 @echo off ...

  8. GitHub的实现是否是基于此语言的支持网络编程性呢?

    我觉好像是的,我之前很奇怪为什么那样就可以引用了,后来发现GitHub中的java  JavaScript  phton等语言都支持网络编程.

  9. 2018-2019-1 20189210 《Linux内核原理与分析》第三周作业

    一.学习笔记 计算机的"三大法宝" 1.程序存储计算机. 2.函数调用对栈.堆栈的作用是:记录函数调用框架.传递函数参数.保存返回值地址.提供函数内部局部变量的存储空间.函数调用堆 ...

  10. File类中的一些属性 添加删除文件夹

    import java.io.File; import java.io.IOException; public class FileD { public static void main(String ...