当前位置: 首页 > Web前端 > HTML

【CSS布局】显示、位置、浮动属性详解!

时间:2023-04-02 14:48:28 HTML

页面布局,或者在页面上做一些小效果的时候,经常会用到display,position,float属性。如果不了解它们,很容易产生一些莫名其妙的效果。看完《CSS Mastery》后总结。让我们从基本的CSS知识开始。相信很多初学者和小弟一样,对CSS的原理并不了解。他们一味追求效果。结果,该页面充满了漏洞和错误。盒子模型就不多说了。网上有很多。注意IE与其他浏览器(W3C规范)的区别就好了。块级元素和行内元素首先说一下人们经常提到的块级元素和行内(inline)元素。p、ul、form、div等元素称为块级元素,这些元素显示为一段内容(自动换行),span、input等元素称为行内元素。两者的主要区别在于,块级元素会从上到下垂直排列,每个占一行,如下即使两个div之间没有元素,绿色的div依然会显示在hongsediv的下方,而不是右边

和内联元素水平排列成一行,内联元素的高度被它的内容扩展了,它的高度不能显式设置,这就是我们一次又一次在span上设置它的原因高度属性不容易使用。简单了解了这些知识之后,我们再来看看display的几个常用属性。一些不太常用的我不懂,就不说了。在显示隐藏元素时,我们经常使用display设置为none或'',设置为none的效果很明显,即元素脱离文档流,不显示,不占用文档空间,而设置为''实际上是设置元素的默认属性块或排队。inline-block属性是CSS2.1的新增值,IE8及以上等主流浏览器均已支持。它可以像内联元素一样水平排列元素,但盒子的内容符合块级元素的行为,可以显示和设置宽度、高度、内外边距。有趣的。另一个有趣的地方是,你可以通过不同的赋值来改变元素生成框的类型,即通过将display属性设置为block,你可以让内联元素表现得像块级元素,反之亦然。定位如果想了解CSS元素的定位,就需要了解position属性。position属性有如下几个常用的值。CSS具有三种基本定位机制:普通流定位、浮动定位和绝对定位。普通流是默认的定位方式。普通流中的元素框元素的位置由元素在html中的位置决定。当元素位置属性为static或者继承static时,会按照正常的流程进行定位,这是我们最常用的方式。相对定位比较简单,对应position属性的相对值,如果一个元素是相对定位的,它就会出现在它的位置,然后通过设置垂直或者水平的位置就可以使元素相对自身移动,在使用中相对定位时,无论元素是否移动,元素在文档流中都占据原来的空间,但外观会发生变化。正常流:
相对定位:从上面的例子可以看出,对绿色div进行了相对定位,第二个红色div向右下移20px后位置没有改变,但是在原来的位置,绿色的div覆盖了红色div的一部分。相对定位可以看作是一种特殊的普通流定位。元素的位置相对于其在普通流中的位置发生变化,而绝对定位则使元素的位置独立于文档流,不占用文档流的空间。普通流程中的元素布局就好像绝对定位的元素不存在一样。绝对定位元素的位置是相对于它最近的非静态祖先元素的。如果该元素没有定位的祖先,则其位置是相对于初始包含块(body或html)元素的。因为绝对定位与文档流无关,所以绝对定位的元素可以覆盖页面上的其他元素,通过z-index属性可以控制堆叠顺序。z-index越高,元素的位置就越高。还是刚才的例子,稍微改动一下,让绿色的div绝对定位,为了清晰显示,把第二个红色的div改成黄色。此时可以看出绿色div是相对于父元素即绿色边框div的位移,而红色和黄色div的布局就像绿色div没有和存在一样。最后要说的是固定属性。fixed的应用也叫固定定位。固定定位就是绝对定位。固定定位元素不包含在正常文档流中。不同的是酷丁元素的包含块是视口(viewport),常见的有一些页面,比如人人网的在线好友模块,总是在窗口的右下角,而估计使用了类似的技术。不浮动//红向右浮动//红框左移,覆盖绿框//全部向左浮动,父元素的宽度为0如果包含块太窄无法容纳水平排列的三个浮动元素,则其他浮动块向下移动,,直到扣够为止,如果浮动元素的高度不一样,上下移动时水平空间不够可能会卡住卡住了linebox和cleanup指出浮动会让元素脱离文档流,不会影响非浮动元素,其实不是这样的.如果文档流中有元素在浮动元素的后面,那么这个元素的框会表现得好像浮动元素不存在一样,但是框的_textcontent_会受到浮动元素的影响,会移动到makeroom.就此而言,浮动元素旁边的linebox被缩短了,让浮动元素Outofspace,所以linebox包围了floatbox不浮动111111111111111111111浮动1111111111111111111111可以看出,虽然绿色div浮动后布局不受浮动影响,布局正常,但文字部分被挤到了红色浮动div下面。为了防止线框包围浮动元素,可以使用clear属性。left、right、both和none属性表示框架的哪些边不与浮动框架相邻。1111111111111111111111清除元素实际上为前面的浮动元素留下了垂直空间,可以解决我们之前的一个问题,在看上一张图的时候,我们发现如果div里面的所有元素都浮动的话,是不会占用文档空间的,所以父元素的高度是0,很多效果可能是走了。//全部向左浮动,父元素宽度为0如果我们想让父元素在视觉上包围浮动元素,我们可以这样做。在最后添加一个空的div并清理它当然,这样做也有很多弊端。一些javascript也可以做出类似的效果。我不会在这里详细介绍。值得注意的是,值为hidden或auto的overflow属性会有一个副作用:自动清理任何Floating元素,所以当页面出现相关问题时,可以看看是不是这个属性的鬼。有了这些基础知识,我们就可以解决很多以前在应用CSS时困惑不解的问题了。最后:在学习web前端的过程中,难免会遇到很多问题。这些问题可能会困扰你很长时间。为此,我建了一个web开发学习交流群(545667817),里面全是师傅的朋友,我们整理了最全的前端学习资料,从最基础的HTML+CSS+JS到实际学习移动HTML5项目的材料。任何想学习的人都可以申请加入。大家互相学习,互相交流,共同进步。每日分享不一样的学习资料!