前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSS理解之Float

CSS理解之Float

作者头像
小胖
发布于 2018-06-27 07:59:31
发布于 2018-06-27 07:59:31
75100
代码可运行
举报
运行总次数:0
代码可运行

1.Float的设计初衷仅仅是:

实现文字环绕效果,如下图所示:

Paste_Image.png

明白了float的设计初衷,就可以明白float特有的行为表现了。

我们都知道,使用float会产生一定的破坏性,如给子元素设置浮动会使父元素高度塌陷,其实这不是bug,而是为了实现文字环绕效果而产生的特性使然。

2.清除浮动的两大基本方法:

1.给受浮动影响的元素设置clear:both

2.使父元素形成BFC(IE8+,是高级浏览器特有的一个概念)或haslayout(IE6/IE7私有的概念)

两种方法的区别:

  1. clear:与外界还有联系,例如会产生margin重叠的效果
  2. BFC/haslayout(应用于父元素):封闭,里面的声明不会对外界产生影响,例如float不会出现margin重叠,但也有缺陷,无法应用于所有浏览器

代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>clear与margin重叠</title>
</head>

<body>
1.
<div style="background-color: #f5f5f5;">
    ![](http://upload-images.jianshu.io/upload_images/1969310-8b6611e56974ea20.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    <div style="clear:both; margin-bottom:100px;">clear:both;</div>
</div>
<div style="margin-top: 100px;">本文字离图片的距离是?</div>
<br><br><br><br>2.
<div style="background-color: #f5f5f5; overflow: hidden;">
    ![](http://upload-images.jianshu.io/upload_images/1969310-8b6611e56974ea20.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
</div>
<div style="margin-top: 100px;">本文字离图片的距离是?</div>
</body>
</html>

显示效果:

Paste_Image.png

第一种:浮动元素的底加入div 且设置clear:both;(本例中margin-top和margin-bottom会发生重叠)

第二种:在浮动元素的父元素上加入overflow: hidden,使父元素形成BFC;(本列中 父元素会将整个元素包裹起来,从而不会出现塌陷和重叠显现)

clear的通常应用形式:

  1. HTML层面,通常是在塌陷的父容器底部插入具有clear:both声明的block水平元素,通常使用<div></div>元素。

方法的不足:添加了多余的裸露的<div></div>标签

  1. CSS层面,使用after在父元素底部生成一个具有clear:both声明的伪元素:.clerafix:after{}

方法的不足:对IE6/IE7无效。

权衡后的策略:

IE8以上的浏览器使用:

.clearfix:after{content:'';display:table;clear:both;}

IE6/IE7使用.clearfix{*zoom:1;}

注意:切勿滥用.clearfix,它只应该应用于包含浮动子元素的父级元素上。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.07.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
jQuery实现轮播
一、轮播的实现原理 1.轮播是把需要轮播的图片浮动水平排列成一排。 2.然后设置一个视窗,大小等于一张图片。 3.视窗的overflow设置为hidden,溢出部分不可见。 4.点击下一页,所有图片就水平移动一个宽度。 5.如果要实现左右滚动无限循环的效果,就需要在图片列表开头和结尾分别添加最后一张图和第一张图 就像一张胶卷,每次展示一张图片,通过移动胶卷来切换可视的图片。 二、使用jquery实现图片自动轮播效果 <!DOCTYPE html> <html lang="en"> <h
小胖
2018/06/27
9.6K0
CSS3 - 清除浮动
通过本文,让大家可以明白清除浮动的原理和几种方法,最后得出一种本文认为最好用的方法。
leocoder
2018/10/31
8190
CSS3 - 清除浮动
通过本文,让大家可以明白清除浮动的原理和几种方法,最后得出一种本文认为最好用的方法。 本文也会同步到我的个人网站。
leocoder
2024/02/01
1480
CSS3 - 清除浮动
The Mystery Of The CSS Float Property
数年前,当开发者首次开始不使用table 来布局网页时,CSS中的一个property突然间显得格外重要,该属性就是float。float属性变得如此常用的原因在于:默认情况下,在一个以列布局的方式中 block-level元素之间不会对齐。因为column在实际的CSS布局中 是常用且必需的,所以float属性逐渐地被极多地采用(甚至滥用)。
lesM10
2019/08/26
1.8K0
The Mystery Of The CSS Float Property
[Java小工匠]CSS盒子模型-边距合并
  CSS外边距合并,只有上外边距和下外边距才会触发外边距合并,左外边距和右外边距不会。
Java小工匠
2018/08/10
1.2K0
[Java小工匠]CSS盒子模型-边距合并
懒加载
1.什么是懒加载? 懒加载也就是延迟加载。 当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为同一张图片的路径(这样就只需请求一次,俗称占位图),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。 demo: //所有img元素的src属性值是同一个图片地址,自定义属性data-src里存储的是真正需要加载的图面地址,当图片出现在浏览器的可视区域内时,再把data-src的属性值赋值给对应的img元素的src属性 <ul cla
小胖
2018/06/27
1.1K0
Flex Box布局学习- 语法
上一篇,我学习并整理了使用flex时,需要注意的兼容性问题。那么今天就来学习一下有关flex语法的东西。
贺贺V5
2018/08/21
8350
Flex Box布局学习- 语法
jQuery实现图片懒加载
一、懒加载 1.什么是懒加载 目前,网络上各大论坛,尤其是一些图片类型的网站上,在图片加载时均采用了一种名为懒加载的方式,具体表现为,当页面被请求时,只加载可视区域的图片,其它部分的图片则不加载,只有这些图片出现在可视区域时才会动态加载这些图片,从而节约了网络带宽和提高了初次加载的速度。 2.懒加载的原理 页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通过javascript设置了图片路径,浏览器才会发送请求。 懒加载的原理就是先在页面中把所有的图片统一使用一张占位图进行占位,
小胖
2018/06/27
14.2K0
利用HTML5,无JS实现各种交互效果
<details> 标签在Chrome,Firefox等浏览器下默认是有展开收起行为的,例如下面HTML:
一墨编程学习
2018/10/22
7.7K0
css布局使用
目录 常用居中 垂直居中 水平居中 垂直水平居中 单列布局 双列&三列布局 ---- 常用居中 垂直居中 单行文本垂直居中 <div class="parent"> <div class="child">child</div> </div> .parent { line-height: 200px; } 图片垂直居中 <div class="parent"> ![](image.png) </div> .parent { line-height: 200px; } .par
听城
2018/04/27
2.1K0
简书搜索自动匹配功能
今天周六,我又来分享知识啦。最近一直在忙项目,所以趁着这个周末,喝着咖啡,听着音乐,敲着代码就把做项目的知识点总结给大家,简直不要太惬意,哈哈。
wblearn
2018/08/27
1.8K0
简书搜索自动匹配功能
Flutter 即学即用系列博客——06 超实用 Widget 集锦
大家验证的时候使用下面的代码替换 main.dart 代码,然后在 //TODO 语句返回下面常用 Widget 示例的代码。
AndroidTraveler
2019/03/18
5050
Flutter 即学即用系列博客——06 超实用 Widget 集锦
Linux网络安全技术与实现(使用)
防火墙有两种:数据包过滤、应用层防火墙 200人以下的需要128MB的数据包过滤防火墙就够了 防火墙结构:单机防火墙、网关式防火墙、透明防火墙 DMZ网关式防火墙
用户5760343
2022/05/19
5160
Linux网络安全技术与实现(使用)
元素居中的多种实现方式!
优点:只需在子元素child上设置css样式,不用关心父元素的 缺点:兼容性较差,如果需要兼容,更改html样式,改为table样式
十月梦想
2018/08/29
1K0
知识整理之CSS篇
CSS篇主要从CSS兼容、CSS3新特性、CSS选择器、高频属性、高频布局、高频知识点、性能优化等方面进行归纳。如对HTML知识点感兴趣,可移步至:知识整理之HTML篇
Clearlove
2019/08/29
1.7K0
知识整理之CSS篇
配置Flutter环境ForMac
Flutter的配置其实有一些坑。尤其针对iOS开发者不太熟悉Android的开发环境,万事开头难。个人选择使用Android Studio 作为开发Flutter的工具,考虑到Google的兼容性。
iOSSir
2019/06/11
7420
清除过的浮动
http://www.iyunlu.com/view/css-xhtml/55.html
bear_fish
2018/09/19
9140
清除过的浮动
四. css 布局之 float
块元素: 1、块元素不在独占页面的一行 2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开
小海怪的互联网
2020/09/22
8120
HTML+CSS高级
第一章 一、内联块     display: inline-block;      1、特征:                1.1     块级元素在一行显示     (得到内联元素的属性)           1.2     内联元素支持宽高     (得到块的属性)           1.3     没有宽度的时候,内容撑开宽度     (得到内联元
用户1148399
2018/01/09
6.1K0
css的这个属性还可以这么用!你可能不知道的负值技巧和细节
然后再把这个outline-offset属性的值改为-118px,那么就会把边框变成一个加号
叫我可儿呀
2020/04/16
7470
相关推荐
jQuery实现轮播
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验