1、Flex布局
Flexbox(弹性布局)是一种 CSS 布局模式,通过在容器上设置 flex 属性和子元素上设置项 flex-item 属性,来实现灵活的盒子模型布局。
以下是常见的 Flexbox 样式:
- flex 容器属性:
- display: flex; 定义一个 Flexbox 容器
- flex-direction: row/column; 设置主轴方向(横向或纵向)
- justify-content: flex-start/center/flex-end/space-around/space-between; 定义主轴上的对齐方式(常用)
- align-items: flex-start/center/flex-end/baseline/strech; 定义交叉轴上的对齐方式
- align-content: flex-start/center/flex-end/space-around/space-between/strech; 定义多行排列时,交叉轴上的对齐方式
- flex-warp:控制是否换行 nowrap/wrap/wrap-reverse
2、flex 子元素属性:
- order: 整数; 定义子元素的排列顺序
- flex-grow: 整数; 定义子元素的放大比例
- flex-shrink: 整数; 定义子元素的缩小比例
- flex-basis: length; 定义子元素的初值(宽度或高度)
- flex: grow shrink basis; 简写式定义子元素的放大、缩小比例和初值
- align-self: auto/flex-start/center/flex-end/baseline/stretch; 定义单个子元素在交叉轴上的对齐方式
3、Flexbox 布局的优点:可以通过简单的属性设置来实现复杂的布局,同时还可以自适应不同大小屏幕和设备,提高了页面的可维护性和可扩展性。但需要注意的是,一些老旧浏览器可能不支持 Flexbox,需要使用备选方案或库来保证兼容性。
2、清除浮动的方式?
清除浮动的目的:解决父元素因为子元素浮动造成的高度塌陷或布局错乱的问题。
以下是常见的清除浮动的方式:
-
使用空 div 清除浮动【额外标签法】(clearfix):
.clearfix::after { content: ""; display: table; clear: both; }
在包含浮动元素的父容器上添加 clearfix 类,并使用伪元素 ::after 清除浮动。这样可以确保父容器的高度包括浮动元素。将包含浮动元素的父容器设置为 overflow: hidden;,这会触发 BFC(块级格式化上下文),从而清除浮动并包含子元素。
-
注BFC是 CSS 中的一种渲染模型,用于控制和管理块级盒子在布局中的定位、尺寸计算以及相互之间的影响。BFC 是页面上独立的渲染区域,具有一套完整的渲染规则。
- BFC 的一些特性和作用:
- 独立的渲染区域:BFC 内部的元素在布局上是相互独立的,不会受到外部元素的影响。
- 块级盒子垂直排列:BFC 内部的块级盒子会按照垂直方向从上到下依次排列。
- 相邻块级盒子的边距折叠:不同的 BFC 区域之间的相邻块级盒子的垂直边距会发生折叠。
- 清除浮动:触发 BFC 的元素可以清除其内部浮动,使得父容器能够正确包裹浮动元素。
- 自适应高度:BFC 区域会根据其内部元素的内容自动调整高度,避免出现高度塌陷问题。
-
-
使用 clearfix 类库: 可以使用现有的类库,如 Bootstrap 的 .clearfix 类或其他类似的类库,直接应用于父容器上,以清除浮动。
.parent { overflow: hidden; }
-
使用双伪元素清除浮动:
.clearfix::before, .clearfix::after { content: ""; display: table; } .clearfix::after { clear: both; }
添加双伪元素 ::before 和 ::after 至父容器,并设置它们的 content 为空字符串和 display 为 table,再通过 ::after 设置 clear: both;,以清除浮动。
以上是四种常见的清除浮动方式,可以根据实际情况选择适合的方式来解决浮动引起的布局问题。
3、介绍CSS盒模型?
1、css盒模型包含以下几个部分
-
内容区域(Content): 内容区域是盒子中用于显示实际内容的部分,例如文本、图像等。它的大小由内容的宽度和高度决定。
-
内边距(Padding): 内边距是内容区域与边框之间的空白区域。它可以用来调整内容与边框之间的距离,控制元素的尺寸和间距。
-
边框(Border): 边框是围绕在内容区域和内边距外部的线条或样式。它定义了盒子的边界,并可以设置边框的样式、宽度和颜色。
-
外边距(Margin): 外边距是盒子与其他元素之间的空白区域。它用于控制元素与其他元素之间的距离,影响元素在页面中的位置。
2、CSS 盒子模型的计算方式可以分为两种盒子模型:
-
标准盒子模型(content-box): 在标准盒子模型中,元素的宽度(width)和高度(height)只包括内容区域的尺寸,不包括内边距、边框和外边距。
-
怪异盒模型:怪异盒模型的宽度(width)是【内容(content)+padding+border】加magin
4、less和sass的比较
Less和Sass是两种流行的CSS预处理器,它们在功能和语法上有一些区别。
下面是Less和Sass的主要区别:
-
语法风格:
- Less使用类似于CSS的语法,只提供了一些扩展和改进,使其更便于编写和组织。
- Sass使用严格的缩进语法,类似于Python风格,通过缩进来表示嵌套关系,具有更紧凑和简洁的语法。
-
扩展特性:
- Less提供了一些扩展功能,如变量、嵌套规则、Mixin混合等,可以简化CSS的编写和维护。
- Sass拥有更强大的功能集,包括变量、嵌套规则、Mixin混合、函数、条件语句等,提供了更高级的编程能力。
-
生态系统和社区支持:
- Sass有一个庞大而活跃的社区,提供了丰富的资源、插件和框架,如Compass、Bourbon等。
- Less的生态系统相对较小,但也有一些常用的库和工具可供选择。
-
兼容性:
- Less的语法较为宽松,与原生CSS兼容性较好,几乎可以无缝地集成到现有项目中。
- Sass的语法相对严格,需要通过编译器将其转换为普通的CSS,因此对于现有项目的集成可能需要一些配置和工具支持。
总的来说,Less更加简单易学,适合初学者或对CSS预处理器要求不高的项目;而Sass则更为强大和灵活,适合复杂的项目和对可扩展性和编程能力有要求的开发者。选择使用哪个预处理器取决于个人偏好、项目需求以及团队的技术栈和经验。
5、css隐藏元素的方式
-
display: none;
- 将元素完全从页面中删除,包括占用的空间。
-
visibility: hidden;
- 使元素不可见,但保留占用的空间。
-
opacity: 0;
- 将元素的不透明度设置为0,使其变得透明。
-
height: 0; width: 0;
- 将元素的高度和宽度都设置为0,使其变得不可见。
-
overflow: hidden;
- 将元素的溢出部分隐藏,超出部分不会显示。
-
position: absolute; left: -9999px;
6、#rgba 和 opacity透明效果有什么区别
-
将元素定位到屏幕左侧很远的位置,使其不可见。
-
- 答:rgba是单纯的颜色透明,opacity设置的是整个元素的透明效果