每天十道前端面试题第三天

1.介绍一下标准的CSS的盒子模型;与低版本IE的盒子模型有什么不同;

  • 标准的盒子模型:宽度=内容宽度(content)+padding+border+margin;

  • 低版本IE盒子模型:宽度=内容宽度(content+padding+border)+margin;

2.什么是Sass和Less;

Sass和Less都属于CSS预处理器,那什么是 CSS 预处理器呢?CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行CSS的编码工作。通俗来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。

3.Sass与Scss是什么关系?

Scss是 Sass 3 引入的新语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能。Sass的缩排语法,对于写惯CSS前端的web开发者来说很不直观,也不能将CSS代码加入到Sass里面,因此Sass语法进行了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是用{}取代了原来的缩进。

区别:

Scss 和 Sass 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:

  1. 文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 Scss 是以“.scss”后缀为扩展名。
  2. 语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 Scss的语法书写和我们的 CSS 语法书写方式非常类似。

4.Stylus、Sass和Less的区别;

  • 均具有“变量”、“混合”、“嵌套”、“继承”、“颜⾊混合”五⼤基本特性;
  • Sass 和Less 语法较为严谨,Less要求⼀定要使⽤⼤括号“{}”, Sass 和 Stylus 可以通过缩进表示层次与嵌套关系;
  • Sass ⽆全局变量的概念,Less和 Stylus 有类似于其它语⾔的作⽤域概念;
  • Sass 是基于 Ruby 语⾔的,⽽ less和 Stylus 可以基于 NodeJS NPM 下载相应库后进⾏编译;

推荐文章:Sass、LESS 和 Stylus区别总结_匪鉴-CSDN博客_stylus和sass和less的区别

 5.为什么要使用CSS预处理器? 

     JS中可以自定义变量,而CSS仅仅是一个标记语言,不是编程语言,因此不可以自定义变量,不可以引用等等。

       CSS有具体以下几个缺点:

  • 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
  • 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。

       这就导致了我们在工作中无端增加了许多工作量。而使用CSS预处理器,提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了我们的开发效率。

       但是,CSS预处理器也不是万金油,CSS的好处在于简便,随时随地被使用和调试。预编译CSS步骤的加入,让我们开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用

       所以我们在实际项目中衡量预编译方案时,还是得想想,比起带来的额外维护开销,CSS预处理器有没有解决更大的麻烦。

6.CSS选择器有哪些?有哪些属性可以继承;

  • 基础选择器:标签选择器(div)、类选择器(.box)、id选择器(#name)、通配符选择器(*);
  • 组合选择器:并集选择器(div,p)、后代选择器(div p)、子元素选择器(div>p)、兄弟选择器(div+p)、伪类选择器(a:hover/li:nth-child)、属性选择器(input[value="密码"])。

可继承的属性:

1、字体系列属性:font、font-family、font-weight、font-size、font-style、font-variant等;
2、文本系列属性:color、text-indent、text-align、line-height、word-spacing、letter-spacing、text-transform等;

...

7.CSS优先级算法如何计算?

优先级可以分为六个等级:

  • 第一个等级是!important,优先级最高
  • 第二个等级是内联样式 1000
  • 第三个等级是id选择器  0100
  • 第四个等级是类选择器,伪类选择器,属性选择器是0010
  • 第五个等级是元素选择器和伪元素选择器是0001.
  • 第六个是继承得到的属性,优先级最低

规则中每出现一个选择器,就将它们进行叠加,这个叠加只限于对应的等级的叠加,不会产生进位。如果权重相同:采用就近原则。

8.对BFC规范的理解;

BFC(Block Formatting context):块级格式化上下文。是CSS中的一个渲染机制,BFC就相当于一个盒子,内部的元素与外界的元素互不干扰。它不会影响外部的布局,外部的布局也不会影响到它。

形成条件(满足任意一条即可):

  1. 浮动元素float:除了none
  2. 绝对定位元素: position: absolute fixed
  3. display为inline-block table-cells flex
  4. overflow除了visible以外的值(hidden auto scroll)

特性:

  1. 内部的盒子会在垂直方向上一个接一个的放置;
  2. 对于同一个BFC的俩个相邻的盒子的margin会发生重叠,与方向无关;
  3. 每个元素的左外边距与包含块的左边界相接触(从左到右),即使浮动元素也是如此;
  4. BFC的区域不会与float的元素区域重叠;
  5. 计算BFC的高度时,浮动子元素也参与计算;
  6. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不影响外面的元素,反之亦然。

9.BFC有哪些应用;

1)解决margin叠加(外边距合并)的问题

margin叠加问题只会发生在margin上下。当上元素设置margin-bottom值,而下元素设置margin-top值时,真正产生作用的是只有它们两个谁设置值最大,谁起作用,而另一个就失效了。

2)解决margin传递问题

当子元素设置margin-top值时,真正移动的是父元素,而子元素还是在父元素原本的位置上跟着父元素一起移动。

3)解决浮动问题

当子元素浮动。父元素没有设置高度时,就会发生高度塌陷,就不会在页面中占据位置;最常见的用法就是在父元素上设置overflow: hidden样式。

4)解决覆盖问题(经典布局:左边固定、右边自适应

元素覆盖,上层元素浮动之后,下层未浮动元素会被去占据浮动元素的位置,从而形成了覆盖。但是文字却不会被覆盖。

10.什么是FOUC?如何避免;

FOCU(Flash of unstyled Content ):在引用css的过程中,如果方法不当或者位置引用不对,会导致某些页面在windows下的ie出现一些奇怪的现象,以无样式显示页面内容的瞬间闪烁,这种现象称之为文档样式短暂失效,简称FOCU。

原因大致为:
1,使用import方法导入样式表;

2,将样式表放在页面底部 ;

3,有几个样式表,放在html结构的不同位置。

原理:
当样式表晚于结构性html 加载,当加载到此样式表时,页面将停止之前的渲染。 此样式表被下载和解析后,将重新渲染页面,也就出现了短暂的花屏现象。

解决方法:
使用link标签将样式表放在文档<head>中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值