当前位置: 首页 > news >正文

深入浅出——float

FLOAT 

参考张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]的CSS float浮动的深入研究、详解及拓展

1.FLOAT的特性

float属性的初衷只是为了实现文字环绕效果。

1.包裹性:对一个相互嵌套的两个元素的父元素设置float,父元素会包裹住子元素,并且与外界产生隔离。

2.破坏性:对一个相互嵌套的两个元素的子元素设置float,父元素会产生塌陷效果,有被破坏的效果。

1.1包裹性:

1.1.1会产生包裹性的属性:

display:inline-block/table-cell

position:absolute/fixed/sticky

overflow:hidden/scroll

 

1.1.2包裹性的应用:

display:inline-block某种意义上的作用就是包裹(wrap),而浮动也有类似的效果。举个常见例子,或许您有实现宽度自适应按钮的经验,实现宽度自适应的关键就是要让按钮的大小自适应于文字的个数,这就需要按钮要自动包裹在文字的外面。我们用什么方法实现呢?一就是display:inline-block;二就是float。例如我们要实现新浪博客中的“发表文章”之类的宽度自适应按钮(如下图):

背景图片为:

display:inline-block方法

CSS代码如下:

.btn1{display:inline-block; background:url(http://www.zhangxinxu.com/study/image/sina_gray_btn.png) no-repeat left top; padding-left:3px; color:#000000; font-size:12px; text-decoration:none;}

.btn1 cite{display:block; line-height:26px; padding:0 13px 0 10px; background:url(http://www.zhangxinxu.com/study/image/sina_gray_btn.png) no-repeat right top;}

HTML代码如下:

<a href="javascript:void(0);" class="btn1"><cite>inline-block方法</cite></a>

结果如下图:

 

float:left方法
此方法的CSS代码与上面的inline-block方法唯一不同之处就在于这里是float:left;

CSS代码如下:

.btn1{float:left; background:url(http://www.zhangxinxu.com/study/image/sina_gray_btn.png) no-repeat left top; padding-left:3px; color:#000000; font-size:12px; text-decoration:none;}

.btn1 cite{display:block; line-height:26px; padding:0 13px 0 10px; background:url(http://www.zhangxinxu.com/study/image/sina_gray_btn.png) no-repeat right top;}

HTML代码如下:

<a href="javascript:void(0);" class="btn1"><cite>float方法</cite></a>

结果如下图:

 

您可以狠狠地点击这里:按钮宽度自适应demo

上面这个例子旨在说明浮动属性(无论是左浮动还是右浮动)某种意义上而言与display:inline-block属性的作用是一模一样的,所以类似于display:block; float:left;的CSS代码超过95%的情况是没有道理的(display:block是多余的)。然而,float无法等同于display:inline-block,其中原因之一就是浮动的方向性,display:inline-block仅仅一个水平排列方向,就是从左往右,而float可以从右往左排列,这就是两者的差异。然而,我们又有多少情况需要元素从右往左排列呢?很少,所以,CSS中,没有浮动这一属性不是什么大不了的事情,它其实就那么回事。

 

1.1.3说到包裹性,就得说说BFC (Block Formatting Context)

BFC这里见我的另外一篇文章。

2.清除浮动

 

转载于:https://www.cnblogs.com/yyyyg/p/5627391.html

相关文章:

  • 为Docker配置阿里加速器,系统为Debian8
  • 利用Scikit-Learn和Spark预测Airbnb的listing价格
  • H264中的SPS、PPS提取与作用转
  • 4G VoLTE存在漏洞可导致手机用户地理位置和其它个人信息泄露
  • Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
  • 突破你的想象 OPPO R11s新升级
  • 仓储层到多维数据库
  • linux学习——管道
  • http协议的详解
  • sqlite3
  • 90平米的房间,路由器选择指南
  • 深入理解 CSS3 弹性盒布局模型
  • 乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
  • iOS图层layer操作
  • 【剑指offer】丑数
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Brief introduction of how to 'Call, Apply and Bind'
  • flutter的key在widget list的作用以及必要性
  • HTTP--网络协议分层,http历史(二)
  • java第三方包学习之lombok
  • Laravel Mix运行时关于es2015报错解决方案
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • sublime配置文件
  • tab.js分享及浏览器兼容性问题汇总
  • 给Prometheus造假数据的方法
  • 马上搞懂 GeoJSON
  • 深入 Nginx 之配置篇
  • 使用putty远程连接linux
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云重庆大学大数据训练营落地分享
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #pragma预处理命令
  • #QT(智能家居界面-界面切换)
  • (动态规划)5. 最长回文子串 java解决
  • (二)丶RabbitMQ的六大核心
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (算法)Game
  • (学习日记)2024.01.09
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (正则)提取页面里的img标签
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core中Emit的使用
  • .NET开发人员必知的八个网站
  • .NET下ASPX编程的几个小问题
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @JSONField或@JsonProperty注解使用
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ 数据结构 - C++]红黑树RBTree