0


【手撕面试题】HTML+CSS(高频知识点三)

  1. 每天10道题,100天后,搞定所有前端面试的高频知识点,加油!!!,在看文章的同时,希望不要直接看答案,先思考一下自己会不会,如果会,自己的答案是什么?想过之后再与答案比对,是不是会更好一点,当然如果你有比我更好的答案,欢迎评论区留言,一起探讨技术之美。

面试官:清除浮动有哪些方式?

我:呃~,浮动元素会脱离文档流(绝对定位元素也会脱离文档流),导致无法计算准确的高度,这种问题称为:“高度塌陷”。

清除浮动常见的有以下三种方式,整出代码如下:

触发BFC:(有缺陷,会造成内容的溢出隐藏)

  1. <style>
  2. *{margin: 0;padding: 0;}
  3. ul {
  4. list-style: none;
  5. border: 10px solid #ccc;
  6. overflow: hidden; /*触发BFC清除浮动*/
  7. }
  8. ul li {
  9. width: 100px;
  10. height: 100px;
  11. background-color: #f00;
  12. float: left;
  13. }
  14. </style>
  15. <body>
  16. <ul>
  17. <li>1</li>
  18. <li>2</li>
  19. <li>3</li>
  20. </ul>
  21. </body>

**多创建一个盒子,并添加样式:clear:both; **:(不推荐使用,此方法已经过时)

  1. <style>
  2. *{margin: 0;padding: 0;}
  3. ul {
  4. list-style: none;
  5. border: 10px solid #ccc;
  6. }
  7. ul li {
  8. width: 100px;
  9. height: 100px;
  10. background-color: #f00;
  11. float: left;
  12. }
  13. ul div{
  14. clear: both;
  15. }
  16. </style>
  17. <body>
  18. <ul>
  19. <li>1</li>
  20. <li>2</li>
  21. <li>3</li>
  22. <div></div>
  23. </ul>
  24. </body>

给浮动的父元素添加after样式:(推荐使用)

  1. <style>
  2. *{margin: 0;padding: 0;}
  3. ul {
  4. list-style: none;
  5. border: 10px solid #ccc;
  6. }
  7. ul li {
  8. width: 100px;
  9. height: 100px;
  10. background-color: #f00;
  11. float: left;
  12. }
  13. ul::after{
  14. content: '';
  15. display: block;
  16. clear: both;
  17. }
  18. </style>
  19. <body>
  20. <ul>
  21. <li>1</li>
  22. <li>2</li>
  23. <li>3</li>
  24. </ul>
  25. </body>

面试官:在网页中应该使用奇数还是偶数的字体?

我:呃~,应该使用偶数,因为偶数能让文字在浏览器上表现的更好一点,而且UI给前端一般的设计图都是偶数的,这样不管布局也好,转换px也好,方便一点。

面试官:position有哪些值?分别是根据什么定位?

我:呃~,position有如下五个值:

static:默认值,无定位,top、right、bottom、left 不起任何作用

relative:相对定位,不脱离文档流,只有left、top起作用

absolute:绝对定位,脱离文档流,上下左右以最近的定位父元素为参照系

fixed:脱离文档流,上下左右以浏览器视口为参照系

sticky:relative 与 fixed 的结合体

以fixed举例:

  1. <style>
  2. *{margin: 0;padding: 0;}
  3. body{
  4. height: 2000px;
  5. }
  6. .main{
  7. width: 100px;
  8. height: 100px;
  9. left: 20px;
  10. top: 50px;
  11. background-color: #f00;
  12. position: fixed;
  13. }
  14. </style>
  15. <body>
  16. <div class="main">221</div>
  17. </body>

面试官:写一个左中右布局占满屏幕,其中左右俩块固定宽200px,中间自适应,要求先加载中间块,请写出结构及其样式。

我:呃~,好的,整出代码如下:

  1. <style>
  2. *{margin: 0;padding: 0;}
  3. body{width: 100vw;height: 100vh;}
  4. .container{
  5. height: 100%;
  6. width: 100%;
  7. }
  8. .container>div{
  9. float: left;
  10. }
  11. .zhong{
  12. height: 100vh;
  13. width: 100%;
  14. background-color: pink;
  15. }
  16. .zhong .main{
  17. margin: 0 200px;
  18. }
  19. .zuo{
  20. width: 200px;
  21. height: 100vh;
  22. background-color: #f00;
  23. margin-left: -100%;
  24. }
  25. .you{
  26. width: 200px;
  27. height: 100vh;
  28. background-color: #0f0;
  29. margin-left: -200px;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div class="container">
  35. <div class="zhong">
  36. <div class="main"></div>
  37. </div>
  38. <div class="zuo"></div>
  39. <div class="you"></div>
  40. </div>
  41. </body>

面试官:什么是CSS reset?

我:呃~,CSS的默认有一些标签是有特定样式的,而我们因为不需要该样式所有要去除。

reset.css是一个CSS文件,用来重置CSS样式的,官网为:resetcss

Normalize.css是一个CSS样式重置表,为增强跨浏览器渲染的一致性。官网:Normalize.css

两种的区别

normalize.css:会保留有用的样式,比如 h1 的字体大小

reset.css:把所有样式都重置,比如 h1、h2、h3 的字体大小都进行了重置,保持了无样式

如果是普通项目,我个人更倾向于reset.css。

面试官:display: none; 与 visibility: hidden; 的区别?

我:呃~,display: none; :隐藏元素但不占用位置。visibility: hidden; :隐藏元素但占用位置

display: none; 和 visibility: hidden; 都会造成页面重绘,使得页面样式改变,但是display: none; 还会产生一次回流,改变了元素的位置。

面试官:opacity 和 rgba 的区别

共同性:实现透明效果。

  1. opacity:取值范围0到1之间,0表示完全透明,1表示不透明
  2. rgba:R表示红色,G表示绿色,B表示蓝色,取值可以在正整数或者百分数。A表示透明度取值0到1之间。

两者的区别

继承的区别,opacity会继承父元素的opacity属性,而RGBA设置的元素的后代元素不会继承不透明属性。整出代码如下:

  1. <style>
  2. .opacity{
  3. width: 100%;
  4. height: 200px;
  5. font-size: 50px;
  6. font-weight: bold;
  7. background-color: #f00;
  8. opacity: 0.5;
  9. }
  10. .rgba{
  11. width: 100%;
  12. height: 200px;
  13. font-size: 50px;
  14. font-weight: bold;
  15. background-color: #f00;
  16. background: rgba(255, 0, 0, .5);
  17. }
  18. </style>
  19. <body>
  20. <div class="opacity">这是opacity</div>
  21. <hr>
  22. <div class="rgba">这是rgba</div>
  23. </body>

面试官:伪类与伪元素有什么区别?解释一下伪元素的作用

我:呃~,好的,两者的区别如下:

伪类使用单冒号,而伪元素使用双冒号。如 :hover 是伪类,::before 是伪元素

伪元素会在文档流生成一个新的元素,并且可以使用 content 属性设置内容

面试官:rem、em、vw、vh 的值各是什么意思?

我:呃~,好的,他们各值的意思如下:

rem:根据根元素(即 html)的 font-size

em:根据自身元素的 font-size

vw:viewport width

vh:viewport height

面试官:webkit表单输入框placeholder的颜色值能改变吗?

我:呃~,是可以修改的,整出代码如下:

  1. <style>
  2. input::-webkit-input-placeholder{
  3. color: blue;
  4. }
  5. </style>
  6. <body>
  7. <input type="text" placeholder="请输入内容">
  8. </body>

标签: html css css3

本文转载自: https://blog.csdn.net/qq_53123067/article/details/128889561
版权归原作者 亦世凡华、 所有, 如有侵权,请联系我们删除。

“【手撕面试题】HTML+CSS(高频知识点三)”的评论:

还没有评论