css float属性 图解float属性的点点滴滴

所属分类: 网页制作 / 应用技巧 阅读数: 1209
收藏 0 赞 0 分享

正确使用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属性,效果会好一些如下面的图

复制代码
代码如下:

li
{
display: inline;
}

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:

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

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

更多精彩内容其他人还在看

32个典型的以分栏/网格为基础的网站

如果你正在寻找网页分栏设计的灵感,这里收集了32个典型的以分栏/网格为基础的网站。它们显示了在网页设计中分栏/网格的重要性,无论对于信息量巨大的站点还是个人博客。 1.The New York Times 2.National Post 3.Guardian 4.Times
收藏 0 赞 0 分享

理论普及——用户体验

一、概念分析1:UE用户体验 英文叫做user experience,缩写为UE, 或者UX。 当指电子商务网站的时候也被称作顾客体验(CUSTOMER EXPERIENCE). 它是指用户访问一个网站或者使用一个产品时的全部体验。他们的印象和感觉,是否成功,是否享
收藏 0 赞 0 分享

分页案例和好的实践

结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通过多个方式做到。 在正文头条和列举被用做逻辑上独立的数据块来呈现信息。另一种解决方法是一种叫分页的机制,它在给定文章的单一部
收藏 0 赞 0 分享

建立用户体验

也许你刚刚来到一家公司,他们希望进行一些“可用性”工作。你可能是一名UI设计师,业务分析师,或前端开发人员,一名产品经理,或者负责用户体验部门的经理或副总。你知道,如果更好地了解使用产品/软件/网站的人,就可能开发出更好的产品/软件/网站。不管怎么样
收藏 0 赞 0 分享

网页图片快速显示的方法和技巧

1. Use .gifs rather than .jpgs. GIFs are smaller in size when compared to JPGs. 1.用.gifs格式保存图片,最好不要用.jpgs格式。因为前者的尺寸比后者小。 2.Use 'Height
收藏 0 赞 0 分享

推荐60种分页案例和好的实践

结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通过多个方式做到。 在正文头条和列举被用做逻辑上独立的数据块来呈现信息。另一种解决方法是一种叫分页的机制,它在给定文章的单一部
收藏 0 赞 0 分享

全面的网站评估方案

有时会被问到“看看XXX网站如何?”之类的问题。 谈到评估,通常都是指产品级的网站,如果模式很新,了解需要花一定时间。于是,很多人又问“那么你仅从UI/UE的角度看看呢?”首先我们得达成共识,一切花里胡哨都在为功能服务,如果功
收藏 0 赞 0 分享

网页的栅格设计思考

原文地址:http://andymao.com/andy/post/82.html 网页设计中的脏、乱、差,是我们在设计过程中常会遇到的问题。通常"脏"是由对色彩使用不当所产生的,而色彩使用不当产生的不好效果也分为:"花、灰",花哨、
收藏 0 赞 0 分享

设计理论设计中的层次感

原文:http://andymao.com/andy/post/80.html 这段时间我一直在说设计需要有层次感,这种层次感可能有很多类型,比如色彩的层次感,或是元素的层次感。当一个设计缺乏层次感的时候页面所表现出来的无非是两种可能,一种是单调,一种是花哨。在设计中我们常
收藏 0 赞 0 分享

网页心得:网页色彩的搭配

网页的色彩是树立网站形象的关键之一,色彩搭配却是网友们感到头疼的问题。网页的背景,文字,图标,边框,超链接...,应该采用什么样的色彩,应该搭配什么色彩才能最好的表达出预想的内涵呢?这里谈一些心得,希望对你有所启发。 首先我们先来了解一些色彩的基本知识:
收藏 0 赞 0 分享
查看更多