1、CSS实现元素两个盒子垂直水平居中方法
- 子布局设置为绝对布局:
position:absolte;
父布局设置为相对布局,且子布局设置为父布局宽高的50%
,然后通过向上、向左移动自身宽高的负一半。 - 通过使用
transform
实现向x轴、y轴移动,样式如:transform: translate(-50%,-50%);
在上述前提下。 - 父布局宽高固定,可以在子布局中通过:
margin:auto;
实现垂直水平居中。 flex
布局,通过在父布局中设置:justify-content:center;align-items:center;
- 父布局使用
table-cell
与转换text-allign
(可以对行内块生效)
2、BFC的理解
BFC(Block Formatting Contenxts)
: 块级格式上下文,块格式上下文,是一块独立的渲染区域,内部元素不会影响外部的元素。通过BFC
可以用于清除元素内部浮动,解决盒子margin
合并问题,如何使用BFC
:
float
不是none
overflow
属性不是visible
position
属性不是static
和relative
display
属性为以下值 :table-cell 、 inline-block 、 table-caption
3、盒子模型的理解
CSS 将html每一个元素都抽象为一个盒子,每个盒子有固定的组成部分,为了能达到相应的效果,我们需要对每个盒子的组成部分进行设置、布局。盒子模型将一个html元素分成4个部分组成:
- 外边距:margin
- 内边距:padding
- 边框:border
- 内容:content
盒子模型类型分为:
- W3C标准盒子模型
- IE标准盒子模型(怪异盒子模型)
准盒子模型=content(内容)+border(边框)+padding(内边距),怪异盒子模型=content(内容)(已经包含了 padding 和 border)。
4、CSS选择器的权重
!important
> 行内样式 >ID选择器 > 类选择器 > 标签选择器 > 通配符 > 继承 > 浏览器默认属性
5、CSS中哪些属性不可继承
元素的自带属性不可被继承,比如a标签的颜色,如下为CSS中不可继承的属性:
display
:元素的格式- 文本属性:
vertical-align、text-decoration
- 盒子模型属性:
width、height、margin、border、padding
- 背景属性:
background、background-color、background-image
6、Bootstrap 栅格系统的工作原理?
Bootstrap
内置了一套响应式、移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列。网格系统的实现原理非常简单,仅仅是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询
,就制作出了强大的响应式网格系统
。Bootstrap框架中的网格系统就是将容器平分成12份。
7、CSS3的新特性有哪些?
- 新增
RGBA
,HSLA
模式,新增透明度 - 使用
box-shadow
属性,可以为元素添加投影效果,包括阴影的颜色、大小、模糊度和偏移量等。 CSS3
允许通过border-radius
属性为元素的边框添加圆角,创建圆形、椭圆形或具有不同角度的矩形边框。CSS3
引入了linear-gradient(
线性渐变)和radial-gradient
(径向渐变),允许在元素的背景中创建平滑过渡的颜色效果。- 自定义动画:
CSS3
的@keyframes
规则允许创建复杂的动画效果,通过定义关键帧和过渡细节来控制动画的执行 - 使用
transform
属性,可以对元素进行旋转、缩放、倾斜和平移等变换操作 CSS3
提供了更多的字体控制选项,包括使用@font-face
规则引入自定义字体文件,以及设置字体的粗细、斜体、大小调整和字间距等。- 弹性布局:flex
- 新增多种选择器:伪类选择器、伪元素选择器、属性选择器等
- 通过 column-count 和 column-width 等属性,可以将文本内容分成多列显示,类似报纸或杂志的版面布局。
- 媒体查询允许根据设备的特性和屏幕尺寸来适应不同的样式和布局。通过媒体查询,可以创建响应式网页设计,使网页在不同设备上显示良好。
- CSS3的 filter 属性允许应用各种图形效果到元素上,如模糊、亮度调整、对比度调整、灰度化、色彩反转等,为图像和元素添加特殊的视觉效果。
- 网格布局:Grid
8、position的值有哪些,分别有什么作用?
- static(静态定位):默认值。没有定位,元素出现在正常的流中(忽略
top, bottom, left, right
或者z-index
声明)。 - relative(相对定位):生成相对定位的元素,通过
top,bottom,left,right
的设置相对于其正常(原先本身)位置进行定位。可通过z-index进行层次分级。 - absolute(绝对定位):生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过
"left", "top", "right"
以及"bottom"
属性进行规定。可通过z-index
进行层次分级。 - fixed(固定定位):生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过
"left", "top", "right"
以及"bottom"
属性进行规定。可通过z-index
进行层次分级。
9、::before和::after中双冒号和单冒号有什么区别、作用?
伪元素在 CSS1 中已存在,当时语法是用 : 表示,如 :before 和 :after,后来在 CSS3 中修订,伪元素用 :: 表示,如 ::before 和 ::after,以此区分伪元素和伪类,为了兼容性各浏览器,继续使使用 :after 这种老
语 法表示伪元素。
- 单冒号(:)用于 CSS3 的伪类
- 双冒号(::)用于 CSS3 的伪元素
伪类用于向某些选择器添加特殊的效果。它并不改变任何DOM内容。只是插入了一些修饰类的元素,这些元素对于用户来说是可见的,但是对于DOM来说不可见。伪元素创建了一个虚拟容器,这个容器不包含任何DOM元素,但是可以包含内容。另外,开发者还可以为伪元素定制样式。
伪类与伪元素的本质区别就是是否抽象创造了新元素;可以同时使用多个伪类,而只能同时使用一个伪元素。
10、CSS中单位有哪些?相互之间有什么区别?
px
像素:绝对单位,页面按精确像素展示in
:表示英寸,是一个物理单位,在CSS
中被直接映射成为px; 转换的方法是1in = 96px
- cm:表示厘米,在生活中常用的单位,同样被映射为
px
; 转换方法为1cm = 37.8px
mm
:表示毫米,与cm
类似,转换方法为1mm = 0.1cm = 3.78px
em
:参考物是父元素的font-size
,具有继承的特点。相对单位,基准点为父节点字体的大小,如果自身定义了font-size
按自身来计算(浏览器默认字体是16px
),整个页面内1em
不是一个固定的值。rem
:相对单位,可理解为”root em
”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+
支持。- 百分比%:相对长度单位,相对于父元素的百分比值
vw
和vh
:CSS3
中加入的 相对长度单位,取决于浏览器视窗的宽(高),1vw
即为浏览器视窗宽度的1/100
,适用于依据屏幕宽或高进行的排版,适用于自适应。
11、元素的显示与隐藏?
display:none
隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当他从来不存在。visibility:hidden
隐藏对应的元素,但是在文档布局中仍保留原来的空间。
12、如何绘制一个0.5px的直线?
使用transform
设置scale
函数,代码如下:
height: 1px;
transform: scale(0.5);
13、简单介绍一下Flex布局
Flex布局是html中的弹性布局,需要将指定容器设置为flex布局,通过设置flex属性实现界面布局,flex布局支持:
- 主轴对齐方式:使用
justify-content
调节元素在主轴的对齐方式
flex-start
:默认值,起点开始依次排序flex-end
:终点依次排列center
:沿主轴居中排序space-around
:弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧space-between
:弹性盒子沿主轴均匀排列,空白间距均分在相邻盒子之间space-evenly
:弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等
- 侧轴对齐方式:使用
align-items
调节元素在侧轴的对齐方式