在前端面试中,八股文属于必考项,其中css就是不可或缺的一部分,具备扎实的CSS基础不仅是从事前端工作的基本要求,还是进阶到高级工程师的必经之路,最近整理了一些面试题,接下来都会一一和大家进行分享。
一般这种题目都有回答的套路
这就是盒模型的结构,如果面试官让你画一个盒模型,就画上面这个图就行了,我们一般写的width和height这两个属性其实是content的几何属性,实际上盒子的真实宽度应该是width + padding + border + margin,这里盒子模型又被分为两种,标准盒模型和怪异盒模型(IE盒模型)
.box{ width: 300px; height: 300px; border: 5px solid #000; padding: 10px; margin: 20px; box-sizing: border-box; /* 要求浏览器以IE盒模型来加载容器*/ box-sizing: content-box; /* 要求浏览器以标准盒模型来加载容器*/ }
优先级: !important > 内联 > id选择器 > 类名选择器 > 标签选择器
<style> #app{ width: 400px; height: 400px; border: 1px solid #000; } .box1, .box2, .box3{ width: 100%; height: 100px; background-color: burlywood; margin-bottom: 10px; /*!important用于提高样式权重*/ font-size: 16px !important ; } h2{ color: purple; } #app div{ 后代选择器,全部都会被选中 border: 2px solid red; } #app > div{ 子元素选择器(子选择器) 不会全部选中 border: 2px solid red; } .box1 + .box2{ 相邻兄弟选择器,选中相邻box1的box2 border: 2px solid red; } #app .box2{ 群组选择器 border: 2px solid red; } input[abc='abc']{ 属性选择器 border: 2px solid red; } input::before{ 伪元素选择器 content: '00'; display: block; } input:hover{ 伪类选择器 background-color: aqua; } </style> <body> <input type="text" abc="'abc"> /*内联是直接在标签里面写样式,例如:*/ <div style="color: red; font-size: 16px;"></div> </body>
无法响应事件指的是这个元素绑定的监听事件失效,这里给大家解释一下visibility和clip-path visibility就是控制元素的可见性,它一共有两个属性值visible 和 hidden
clip-path用于创建一个裁剪区域,可以用来隐藏元素的部分内容或者定义元素的可见区域。它可以基于形状、SVG 路径或者基本形状来定义裁剪区域。
.box{ visibility: hidden; clip-path: circle(0%) }
<style> *{ margin: 0; padding: 0; } ul{ margin-top: 100px; background-color: antiquewhite; /* overflow: hidden; */ } li{ list-style: none; width: 200px; height: 50px; background-color: brown; /* float: left; */ margin-top: 30px; } </style></head><body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul></body>
举一个简单的例子,根据上面的代码,li应该距离ul顶部有30px,可是实际上的效果却是这样的
子元素的margin-top和父容器发生重叠了,这个时候就要让父容器变为BFC容器,我们加上overflow: hidden,现在就正常了
<style> .box{ width: 500px; height: 500px; background-color: antiquewhite; /* position: relative; */ /* display: flex; justify-content: center; align-items: center; */ /* display: grid; justify-content: center; align-items: center; */ display: table-cell; text-align: center; vertical-align: middle; } .wrap{ height: 200px; width: 200px; background-color: aquamarine; position: absolute; left: 50%; top: 50%; /* transform: translate(-50%,-50%); */ margin-left: -100px; margin-top: -100px; } </style>
本篇文章列举出了一部分css考点,还有一些比较重要的考点,比如说三栏布局的实现,动画的实现,用css绘制三角形等我们就放到下一篇文章来继续给大家讲解,写作不易,如果你觉得这篇文章对你有用的话就点个赞再走吧