CSS读书笔记(3)---清除浮动的几种方法
浮动元素容易造成页面错位现象。下面说说关于清除浮动的几种方法。
首先。先创建一个浮动导致错位的页面。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS---浮动</title>
<style>
.float-left{
float: left;
width: 200px;
height: 200px;
border: 2px solid red;
}
.float-right{
float: right;
width: 200px;
height: 200px;
border: 2px solid blue;
}
.float-box{
background-color: pink;
}
.no-float{
color: #fff;
background-color: pink;
}
</style>
</head>
<body>
<div class="float-box">
<div class="float-left">左浮动</div>
<div class="float-right">右浮动</div>
</div>
<div class="no-float">被浮动影响地元素</div>
</body>
</html>
浮动导致的错位HTML结构

可以看出,左右浮动元素和class为no-float的正常元素重叠了。而且左右浮动元素由于浮动,没法撑开父元素float-box的高度,因此父元素的背景元素也没有显示出来。
解决这个问题,一般可以用下面几个方法:
- 在浮动元素的父元素也即是class为float-box的元素最后加入一个div标签,
<div class="float-box">
<div class="float-left">左浮动</div>
<div class="float-right">右浮动</div>
<div class="clear-float"></div>
</div>属性设置如下:
.clear-float{
clear:both;
}这样就可以清除浮动了并且父元素float-box也有高度了。
- 在浮动元素的父元素之后加入BR标签,<br/>标签具有clear属性,其属性值为left/right/all。
<div class="float-box">
<div class="float-left">左浮动</div>
<div class="float-right">右浮动</div>
<br clear="all"/>
</div>这方法的效果同第一种方法。
- 在浮动元素的父元素中加入overflow属性。如下
.float-box{
overflow: hidden;
background-color: #eee;
}overflow:hidden;但在内容过多导致溢出时会自动隐藏多余的内容
利用overflow:hidden涉及到BFC块级格式化上下文。通过在父元素中设置
- float:left/right;
- overflow除了visible之外的值,
- display (table-cell,table-caption,inline-block)
- position(absolute,fixed)
- fieldset元素
均可以触发BFC,BFC可以闭合浮动,因此可以达到清除浮动的效果。
- 利用伪类:after消除浮动。可以理解为在浮动元素之后加入了一个伪类控制的伪类层,这是一个没有高度没有内容并且带有clear:both属性的层,可以消除浮动。
.float-box:after{
display: block;
visibility: visible;/*设置伪类层为块元素并且可见*/
clear:both;/*清除浮动*/
height: 0;
line-height:0;
font-size:;
content: "";/*伪类层内容清空*/
}最后一种方法更深的分离了HTML和CSS,更加方便我们维护页面。
CSS读书笔记(3)---清除浮动的几种方法的更多相关文章
- [Web 前端] 018 css 清除浮动的四种方法
清除浮动的四种方法 加 clear: ...(见例1) 父级上增加属性 overflow:hidden(见例2.1) 在最后一个子元素的后面加一个空的 div,给它一个样式属性 clear: both ...
- CSS 小结笔记之清除浮动
浮动是一个非常好用的属性,但是有时会出现一些问题,需要进行清除浮动.例如 <!DOCTYPE html> <html lang="en"> <head ...
- 活学活用,CSS清除浮动的4种方法
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近. CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受. 1.结尾处加空div标签 ...
- css清除浮动的几种方法整理
四种清除浮动方法如下: 1.使用空标签清除浮动.空标签可以是div标签,也可以是P 标签.这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签 清除浮动,并为其定义CSS代码:cle ...
- [css]浮动-清除浮动的3种方法
清除浮动的方法: 内墙法 注: 这是个奇淫技巧,没什么原理可言,记住即可 这个技巧又使得父box重新可以被子box撑开高度了. 隔墙法-适用于2个box之间上下排列 由于2个box高度依旧是0, 彼此 ...
- css清除浮动的8种方法以及优缺点
浮动会使当前标签产生上浮的效果,同时会影响到前后的标签.父级标签的位置及width height 属性.而且同样的代码,在各种浏览器中效果可能不同,这样让清除浮动更难了.清除浮动引起的问题有很多的方法 ...
- CSS 清除浮动的4种方法
此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景.<style type=”text/css”> <!– *{margin:0;padding:0;} body{font: ...
- CSS 清除浮动的几种方法
导读: CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列,Float(浮动),往往是用于图像,使得文字围绕图片的效果,而它在布局时一样非常有用.不过有利也有弊,使用浮动 ...
- CSS 清除浮动的四种方法
在实际项目中,我们经常会用到float属性来对页面进行布局.当使用float时,意味着该元素已经脱离了文档流,相当于浮于文档之上,不占据空间.但是针对兄弟元素为文字内容时,会占据一定空间,从而产生文字 ...
随机推荐
- springboot整合mybatis统一配置bean的别名
mybatis.type-aliases-package=cn.byzt.bean 只需要将 javaBean 的路径配置到 springboot 的配置文件中,这里如果是多个路径,用英文逗号分隔多个 ...
- 重命名文件及html
import os import nltk from bs4 import BeautifulSoup as bs def get_txt_name_from_bak_name(bak_name): ...
- POJ 1129 Channel Allocation DFS 回溯
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15546 Accepted: 78 ...
- 反射常用API
反射所有功能都是通过class API来实现的 class常用API有: 1.class.GETINTERFACES():获得这个类实现的接口. 2.class.getMethods() Method ...
- axios 全攻略之基本介绍与使用(GET 与 POST)
axios axios 是一个基于 Promise 的 HTTP 客户端,专门为浏览器和 node.js 服务 Vue 2.0 官方推荐使用 axios 来代替原来的 Vue request,所以这里 ...
- Swift学习——变量var和let常量的用法(一)
Swift中的变量var和let常量 首先介绍一下Swift中的 var 和 let (1)var 是 variable的缩写形式,是变量的意思 ,是可改变的.并非数据类型 比如: 注意每一个语句后面 ...
- impdp时卡住,DW等待library cache lock
同事反映impdp时在SCHEMA_REPORT/TYPE/TYPE_SPEC步骤卡住,1个多小时后也没有响应, 查下v$session: select program,sid, event,bloc ...
- S 禁止F12和右键操作控制台,兼容各浏览器
document.oncontextmenu = function () { return false; }; document.onkeydown = function () { ...
- git的经常使用命令
$ git config --global user.name "姓名" $ git config --global user.email "xxx@qq.com&quo ...
- HDU 5308 I Wanna Become A 24-Point Master
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5308 题面: I Wanna Become A 24-Point Master Time Limit ...