CSS面试题
如何理解HTML语义化
HTML语义化就是在书写HTML结构时,使用HTML中具有明显语义化的标签,例如p标签、ul标签、header标签等。增加代码的可读性,让程序员与搜索引擎(SEO)更容易读懂。
块级元素和内联元素
块级元素:display: block/table,p、ul、div、h1等
内联元素:display: inline/inline-block,img、span、input、button
盒模型计算
offsetWidth =(内容宽度+内边距+边框),无外边距
margin纵向重叠
相邻元素的margin-top和margin-bottom会发生重叠,空白内容的p标签也会重叠
margin负值
margin-left和margin-top为负值,自身向左和向上移动;
margin-right和margin-bottom为负值,自身不动,右边和下面的元素向左和向上移动
BFC
position为absolute、fixed
float不为none
overflow不为visible
display为flex、inline-block
圣杯布局
双飞翼布局
flex布局画骰子
javascript
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
.container{
width: 200px;
height: 200px;
border: 1px solid black;
padding: 10px;
display: flex;
justify-content: space-between;
}
.item{
width: 40px;
height: 40px;
background-color: #888;
border-radius: 50%;
}
.item:nth-child(2){
align-self: center;
}
.item:nth-child(3){
align-self: flex-end;
}
line-height继承
javascript
<body>
<p>文字</p>
</body>
body{
font-size: 20px;
line-height: 20px; //此时p标签的line-height为20px
line-height: 1.5; //此时p标签的line-height为16*1.5=24px
line-height: 200%; //此时p标签的line-height为20*200%=40px
}
p{
background-color: #ccc;
font-size: 16px;
}
rem
javascript
//依据根元素font-size决定
html{
font-size: 100px;
}
div{
width: 2rem; //宽度为200px
}
<div>111</div>
vw/vh
javascript
window.screen.height //屏幕高度
window.innerHeight //视口高度,减去浏览器上方、下方,真正元素放置的地方
document.body.clientHeight //元素撑起的高度
1vw //网页视口宽度的1/100
1vh //网页视口高度的1/100