58同城面试总结
前言:面试中问了一些基础的问题,非常能反映基本功是否扎实,很佩服58的工程师!
记录两个印象比较深的两道CSS面试题,面试官对效果实现都是希望多种方法实现,平时的积累需要灵活应用:
1.左固定一个宽度div,右边div宽度自适应,如何实现?
听到这个问题我还挺开心的,因为前两天还写过,当时也是试了几次才写出来,只是没有在意和及时总结。现场回答的非常不好,比较惭愧,回到家第一件事就把这个题模拟了一下:
- 利用绝对定位和padding-left实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
}
.box{
width:100%;
position:relative;
}
.left{
width:300px;
position:absolute;
z-index: 10;
min-height:300px;
background:#f00;
}
.right{
width:100%;
position:absolute;
padding-left: 300px;
box-sizing: border-box;
min-height:300px;
background:#ff0;
}
</style>
</head>
<body>
<div class="box">
<div class="left">我属于左边</div>
<div class="right">我属于右边</div>
</div>
</body>
</html>
2. 写一个弹窗,怎么居中弹窗里的元素?
这个问题平时写的比较多,但疏于整理现场只回答了一个方法,面试官希望有更多方法,现场另举了弹性布局,回来后整理了下,主要有以下四种方法:
1.居中浮动元素:
- 1.1 利用margin负值
.son {
width:600px ;
height:300px;
margin: -150px 0 0 -300px;
position:absolute;/*父元素relative*/
background-color:pink;
left:50%;
top:50%;
}
- 1.2 利用translate
.father {
width: 600px;
height: 600px;
position: relative;
background-color: yellow;
}
.son {
width: 200px;
height: 200px;
background-color: blue;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
- 1.3 利用弹性布局`
.father {
width: 600px;
height: 600px;
background-color: yellow;
display: flex;
justify-content: center;
align-items: center;
}
.son {
width: 200px;
height: 200px;
background-color: blue;
}
- 1.4 利用margin特性
.father {
width: 600px;
height: 600px;
position: relative;
background-color: yellow;
}
.son {
width: 200px;
height: 200px;
background-color: blue;
position: absolute;
margin: auto;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
2.内容居中:
.father{
height: 100px;
line-height:100px;
text-align: center;
background-color:pink;
}
或者:
.father{
display:table-cell;/*对象作为表格单元*/
vertical-align:middle;
text-align:center;
background-color:pink;
}