关于前端面试的题,最近整理了一些干货,经常被问到的一些问题,出现频率比较高的问题,如有不足之处,请高调指出,(⭐代表难度,星星越多越难,以次类推),此篇文章为面试题的css篇
自建博客文章链接:https://www.heblogs.cn
参考文献https://www.w3school.com.cn/css/css_boxmodel.asp
标准盒模型:外边距+边框+内边距+内容
低版本的怪异盒模型:边框+内边距+内容
使用box-sizing更改模型
1、div绝对定位水平垂直居中 + 上下左右0
div{
width: 200px;
height: 200px;
position:absolute;
left:0;
top: 0;
bottom: 0;
right: 0;
margin: auto;
}
2、div绝对定位水平垂直居中 + margin负间距
div{
width:200px;
height:200px;
position: absolute;
left:50%;
top:50%;
margin-left:-100px;
margin-top:-100px;
}
3、div绝对定位水平垂直居中 + transforms
div{
width: 200px;
height: 200px;
position:absolute;
left:50%;
top:50%;
transform: translate(-50%,-50%);
}
4、flex上下左右居中
.father{
display:flex;
justify-content:center;
align-items:center;
}
.father>son{
width: 200px;
height: 200px;
}
5、利用table的vertical-align实现
.father {
display: table-cell;
vertical-align: middle;
}
position参考文献:https://www.w3school.com.cn/css/css_positioning.asp
display参考文献:
https://www.w3school.com.cn/cssref/pr_class_display.asp
position有5个属性 static、relative、fixed、absolute、sticky
display(讲几个常见的就好):
css画三角形可以用border、linear-gradient、clip-path等,这里只讲border,一般面试也是问这个。利用border这个特性我们跨域这么写
.triangle {
width: 0;
height: 0;
border-left: 69px solid transparent;
border-right: 69px solid transparent;
border-bottom: 120px solid skyblue;
}
1.display:none(不占据空间,引起回流,没有点击事件,不能继承)
2.visibility:hidden(占据空间,引起重绘,没有点击事件,能够继承)
3.opacity:0(占据空间,没有回流重绘,有点击事件,能够继承)
4.position:absolute left:-9999px或top:-9999px; (脱离文档流,至于页面不可见区域内)
5.通过设置width:0+font-size:0;或heigh:0+font-size:0(缩小可视范围至0)
6.z-index为负值(隐藏在其他文档流之下)
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.box1 { width: 200px; height: 100px; background-color: red; }
.box2 { width: 100px; height: 50px; padding: 10%; background-color: blue; }
</style>
</head>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
</html>
答案:考点在padding的百分比是以父元素的宽度而定padding为200*10% = 20,既上下左右都撑开20px,既width=100+20+20=140,height=50+20+20=90
参考文献:https://www.w3school.com.cn/cssref/pr_transform.asp
p {
border:1px solid #000000;
transform:scale(0.5);
}
//主要代码为 text-overflow: ellipsis 和 line-clamp: 2;
//一行
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
//两行
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
line-clamp: 2;
-webkit-box-orient: vertical;
概念:Block Formatting Contexts 即块级格式化上下文,它是一个独立的渲染区域,
触发:
应用:
伪类用于定义元素的特殊状态。
伪元素用于设置元素指定部分的样式
伪类参考文献:https://www.w3school.com.cn/css/css_pseudo_classes.asp
伪元素参考文献:https://www.w3school.com.cn/css/css_pseudo_elements.asp
随便记几个就行哈
弹性布局参考文献:https://www.w3school.com.cn/css/css3_flexbox.asp
常见的容器属性
简单说一些例如,圆角、边框图像、边框背景、渐变、盒子阴影、图像比object-fit、动画、过度、弹性布局、媒体查询等
top、left、width等改变是占用CPU时间
translate没有CPU时间,我看了很多帧,除了少部分帧有0.1ms左右的脚本执行时间之外,大部分帧的CPU时间都是0。他是占用系统 RAM 与 GPU(在移动设备上尤其有限)的内存
参考文献:https://www.runoob.com/note/72255
"stylesheet" href="./index.css">
CSS的选择器有很多种,而最终某个样式的值只能取其中一个,所以必然存在优先级和覆盖。
权重,简单地说就是为了便于我们计算优先级,给每种选择器赋予的一个值,权重值可以叠加计算,值越大优先级越高。
文献参考:https://www.w3school.com.cn/css/css3_animations.asp
/* 动画代码 */
@keyframes example {
from {background-color: red;}
to {background-color: yellow;}
}
/* 向此元素应用动画效果 */
div {
width: 100px;
height: 100px;
background-color: red;
animation-name: example;
animation-duration: 4s;
}
不需要背多全,只需要知道有这些东西,能够在使用的时候快速找到api文档的所在位置