比float更好的页面布局inline-block
一:页面布局的发展过程
- 桌格设计
- 表格+css
- div+css的浮动布局
- div+css的内联块布局
二:流行多年的浮动布局的优劣
优势:
div+css浮动布局的优势,主要是相对于table布局来说的。主要表现为下面几个方面:
1,更快的网页呈现速度;
2,更佳的后台编程支持度;
3。更好的搜索引擎友好性。
4。更优的网页改动重构性。
劣势:
1。一行盒子的高度有出入可能导致将下一行的盒子“卡住 ”。像俄罗斯方块放错地方的时候被“卡住”后以下空出一块空间。
2。浮动元素导致其上级父盒子的“高度塌陷”,也就不能如正常文档结构所体现的那样自然包裹其下级元素。
3,浮动元素还导致其后的兄弟元素也跟着浮动元素到同一行了。
4,其它若干在IE6/7下让微软蒙羞的著名bug也多与浮动有关。
优势:
div+css浮动布局的优势,主要是相对于table布局来说的。主要表现为下面几个方面:
1,更快的网页呈现速度;
2,更佳的后台编程支持度;
3。更好的搜索引擎友好性。
4。更优的网页改动重构性。
劣势:
1。一行盒子的高度有出入可能导致将下一行的盒子“卡住 ”。像俄罗斯方块放错地方的时候被“卡住”后以下空出一块空间。
2。浮动元素导致其上级父盒子的“高度塌陷”,也就不能如正常文档结构所体现的那样自然包裹其下级元素。
3,浮动元素还导致其后的兄弟元素也跟着浮动元素到同一行了。
4,其它若干在IE6/7下让微软蒙羞的著名bug也多与浮动有关。
三:inline-block布局:一种更优的布局技术
1)inline-block布局:一种全新的web页面布局解决方式,其既能够充分发挥div+css浮动布局的长处。又可克服浮动盒子所带来的缺点
- 什么是inline模式的盒子:一个盒子在一行内连续排列出来,后一个紧跟着前一个在一行中。直到碰到行尾后再自然换到下一行继续如此显示。
行内盒子不能设置宽度和高度,也没有上下margin和padding(但左右margin和padding存在)。
常见行内元素:span,a。img,b。i,u
- 什么是block模式的盒子:一个盒子自身就占领其所在父盒子中的一整行,而无论其本身的宽度多少,也不会“折行”。常见块元素:div。hr,p,ul/li。ol/li。dl/dt/dd。h1-h6。pre,form
2)那么inline-block的表现又是什么呢?
- 盒子跟外界(其兄弟元素)表现为内联(inline)模式,即能够跟其兄弟元素自然并排放置(类似img标签) ,但盒子作为总体,又表现为块模式,即该盒子本身不能“自己主动换行显示”,能够设定宽高。
- 实际上,从总体表现上来说。inline-block盒子的表现很类似“img”元素,即多个img能够在一行中出现。但一个img本身是不会“中间折行”的(对照:span和a标签碰到了行尾都会自己主动折行)。仅仅只是img作为图片显示元素。其“内部”不能放其它内容了,而inline-block盒子却是我们最常规的可随意放置其它内容的一个“容器”。
3)各种布局本质上解决什么问题?
所谓布局。无非事实上就是解决元素放置到页面上的排布方式。从“平面区块”的角度来说,无论用哪种布局方式。无非就是解决2个问题:
- 元素怎么从上到下排列出来:
块元素(如div)自然上下,br元素明白换到下一行。tr元素表示表格的行。可见上下排列关系中。无需额外css技术。
- 元素怎么从左到右排列出来:
- 行内元素自然从左到右
- table中的td
- 盒子的浮动
- inline-block!
- 布局原理:层层 划分“当前区域”
- 划分方法有两个:
- 上下划分
- 左右划分
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE2MjQyMDIxMjA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
inline-block布局的特点和做法很easy:
- 依据我们前面的inline-block的表现的介绍,和布局的本质思想,我们实现inline-block模式的布局很easy:
- 实现横向排列,这是inline-block盒子的自然表现(就如图片自然横向排列一样。这也是“行内块”盒子所体现的“inline”的地方。我们所要做的无非就是设定合适的宽度。
- 实现纵向排列:跟inline-block无关,也跟float无关,而是直接利用我们前面说的div和br,轻松搞定!
四:inline-block布局要解决的问题(实现兼容性的做法)
- 我们非常快发现,假设页面不考虑象素级的精确设计,使用inline-block技术进行布局非常easy理解和easy实现。差点儿跟我们在地面上贴瓷砖一样。但我们也发现,被inline-block化之后的盒子。盒子跟盒子之间有几个像素的间隙。就像图片自然并排放置一起时的样子,这显然对现代像素级的设计需求来说是不够的!
那怎么解决:
- 首先,间隙是什么?——空格!
- 其次,怎么去除间隙?——父盒子设置font-size:0px;
- 最后,没有最后了。这就差点儿好了——对现代浏览器来说
- 这里将block元素转为inline-block元素有两个easy解决的兼容性问题:
- 将块盒子转换为行内块盒子:xxx{display:inline-block;}
xxx { *display:inline;}/*再写回“inline”模式。这是对IE6/IE7兼容,仅仅有这样IE6/7才表现为行内块盒子*/
- font-size:0不能消除苹果浏览器safari的盒子间隙,需再设置letter-spacing为负值,比方:letter-spacing:-4px;
此负值在font-size为0的情况下,对其它浏览器无影响。
此负值大小受字体名称和字体大小影响,需依据场合略调整。比方常见的12px的Arial字体是-4px,12px的宋体是-8px
- 将inline元素转为inline-block元素也行,但兼容性更差些,不推荐
五:inline-block布局应用(案例演示)
最后的总结代码例如以下:
/*应用到inline-block布局的外面盒子*/
.out{
font-size:0px;/*inline-block布局的核心代码1*/
letter-spacing:-8px;/*兼容代码1:兼容苹果浏览器。负值对其它浏览器无效*/
text-align:center;/*inline-block布局的辅助代码1,能够left。center。right*/
}
/*应用到inline-block布局的里面盒子*/
.in{
display:inline-block;/*inline-block布局的核心代码2*/
vertical-align:top;/*inline-block布局的辅助代码2。能够top, middle, bottom*/
}
.in{
*display:inline;/*兼容代码2:兼容 IE6/7*/
}
參考资料:
传智播客罗弟华老师研究 inline-block布局技术 视频下载
链接:http://pan.baidu.com/s/1sjrqYfj 提取password:gh3r
CSS float浮动的深入研究、具体解释及拓展(一)
http://www.zhangxinxu.com/wordpress/?
p=583
CSS float浮动的深入研究、具体解释及拓展(二)
http://www.zhangxinxu.com/wordpress/?p=594
拜拜了,浮动布局-基于display:inline-block的列表布局
http://www.zhangxinxu.com/wordpress/?p=1194
inline-block 前世今生
http://ued.taobao.org/blog/2012/08/inline-block/
CSS浮动布局inline-block
http://www.keakon.net/2010/11/13/CSS%E6%B5%AE%E5%8A%A8%E5%B8%83%E5%B1%80%E4%B8%8Einline-block
比float更好的页面布局inline-block的更多相关文章
- 页面布局排版-block,inline,float,relative,absolute等
1.span和div的区别 div是块元素(block),span是行内元素(inline): span什么事也不会做,它存在的目的在与为开发者给它所围绕的元素指定样式.div类似,不过它引入了行分隔 ...
- CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset
一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...
- HTML5+CSS3学习笔记(二) 页面布局:HTML5新元素及其特性
HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 本次学习HTML5的新标签元素有: <head ...
- CSS3与页面布局学习总结(四)——页面布局大全BFC、定位、浮动、7种垂直居中方法
目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...
- CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset
一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...
- CSS3与页面布局学习总结——Box Model、边距折叠、内联与块标签、CSSReset
目录 一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三. ...
- CSS3 & 页面布局
相关链接 视频链接: CSS3 & 页面布局 CSS3与页面布局学习总结(一) CSS3与页面布局学习总结(二) CSS3与页面布局学习总结(三) CSS3与页面布局学习总结(四) CSS3与 ...
- HTML5/CSS3 第三章页面布局
页面布局 1 页面组成 2 布局相关的标签 <div></div> 定义文档中的分区或节 <span></span> 这是一个行内元素,没有任何意义 & ...
- CSS入门指南-4:页面布局
这是<CSS设计指南>的读书笔记,用于加深学习效果. display 属性 display是 CSS 中最重要的用于控制布局的属性.每个元素都有一个默认的 display 值.对于大多数元 ...
随机推荐
- android 编译调用C代码
博客地址:www.zalezone.cn 前言 需求来源 这几天帮别人做一个简单的androidclient,也没什么功能,主要就是调用C代码来对手机的Wifi网络进行设置.于是也就引出了技术难点所在 ...
- 央视公然诽谤Linux操作系统,谁报告?
考虑下面的观点: 这是今年5月111日上午11点04分央视播出的一则新闻,题为"工信部希望用户使用国产操作系统(替代XP). 该新闻报道,概念混乱,违背事实,误导公众,谁来举报?现举一例加以 ...
- SQL Server提高并发查询效率
同事写了个程序用创建多个线程使用ado同时对同个数据库进行相同的查询,涉及2张数据表的联查.当线程数非常多的情况下,读取数据的效率就会变得很慢,例如50个线程同时查询大概3000条数据,查询完成后通过 ...
- HDU 4951 Multiplication table 阅读题
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4951 题意:给一个P进制的乘法表.行和列分别代表0~p-1,第i行第j*2+1和第j*2+2列代表的是第i ...
- Mongodb入门——安装与配置
作者:zhanhailiang 日期:2014-11-07 1. 安装mongodb: [root@~/wade/nodejs/nodeclub]# yum search mongodb [root@ ...
- oralce 获取自定义主键编码,有并发问题
F_GET_SEQUENCE,功能函数,当多个服务同时调用此函数,可能产生并发问题,待解决,加主键. CREATE OR REPLACE Function f_Get_Sequence(As_Comp ...
- Maven使用-创建一个Web项目
准备工作: 1,eclipse安装maven插件,本地下载maven工具 2,eclipse配置maven 创建项目步骤: 1,eclipse-创建项目-Maven Project 2,下一步, 3, ...
- 长方柱类【C++ 类定义】
Description 编写基于对象的程序,求长方柱(Bulk)的体积.数据成员包括长(length).宽(width).高(heigth).体积,要求用成员函数实现下面的功能: (1)由键盘输入长方 ...
- Linux下/proc目录简介(转)
1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...
- POJ3623:Best Cow Line, Gold(后缀数组)
Description FJ is about to take his N (1 ≤ N ≤ 30,000) cows to the annual"Farmer of the Year&qu ...