程序员的知识教程库

网站首页 > 教程分享 正文

前端面试之css相关内容整理(前端的css)

henian88 2024-08-16 17:36:31 教程分享 7 ℃ 0 评论

1.说说盒模型? box-sizing常用的属性有哪些?分别有什么作用?

答:css盒模型是css规范的一个模块,每个元素由一个方形的盒子表示。 该盒子包含有内容区域(content)、内边框区域(padding)、边框区域(border)、外边框区域(margin)

内容区域:元素真实内容,包含背景、颜色或图片,大小为content-box

内边距区域padding: 如果内容区域设置了背景、颜色或图片,这些样式为延伸到padding上

box-sizing的常用属性:

  • content-box是默认属性(w3c标准盒模型),width和height只是内容的宽和高,并不包括padding、border、margin。上面展示的child实际渲染的宽高为260 * 160
  • border-box(IE盒模型), width和height包含了padding和border,但不不含margin。上面展示的child实际渲染的宽高为220 * 120,多了margin的宽高

2.居中的问题,是不经常碰到呢,哈哈

水平居中

  • 容器上定义一个width,然后设置margin: auto/margin: 0 auto;
  • 父容器的text-align: center,子容器的display:inline-block
  • 绝对定位,left: 50%; (margin-left: -宽度/2 或者css3 transform: translate(-宽度/2, 0),其中宽度不确定情况可以使用translate(-50%, 0))
  • flex方式, justify-content: center

垂直居中

  • 单行文本line-height
  • 行内块级元素 display:inline-block; vertical-align: middle;
  • 元素高度不定,vertical-align只在父层为td或th时生效,并且父元素display: table,其它不起作用, 子元素display: table-cell; vertical-align:middle;
  • 绝对定位,top: 50%; (margin-top: -高度/2 或者css3 transform: translate(0, -高度/2),其中高度不确定情况可以使用translate(0,-50%))
  • flex方式,align-items: center;

3.如何确定选择器优先级

答:内敛样式 》 id选择器(0100) 》 类选择器(属性选择器,伪类) 》 类型选择器(伪元素 0001) 》 通配符(0000)

但是!important会覆盖上面所有

4.BFC是什么?(这个平时很少关注,但面试也不能遗漏)

答:BFC即为Block-formatting-context(块级格式化上下文),它是页面的一块渲染区域,这个区域与外部无关。它有自己的渲染规则,决定了子元素的位置以及和其它元素的关系和作用。

规则

  • 内部的box垂直方向一个一个放置
  • 垂直方向距离由margin决定,相邻两个box的margin会发生重叠。
  • BFC是页面上的独立区域,不受外面元素的影响。
  • 每个元素的margin box左边,与包含块的border box左边相接触
  • BFC区域不会与float box重叠
  • 计算BFC的高度时,浮动元素参与计算

哪些会生成BFC

  • 根元素
  • float不为none
  • position为absolute或fixed
  • display: inline-block, table-cell, table-caption, flex, inline-flex
  • overflow为hidden, scroll, auto(不为hidden)

其中,下面第5个问题就会涉及到BFC的相关知识

5.为什么清除浮动?如何清除浮动?

答:一个块级元素的高度如果没有设置height,那么其高度由子元素撑开,如果子元素设置float,它脱离了文档流,父元素的高度会忽略。 为了使父元素高度撑起来,需要清除浮动。

清除浮动方法包括操作父元素和操作子元素:

  • 操作父元素,涉及到上面的BFC,这个比较容易被忽略原理哦哦哦
  • 对子元素进行操作

6.页面导入样式时,使用link和@import有什么区别?

答:

  • 加载内容:link是xhtml标签,除了能加载css外,还能加载rss(简单信息聚合——xml文件);@import只能加载css文件
  • 加载顺序: link在页面载入的同时加载;@import的css是在页面加载完毕后被加载。
  • 兼容性问题:link无兼容性问题; @import是css2.1里提出的,低版本不兼容
  • dom控制问题: link样式,在js中操作dom可修改样式;@import不支持修改

7.CSS3哪些新特性? 新增伪类有那些?

答:css3新特性:圆角(border-radius)、阴影(box-shadow\text-shadow)、渐变(gradients)、过度与动画(transition and animations),新的布局方式:多列布局(column)、flex、grid。

8.说下行内元素和块级元素的区别?行内块元素的兼容性使用?

答:

  • 布局上: 行内元素在一行展示,水平排列;块级元素占据一行,垂直排列
  • 结构上: 行内元素不可以插入块级元素,块级元素可以插入行内元素
  • 属性上: 行内元素设置width、height无效,margin和padding上下无效。比较常用的行内元素: a、b、em、i、img、input、label、span、strong、sub、sup、textarea

行内块元素的兼容性使用:

9.zoom的作用?

  • 检查页面是否闭合
  • 样式排除法
  • 检查是否清除浮动
  • IE是否触发haslayout

10.父容器width和height分别为200 * 100, 子元素设置margin:50%时(考点包括margin百分比都是针对宽度,内联的上下都不起作用

  • 子元素的margin的百分比针对于父元素的Width
  • 子元素margin:50%时,左右margin为100px,加自身的width超出了父元素宽度的范围,此时后面的元素会换行。因此,图中的'2222'虽然是inline-block方式,也在下一行。除非前一个margin的左右百分比之和小于50%,才会展示在一排
  • 图中可以看出,子元素margin-top也是50%,所以父元素没有全包子元素,如果希望父元素全包子元素,可以通过在父元素添加overflow: scroll破坏BFC

11.使用css重新定义checkbox(https://github.com/xiaosunJessica/summary/blob/master/html/css-checkbox.html)

a. 结合input[type='checkbox']和label

b.input[type='checkbox']隐藏掉, label添加伪元素放在input位置处

c.input状态为checked时,将label的伪元素content进行修改

12.AB里面的容器不等高,如何做到使两个背景等高?

  • 通过flex方式,让父元素display: flex;
  • 通过position方式,例如:左侧高度固定,父元素position: relatvie; 右侧position: absolute; top: 0; bottom: 0;
  • 父元素display: table; 两个子元素display: table-cell.
  • 父元素使用display: grid; grid-template-colums: 1fr 200px;分为两列,子元素通脱grid-colum: 1/2占左边,另个占右边。

13.position的理解

14.px、em、rem

答:px是相对于显示器屏幕分辨率而言的。

em是相对于当前对象的文本的字体尺寸,如果当前对行内文本的字体尺寸未被设置,则依次向上查找直到相对于浏览器的默认字体

rem是相对于html根元素(比较推荐)

最后浏览器默认字体是16px,要设置一对一的对应关系,需要设置font-size:62.5%

最后的最后,欢迎大家吐槽和提建议和意见!!!

整理不全忘补充!!!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表