图解float属性的详细信息

2024-06-24 05:58

本文主要是介绍图解float属性的详细信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自:http://www.cnblogs.com/58top/archive/2013/01/09/details_about_float_property.html

正确使用CSS的float属性可能会变成一项艰巨的任务,,它涉及内容过多,浏览器兼容性问题也很多。它的定位不仅涉及 包含块,还涉及到了行框,块框,还有行内框等内容。本文包含的实施例的应用属性float说明性例子,以及一些失误。

CSS的float示例1

“float”是什么?

CSS中的某些元素是块元素,例如,如果你把两个段落标记为P,那么他们将被放置在两行,。自己各占一行,如何向显示一行的话可以为元素使用inline属性来在页面显示,

另外一种有效改变页面元素的环绕属性是使用float,典型的例子是使用“float”,将图像向左或向右对齐。下面是一个简单的HTML代码的图片和段落:

<img src="http://lorempixum.com/200/200/" />
<p>Lorem ipsum...</p>

它们显示在一个新行:

CSS的float例2

让我们给image 增加点CSS代码,让他变变样,嘻嘻:

img
{float: right;margin: 20px;
}

这时,我们得到的是右对齐:

CSS的float示例3

如果有更多的文字,段落会继续环绕周围的图像:如下面的图

CSS的float例4

例如,我们需要做的图像和文本缩进20像素。如何你这样写代码下面的代码是错误的,不会生效的

p
{margin: 20px;
}

以这种方式,这将是正确的:如下图

img
{margin: 20px;
}
CSS的float例如5

那么你要问了为什么上面写的p段落缩进20个像素会不起作用呢,不生效呢?为了找到答案,让我们添加一个框架代码:

p
{border: solid 1px black;
}

结果可能会让你大吃一惊:

CSS的float的例子6

事实证明,看到没有加上边框之后(这里加不加边框对他们的影响是没有任何作用的,只不过是为了让你明白),图片是在段落内!因此,margin属性不起作用在第一种情况。为了解决这个问题,你可以为段落p使用浮动:float:left,设置一个绝对宽度:设置之后的效果如下图

复制代码
img
{float: right;margin: 20px;
}p
{float: left;width: 220px;margin: 20px;
}
复制代码
CSS的float例如7

奇怪的规则“float”

现在,让我们转向更复杂的方式使用“float”的规则,变换float对象。当创建缩略图时,它可能是必要的。例如:

复制代码
<ul><li><img src="http://placehold.it/100x100&text=1"/></li><li><img src="http://placehold.it/100x150&text=2"/></li><li><img src="http://placehold.it/100x100&text=3"/></li><li><img src="http://placehold.it/100x100&text=4"/></li><li><img src="http://placehold.it/100x100&text=5"/></li><li><img src="http://placehold.it/100x150&text=6"/></li><li><img src="http://placehold.it/100x100&text=7"/></li>
</ul>
复制代码

默认情况下,每个li条目将各占一行。如果我们将每一个“float:left”,图像将排队一个换行符:

li
{float: left;margin: 4px;
}
CSS的float例如8

但是,如果图像是不同的高度呢?

CSS的float例如:9

 如果我们向列表中的元素的添加display属性,效果会好一些如下面的图

1 li
2 {
3   display: inline;
4 }
CSS的float例如10

现在就让我们来垂直对齐:

img
{ vertical-align: top;
}
CSS的float例11

应该记住,如果这是图像更高的情况下,所有其它图像会围绕前一个图像,例如:

CSS的float例如12

另外一个例子是改变顺序的元素,我们有一个列表的项目,

复制代码
<UL> <LI> <img src="http://placehold.it/100x100&text=1"/> </ li> <LI> <IMG SRC =“http://placehold.it/100x100&text=2”/ > </ li> <LI> <img src="http://placehold.it/100x100&text=3"/> </ li> <LI> <IMG SRC =“http://placehold.it/100x100&text=4 /> </ li> <LI> <img src="http://placehold.it/100x100&text=5"/> </ li> <LI> <IMG SRC =“http://placehold.it/100x100&text = 6“/> </ li> 
</ ul>
复制代码

如果我们想要它们以相反的顺序排列的,我们只需要使用“float: right:”而非“float: left”,在HTML中,我们并没有改变元素顺序如上面的代码: 我们使用 css来操作

CSS的float例如13

在“float”的帮助下,页面上的项目进行组合是方便的,但我们面临的一个大问题:以下内容(文字或块)也会跟着变化。例如,我们有一组图片:

CSS的float例如14

 下面的文字开始流动,周围的整个块:

CSS的float例如15

为了避免这种情况,你必须使用“clear”的属性。如果我们将其应用到第二个图像:

ul li:nth-child(2)
{ clear: left;
}

以下是我们得到:

CSS的float例如16

在这种情况下,剩余的图像继续继承“float: left”。与此相对应,文字将显示失真:

CSS的float例如17

我们需要对于段落使用clear:both:

p
{clear: both;
}

解决我们的问题是:

CSS的float例如18

现在,让我们想象一下,前面的例子我们需要设置背景为画廊的。如果该项目不浮动,那么我们将不得不这样:

ul
{background: gray;
}
CSS的float例如19

但是如果我们添加“float: left”从列表中,背景完全消失:

CSS的float例如20

如果我们先设置高度为UL:

ul
{height: 300px;
}
CSS的float例如21

它并没有解决问题,因为背景的大小被定义。类“clearfix”,这将被应用到'DIV'的元素在同一水平上的UL,会帮助我们。

.clearfix
{clear: both;
}

有另一种解决方案,使用的“overflow”:

ul
{overflow: auto;
}
CSS的float实例22

九条规则的float-items:

  1. 浮动的项目不能超出它的父容器的边缘。
  2. 左浮动框的左外边界(margin edge)不可以出现在它包含块左边界之左。对于右浮动的元素也有类似规则
  3. “如果当前框是左浮动框,并且在源文档中存在更早生成的左浮动框,那么对于任意这些先前的框,要么当前框的左外边出现在先前框的右外边之右,要么它的顶部必须在先前框的底部之下。对于向右浮动的框也有类似的规则。
  4. 左浮动框的右外边不可以出现在它右侧的任何右浮动框的左外边之右。对于向右浮动的元素也有类似的规则
  5. 浮动框的顶边不可以高于源文档中先前元素产生的块框或浮动框的顶
  6. 浮动框的顶边不可以高于源文档中先前元素产生的包含一个框的任何行框的顶
  7. 一个浮动块必须位于尽可能高。
  8. 左浮动框必须尽量靠左放置,右浮动框必须尽量靠右放置。在更高的位置和更靠左或靠右的位置间,选择前者
  9. 左浮动框左边如果有另外一个左浮动框,它的右外边不可以出现在它包含块的右边之右。(或者比较宽松的要求是:一个左浮动不可以超出右边,除非它已经尽可能地靠左排列。)对于向右浮动的元素也有类似的规则。

可见,浮动的规则却是很让人迷惑,但从这几条规则中你也不难发现,浮动的宗旨是,在不溢出包含块的情况下,尽量的靠上靠左/右放置,但是不能高于它前面生成的块框、浮动框和行框的顶。

这篇关于图解float属性的详细信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089355

相关文章

CALayer相关的属性

iOS开发UI篇—CAlayer层的属性 一、position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0)   @property CGPoint anchorPoint; 称为“定位点”、“锚点”

CSS背景属性:打造丰富视觉效果的背景设计

在网页设计中,背景是创建视觉吸引力和设置页面基调的重要元素。CSS提供了多种背景属性来控制元素的背景样式,包括颜色、图像、尺寸、位置和重复方式。本文将详细介绍CSS中的背景属性,包括background简写属性以及background-color、background-image、background-repeat、background-position和background-size等属性。

CSS中的表格专有属性:提升表格布局与样式的灵活性

CSS为表格提供了一系列专有属性,这些属性使得开发者能够对表格的布局和样式进行精细控制。在本文中,我们将介绍几个关键的CSS表格属性:table-layout、border-spacing、border-collapse 和 empty-cells,以及它们如何影响表格的显示效果。 1. table-layout table-layout属性定义了表格的布局算法,主要有两个值: auto:浏

CSS列表属性:list-style系列属性详解

CSS(层叠样式表)是用于控制网页样式的一种语言,它允许开发者以一种非常灵活的方式来设置网页元素的外观。在CSS中,list-style属性族是专门用来设置列表样式的。列表是网页设计中常见的元素,它们可以是有序列表(<ol>)或无序列表(<ul>)。list-style系列属性允许你自定义列表项前的标记,包括类型、位置和图像。 1. list-style-type list-style-typ

Spring MVC的核心类和注解——@RequestMapping注解(二)@RequestMapping注解的属性

一、@RequestMapping注解的属性 属性名 类型 描述 name String 可选属性,用于为映射地址指定别名。 value String[] 可选属性,也是默认属性,用于指定请求的URL。 method RequestMethod[] 可选属性,用于指定该方法可以处理哪种类型的请求方式。 params String[] 可选属性,用于指定客户端请求中参数的值,必须包含

ADD属性驱动架构设计(一)

目录 一、架构设计过程 1.1、架构设计过程 1.1.1、设计目的 1.1.2、质量属性(非功能需求) 1.1.3、核心功能(功能需求) 1.1.4、架构关注 1.1.5、约束条件 1.2、基于设计过程 二、什么是ADD? 三、为什么选择ADD? 四、作用 五、ADD实现步骤 5.1、架构设计目标 5.1.1、系统类型确定  5.1.2、系统阶段确定 5.2、建

让IE8支持CSS3属性(border-radius、box-shadow、linear-gradient)

下载 PIE-1.0.0.zip解压后,将文件夹重命名为PIE,放到项目目录下在CSS3文件中添加一行代码 behavior: url(PIE/PIE.htc); 例如: .form__input{border-radius: 0.3em;behavior: url(PIE/PIE.htc);} 参考: TYStudio-专注WEB前端开发 css3pie

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解 码客 卢益贵 ygluu 关键词:游戏策划 可配置化 模块化配置 数据引擎 条件系统 红点系统 一、前言 在插件式模块化软件开发当中,既要模块高度独立(解耦)又要共享模块数据,最好的方法是有个中间平台(中间件)提供标准的接口来进行数据的交换,这在很多行业软件开发中已经广泛应用。但是,由于中间件的抽象和封

Linux float int和16进制互相转换

Linux 上float int和16进制互换操作。之前把float转16进制,也就是转成4个字节,方便使用串口传输嘛。使用的方法是: //float 转 16进制float x_pid_p = 15.0;unsigned char * bValue = (unsigned char *)& x_pid_p;printf("%x\t%x\t%x\t%x\n", bValue[0], bVa

SpringBoot-注解@PropertiySource读取外部属性文件

@ConfigurationProperties和@Value两个注解能从配置文件中获取数据,但是前面讲了他们是从全局配置文件中获取,且只能从全局配置文件中获取,那么如果是一些数值类的数据放在全局配置文件里,是不怎么合适的,我们往往会把他们分离出来,比如前面的课程中Spring的xml配置文件里,与数据库链接的信息,我们是分离出来放在jdbc.properties里,然后在spring.xml里用