简明的例子讲解position:relative、float、overflow:hidden和inline-block
标签(空格分隔): css relative float
我们通过一个简单的实验来了解position:relative float overflow:hidden 和 inline-block。
下面以index.html和layout_new.css这两个文件为例来探讨。
index.html:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="assets/css/layout_new.css">
</head>
<body>
<div class = "a1">
a1
<div class = "b1">
b1
</div>
between b1 and b2
<div class = "b2">
b2
</div>
</div>
</body>
</html>
layout_new.css
.a1{
border:10px red solid;
width:90%;
overflow:hidden;
}
.b1, .b2{
display:inline-block;
border:5px blue solid;
width:40%;
}
.b1{
position:relative;
left:100px;
height:200px;
background-color:red;
}
.b2{
float:left;
height:300px;
}
- 在layout_new.css中,我们重点关注以下几点:
- .class为a1的div被设置为overflow:hidden
- .b1与.b2倍设置为inline-block
- .b1被设置为 position:relative和left:100px;
- .b2被设置为float:left
代码运行效果图如下:

我们一一分析:
首先,inline-block是一种布局方式。之后的inline对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。
然后,overflow:hidden在高/宽度确定时能把多余的部分裁剪掉,但是如果没指定高/宽度的话(比如此例中,.a1就没指定高度)那么就可以根据内部内容的高度来自行适应。所以尽管.b1和.b2的高度不同,但最终.a1为了包含所有元素,其高度便以.b2为准了。
- 如果一定要追究高度自适应的效果的原因,那就是因为overflow:hidden本质的功能还有一个是清除浮动元素(所以浮动的b2被考虑在高度计算范围内)。
overflow:hidden可防止float元素遮盖原本在那的元素而发生的重叠现象。
- 如果一定要追究高度自适应的效果的原因,那就是因为overflow:hidden本质的功能还有一个是清除浮动元素(所以浮动的b2被考虑在高度计算范围内)。
不加overflow:hidden的话效果如下:

(由于b2是float的所以脱离了文档流所以a1高度计算时没有考虑 b2的高度)
.b1中的position:relative就是让对象脱离原本的文档流。
在此例中,本来b1的位置是这样的
但加了position:relative和left:100px后,它就相对于原来按文档流顺序时本该出现的位置往右偏移了100px。
.b2的float:left就是在文档流安排完成后,浮动到对应位置。浮动的对象是在文档流安排完成后再计算位置的。float对象在没设置overflow:hidden的时候可能会与原本在那的元素重叠,但设置了overflow:hidden后可以避免这种重叠情况。
那么总的来说我们可以推测出浏览器在布局时的顺序时这样的:
- 先把float以外的内容按文档流一个个地显示到屏幕上(先不管relative的偏移,照常放置在那)
- 然后把各个relative按设定的偏移去让它偏移。
- 最后让float元素浮进去,把能挤开的元素都挤开
- 于是就有了最后的效果图。
简明的例子讲解position:relative、float、overflow:hidden和inline-block的更多相关文章
- position,display,float,overflow,margin,padding之间的相互影响
1.元素分为块级元素和行内元素, 块级元素可以设置宽高,会自动换行,并且会发生相邻margin的合并问题.行内元素设置宽和高无效,以水平方向排列,(行内元素,绝对定位,浮动元素不会发生外边距合并)并且 ...
- 对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个CSS属性,对于这两个属性的使用上面可能大多数人存在一些模糊与不 ...
- 装载:对CSS中的Position、Float属性的一些深入探讨
对CSS中的Position.Float属性的一些深入探讨 对CSS中的Position.Float属性的一些深入探讨 对于Position.Float我们在平时使用上可以说是使用频率非常高的两个 ...
- 使用position:relative制作下边框下的小三角
在制作tab选项卡的时候,有时会有下边框,且下边框下另一个头向下的小三角,这全然能够用css来实现,而不必使用背景图片. 由于使用背景图片时会有一个问题,选项卡内容字数不同.导致使用背景图片时无法控制 ...
- 解决IE6,IE7下子元素使用position:relative、父元素使用overflow:auto后,子元素不随着滚动条滚动的问题
解决IE6,IE7下子元素使用position:relative.父元素使用overflow:auto后,子元素不随着滚动条滚动的问题 在IE6,IE7下,子元素使用position:relati ...
- 内层元素设置position:relative后父元素overflow:hidden overflow:scroll失效 解决方法
内层元素设置position:relative后父元素overflow:hidden overflow:scroll 都失效 解决方法:在position:relative的外层父容器加positio ...
- CSS布局 ——从display,position, float属性谈起
页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了解的话,很容易出现一些莫名其妙的效果,痛定思痛读了<CSS Master ...
- 谈谈CSS的布局,display、position、float
前言 前端一直是我的一个很大的缺憾,这段时间痛顶思痛,决定好好的把前台的东西加强,这不,在学习了一段时间js之后,在做一些小练习,却发现最基本的一些css知识却还不了解,所以便有了这篇博文. 块级元素 ...
- CSS布局 ——从display,position, float属性谈起(转)
CSS布局 ——从display,position, float属性谈起 页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了 ...
随机推荐
- 枚举与剪枝_观察算式(比标准答案还要牛B)
观察算式 观察以下的算式: △△△ * △△ = △△△△ 某3位数乘以2位数,结果为4位数 要求:在9个△所代表的数字中.1~9的数字恰好每一个出现1次. 暴力破解代码: package lianx ...
- 自学JavaScript的几个例子
学习了广泛使用的浏览器脚本JavaScript和HTML的DOM模型(也是用JavaScript实现),下面给出两个自己学习时的例子,具体JavaScript语法请参考W3C相关网页(http://w ...
- ASP.NET LINQ SQL执行超时的问题
最近在写一个航材取价的程序.由于执行的语句复杂,数据量比较大,容易造成超时. 看提示应该是执行SQL的时候超时,我在程序中用的linq. 实际把SQL语句单独执行的时候观察也要40秒左右. 查资料得知 ...
- MSSQL数库备份与还原脚本(多个库时很方便)
每次通过 Management Studio 的界面操作备份或还原数据库,对于单个数据库还好,要是一次要做多个.那就还是用脚本快些,下面有两段脚本分享一下. ===================== ...
- leetcode Container With Most Water python
class Solution(object): def maxArea(self, height): """ :type height: List[int] :rtype ...
- pyhon MySQLdb查询出来的数据设置为字典类型
import MySQLdbimport MySQLdb.cursors cxn=MySQLdb.Connect(host='localhost',user='root',passwd='1234', ...
- 【LeetCode题意分析&解答】40. Combination Sum II
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...
- zoj 3171 The Hidden 7's
这道题,我在网上看到两种dp,不过基本原理是一样的,不过感觉还是后面的一种比较巧妙!因为我对动态不是很熟,自能加上一些自己的理解,写上注释. 1) #include <stdio.h> # ...
- 一些特殊css
属性 描述 outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用. outline:#00FF00 dotted thick; 可以按顺序 ...
- JAVA和.NET互调用
通过接口实现JAVA和.NET互调用-JNInterface 使用C#编程多年,也十分感激微软在语言架构.语法糖.编辑器等方面给自己带来的便利.但因为最近工作中有接触到JAVA,渐渐地发现的确像大家说 ...