html 浮动元素
在CSS布局中分为内联元素(display:inline)和块状元素(display:block),块状元素默认会占据一行,可设置高度宽度以及边距,而内联元素不会也不能设置。常见的内联元素有:a、span、input、select,常见的块状元素有:h1-h6,p,div,ul,table。
浮动元素是设置float为非none值的元素,这时该元素会自动被设置成块元素,可以设置宽度、高度以及边距。浮动元素,顾名思义,使该元素浮动在其他元素之上,离开了原来的文档流,直到浮动到父元素的左右边距(上下边距不受限制)或者左、右方遇到其他设置了float的元素。而其附近设置的浮动元素会跟其边距相邻,表面上跟内联元素似的。而非浮动元素则相对复杂一些,分以下两种情况:浮动元素后边的元素若是非浮动行内元素且因为定位产生重叠时,行内元素边框、背景和内容都在该浮动元素“之上”显示,浮动元素后边的元素若是非浮动块级元素且在定位后产生重叠时,该块级元素边框和背景在该浮动元素“之下”显示,只有内容在浮动元素不在非浮动元素的部分显示。
关于clear:both属性
这个属性只能用于设置块状元素,而对内联元素无效果。
设置这个属性的效果如下:
clear:left; 禁止左侧出现浮动元素,如果左侧存在浮动元素,则当前元素将在浮动元素下面另起一行呈现.
clear:right; 禁止右侧出现浮动元素,如果右侧存在浮动元素,则右侧的浮动元素将在当前元素下面另起一行呈现.
clear:both; 禁止左右两侧出现浮动元素,当前元素将排斥浮动元素独占一行呈现.
上面提到的行也可能是多行组成的一个块,不仅仅是一个文本行的概念.
由于浮动元素是浮动在其父元素之上的,只有左右边距受到父元素影响,因此,当一个块只有浮动子元素时,其上下高度可能为0(因为此时没有子元素能够撑起父元素),这时可以设置一个空的块元素,设置其clear:both属性即可。如下面的例子所示:
<div style="border:2px solid red">
<div style="float:left;width;80px;height;80px;border:1px solid blue;">TEXT DIV</div>
<div style="clear:both"></div>
</div>
此时设置了第二个子元素的clear属性为both,因此此时其效果如下:
如果不设置clear属性,则由于第二个子元素的内容为空,因此父元素无法撑起,显示效果将是一条线,而由于第一个子元素是浮动的,因此其显示在父元素之外。如下所示:
html 浮动元素的更多相关文章
- 关于BFC不会被浮动元素遮盖的一些解释
简介 在清除浮动一文中提到BFC不会被浮动元素遮盖,并没有详细探究表现行为.规范中指出,在同一个BFC内,作为子元素的BFC的border-box不应该覆盖同为子元素的浮动元素的margin-box. ...
- HTML。CSS浮动元素详解
浮动定位是指 1.1将元素排除在普通流之外,即元素将脱离标准文档流 1.2元素将不在页面占用空间 1.3将浮动元素放置在包含框的左边或者右边 1.4浮动元素依旧位于包含框之内 2. 浮动的框可以向左或 ...
- 使用样式“clear”和“overflow”消除浮动元素对环绕行框的影响
为元素设置“float”样式之后,元素会脱离标准文档流,不再占据原来的空间.后续元素会向前移动,占据这个新的空间.后续的文本会围绕着浮动元素分布,形成一种环绕布局的现象. 示例代码: <!DOC ...
- css让浮动元素水平居中
对于定宽的非浮动元素我们可以用 margin:0 auto; 进行水平居中. 对于不定宽的浮动元素我们也有一个常用的技巧解决它的水平居中问题.如下: HTML 代码: <div class=&q ...
- CSS围住浮动元素的三种方法
浮动元素脱离了文档流,其父元素看不到它了,因而不会包围它.浮动会“扩散”到下一个清除浮动的元素处.这会引起不想要的页面布局效果. 清除浮动的方法有三种: 1.父元素overflow:hidden 2. ...
- CSS浮动元素的水平居中
方法一: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- IE6下绝对定位元素和浮动元素并列绝对定位元素消失
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 如何居中div?如何居中一个浮动元素?
如何居中div? 给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 如何居中一个浮动元素? <!DOCTYPE ...
- sub,dl,dt,排版,横向滚动条,浮动元素居中,box-sizing
1.sub标签 下标 2.dl,dt,dd用的地方通常是具有标题,而标题下对应有若干列表简单的(栏目标题+对应标题列表)和标题对应下面有内容.在使用时候我们能简洁html代码情况下,学会灵活使用dl ...
随机推荐
- 像web一样使用python
使用传统的web开发技术,也就是html+js,然后搭配一个后端语言,已经成为当今web开发的固定模式了,为此也形成了众多的toolkit,譬如ror,django,各种js图形库更是玲琅满目,从非常 ...
- 如何学习.Net的步骤
如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET. ASP. ...
- 关于HTTP 协议的特点,以及网络请求GET 和 POST 的区别?
HTTP协议有何特点: HTTP 超文本的传输协议,是短连接,是客户端主动发送请求,服务器做出响应,服务器响应之后连接断开 HTTP是属于应用层面向对象的协议,HTTP 有2类报文:请求报文和响应报文 ...
- 在OS X 10.10系统上安装Navicat Premium中文破解版11.0.16教程
此链接是Navicat Premium中文破解版11.0.16安装包里面并带有中文汉化包 http://pan.baidu.com/s/1ntjz6HF#path=%252F 一.Navicat Pr ...
- CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\921bbfc4\ca7cf42\App_Code.fu98jwep.dll”--“拒绝访问。 ”
在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Fil ...
- hive 使用脚本清洗数据:时间戳转日期
import sys import datetime for line in sys.stdin: line = line.strip() userid, movieid, rating, unixt ...
- IOS开发——正则表达式验证手机号、密码
App的实际应用中,用户登陆功能基本是每个App都有需求的一个功能.而当前我们很常规的做法,就是让用户把手机号作为自己的用户名,而在注册获取短信验证码的过程中,我们首先要完成的一个步骤,就是校验用户的 ...
- BZOJ 3566: [SHOI2014]概率充电器( 树形dp )
通过一次dfs求出dp(x)表示节点x考虑了x和x的子树都没成功充电的概率, dp(x) = (1-p[x])π(1 - (1-dp[son])*P(edge(x, son)).然后再dfs一次考虑节 ...
- sqlserver存储过程及易错点
create PROCEDURE [dbo].[xiao_adduser] @username NVARCHAR(), @password NVARCHAR(), @adddate DATETIME ...
- OSCache缓存框架介绍
OSCache是一种开放性的JSP定制标记应用,由OpenSymphony设计,提供了在现有JSP页面之内实现快速内存缓冲的功能. OSCache是个一个广泛采用的高性能的J2EE缓存框架 ...