CSS的display
属性是一个非常重要的属性,它决定了元素应该如何显示在页面上。display
属性可以控制元素的布局方式,例如是块级元素、内联元素,或者是其他类型的布局方式,如Flexbox、Grid等。以下是对display
属性的详细介绍:
display: block;
元素会表现为块级元素,这意味着它会开始于新的一行,并尽可能占据全部可用的水平空间。例如,<div>
和<p>
元素默认就是块级元素。display: inline;
元素会表现为内联元素,它不会开始新的一行,元素的宽度由内容决定。例如,<span>
和<a>
元素默认就是内联元素。display: inline-block;
元素会结合内联元素和块级元素的特点。它既不会开始新的一行,也可以设置宽度和高度。这对于需要固定尺寸但又想与其他元素并排排列的情况非常有用。display: list-item;
元素会表现得像列表项一样,通常会显示列表项前的标记(如项目符号或数字)。display: table;
元素会表现得像块级表格元素,display: table-row;
会使元素表现得像表格行,而display: table-cell;
会使元素表现得像表格单元格。display: flex;
或display: grid;
元素会创建一个弹性容器(Flexbox)或网格容器(Grid),其子元素会成为弹性项目(Flex items)或网格项目(Grid items)。display: none;
元素及其子元素将不会显示在页面上,它们占据的空间也会从文档流中移除。display: contents;
元素自身不会生成框,但其子元素会表现得如同它们是兄弟元素的子元素一样。display: flow-root;
会创建一个新的块级格式化上下文,类似于display: block;
,但会阻止内部的float清除外部的float。display: run-in;
是一个旧的CSS属性,它的行为取决于上下文,现在已经不推荐使用。display
属性的使用非常灵活,可以根据不同的布局需求选择合适的值。在实际开发中,合理运用display
属性可以有效地控制元素的布局,实现各种复杂的页面设计。
float
是CSS中的一个属性,用于将元素从常规文档流中脱离出来,并向左或向右移动,直到它的外边缘接触到包含块或另一个浮动元素的边缘。float
属性主要用于创建文本环绕图片的效果,或者将一系列的元素排列在一行内。
以下是float
属性的详细介绍:
left
:元素向左浮动,文本和其他元素将围绕在其右侧。right
:元素向右浮动,文本和其他元素将围绕在其左侧。none
:元素不浮动,而是根据正常的文档流进行显示。inherit
:元素继承其父元素的float
属性值。clear
属性来清除浮动。clear
属性可以设置在同一个元素上,或者在浮动元素之后的元素上。clear
的值有none
(不清除浮动)、left
(清除向左浮动的元素)、right
(清除向右浮动的元素)和both
(清除两侧的浮动)。float
属性。float
属性带来的一些问题,如父元素高度坍塌等。float
属性适用于需要文本环绕的图片、导航菜单、图像画廊等场景。float
属性可能导致布局上的复杂性,建议在简单的布局需求时使用,或者在了解了其工作原理和可能的问题后使用。float
属性时,需要注意清除浮动,避免布局上的问题。float
属性的一些局限性,现在更推荐使用Flexbox和Grid布局模式来实现复杂的布局需求。总的来说,float
属性是一个强大的CSS工具,可以用来创建各种视觉效果,但在使用时需要注意其可能带来的问题,并适时地使用清除浮动来维护布局的正确性。随着CSS布局技术的发展,float
属性在某些情况下可以被更现代的布局方式所替代。
将父元素的高度写死,最简单的避免塌陷问题的出现,但是一旦高度写死,父元素的高度将不能自动适应子元素的高度,所以这种方案是不推荐使用的。
开启BFC属性
页面元素中的隐含属性:Block Formatting Context 即块格式化上下文,简称BFC,当开启元素的BFC以后,元素会变成一个独立的布局区域,不会在布局上影响到外面的元素,BFC 理解为一个封闭的大箱子,箱子内部的元素不会影响到外部。
开启BFC后,元素将会具有如下的特性:
父元素的垂直外边距不会和子元素重叠
开启BFC的元素不会被浮动元素所覆盖
开启BFC的元素可以包含浮动的子元素(可解决高度塌陷)
如何开启元素的BFC
设置元素浮动(不推荐)---- 使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失,而且使用这种方式也会导致下边的元素上移,不能解决问题
设置元素为inline-block(不推荐) ---- 可以解决问题,但是会导致宽度丢失,不推荐使用这种方式
将元素的overflow设置为一个非visible的值
设置元素绝对定位
推荐方式:将overflow设置为hidden是副作用最小的开启BFC的方式。
利用clear属性
clear可以用来清除其他浮动元素对当前元素的影响
可选值:
none,默认值,不清除浮动
left,清除左侧浮动元素对当前元素的影响
right,清除右侧浮动元素对当前元素的影响
both,清除两侧浮动元素对当前元素的影响,清除对他影响最大的那个元素的浮动
了解完clear属性后,我们可以直接在高度塌陷的父元素的最后,添加一个空白的div,由于这个div并没有浮动,所以他是可以撑开父元素的高度的,然后在对其进行清除浮动,这样可以通过这个空白的div来撑开父元素的高度,基本没有副作用
通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动,这样做和添加一个div的原理一样,可以达到一个相同的效果,而且不会在页面中添加多余的div,这是我们最推荐使用的方式,几乎没有副作用:
.box1:after{
/*添加一个内容*/
content: "";
/*转换为一个块元素*/
display: block;
/*清除两侧的浮动*/
clear: both;
}
<style type="text/css">
.box1{
border: 1px solid red;
background-color: palegreen;
}
.box2{
width: 100px;
height: 100px;
background-color: blue;
/* margin-top:100px ; */
/* float: left; */
}
.box1:after{
/*添加一个内容*/
content: "";
/*转换为一个块元素*/
display: block;
/*清除两侧的浮动*/
clear: both;
}
</style>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
position:static;
position:relative;
介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动
代码: position:absolute;
特点:
应用场景:
祖先元素中没有定位 → 默认相对于浏览器进行移动 祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动
position:fixed;
不同定位方式特点总结:
定位方式 | 属性值 | 相对于谁移动 | 是否占位置 |
---|---|---|---|
静态定位 | static | 不能通过方位属性移动 | 占位置 |
相对定位 | relative | 相对于自己原来的位置 | 占位置 |
绝对定位 | absolute | 相对于最近的且有定位的祖父元素移动 | 不占位置(脱标) |
固定定位 | fixed | 相对于浏览器可视区域 | 不占位置(脱标) |
z-index
是 CSS 定位中的一个重要属性,它决定了元素在页面上的堆叠顺序。当你在页面上有多个子元素需要层叠显示时,z-index
属性可以帮助你控制哪些元素显示在前面,哪些显示在后面。
z-index
只在定位元素(即设置了 position
属性为非 static
值的元素)上起作用。position
属性可以设置为 relative
、absolute
、fixed
或 sticky
。一旦元素被定位,它们就会创建一个新的局部堆叠上下文(local stacking context),在这个上下文中,z-index
属性将决定元素的堆叠顺序。
z-index
属性接受整数作为值,数值越大的元素会显示在数值较小的元素之上。如果两个元素具有相同的 z-index
值,则根据它们在 HTML 文档中的顺序来决定堆叠顺序,后面的元素会覆盖前面的元素。
例如:
.element-one {
position: relative;
z-index: 1;
}
.element-two {
position: absolute;
z-index: 2;
}
在这个例子中,.element-two
会覆盖在 .element-one
上方,因为它有一个更高的 z-index
值。
堆叠上下文是 z-index
属性起作用的区域。一个元素的 z-index
值只在其所在的堆叠上下文中有效。创建堆叠上下文的规则如下:
<html>
元素)始终创建堆叠上下文。position
值为 relative
、absolute
、fixed
或 sticky
,且 z-index
值除 "auto"
之外的元素。position
值为 fixed
,且 z-index
值为 "auto"
的元素,创建一个局部的堆叠上下文,但其子元素不在这个上下文中。position
值为 absolute
,且 z-index
值为 "auto"
的元素,创建一个局部的堆叠上下文,但其子元素不在这个上下文中。opacity
值小于 1
。transform
属性除了 "none"
之外的其他值。perspective
属性值不为 "none"
。filter
属性值不为 "none"
。perspective-origin
属性值不为 "0px 0px"
。transform-style
属性值为 "flat"
或 "preserve-3d"
。backface-visibility
属性值为 "hidden"
。isolation
属性值为 "isolate"
,且 position
属性值不是 "static"
。speak
属性值为 "spell-out"
。z-index
只对定位元素有效。z-index
值才会影响其内部元素的堆叠顺序。z-index
,因为它会使布局的逻辑变得复杂,尤其是在大型项目中。z-index
时,要注意维护代码的可读性和可维护性。通过合理使用 z-index
属性,你可以创建出具有层次感的布局,提升用户体验。记住,良好的设计不仅仅是视觉上的,还包括代码的结构和可维护性。
评论
登录后才可以进行评论哦!