CSS面试题汇总-程序员宅基地

技术标签: css  前端  

先别着急,看看下面这些小标题,是否能完整回答上来?不会的直接点标题跳转^v^

1、介绍一下标准的css的盒子模型?低版本的IE的盒子模型有什么不同的?

2、伪类和伪元素有什么区别?列举常用的伪类和伪元素?css选择器优先级是什么?

3、几种常见的css布局?通过什么方式实现?

4、网页中应该使用奇数还是偶数的字体?为什么呢?字体单位有哪些?

5、BFC是什么?有什么用?开发中的应用是什么?

6、知道css有个content属性吗?有什么作用?有什么应用?

7、如何居中一个div?垂直居中有哪些方法?水平居中有哪些方法?垂直水平居中呢?如何居中一个浮动元素?如何让绝对定位的div居中?

8、全屏滚动的原理是什么?用到了css的哪些属性?

9、你对line-height是如何理解的?三种赋值方式有何区别?(带单位、纯数字、百分比)

10、回流和重绘分别是什么?触发条件?性能影响?如何减少回流和重绘?

11、link与@important的区别?


1、介绍一下标准的css的盒子模型?低版本的IE的盒子模型有什么不同的?

· 有两种:怪异(IE)盒子模型、W3C盒子模型;

盒模型:content、padding、border、margin

区别:IE的content部分把border和padding部分算了进去

IE8及其以下版本浏览器,未声明DOCTYPE,内容宽高会包含内填充和边框,成为怪异盒模型( IE盒模型 )

标准(W3C)盒模型:元素宽度 = width + padding +  margin + border

怪异(IE)盒模型:元素宽度 = width + margin

标准浏览器通过设置css3的box-sizing:border-box,触发怪异模式解析宽高。

box-sizing常用的属性有哪些?分别有什么作用?

box-sizing: content-box; 默认的标准(W3C)盒模型

box-sizing:border-box;怪异盒模型

box-sizing:inherit;继承父元素box-sizing属性的值


 2、伪类和伪元素有什么区别?列举常用的伪类和伪元素?css选择器优先级是什么?

伪类和伪元素:共同作用是给元素添加一些特殊的效果或样式

 伪类:用于选择某个元素的特定状态

伪元素:用于创建一些虚拟的元素

伪类:

:hover 用于选择鼠标悬停在元素上时的状态
:active 用于选择元素被激活(例如被点击)时的状态

: focus 用于聚焦时改变状态

: focus-within 元素或者其子元素聚焦时都会匹配

:vistied a是否访问过

:enabled 和:disabled 能访问和不能访问

    注意:a标签设置disabled属性无效,而非a元素配合pointer-events: none实现

:readonly 和:readwrite,匹配是否设置了readonly属性的输入框元素

    注意:只对input和textarea有效

:root 匹配的就是html根元素标签

:first-child和:last-child 用于匹配父元素的第一个/最后一个子元素

:only-child 匹配只有一个子元素的元素

:nth-child(n) 和:nth-last-child(n) 匹配第n个子元素/匹配从后往前数第n个子元素

   注意:

   :nth-child(odd/even) 奇数/偶数

   :nth-child(-n + 3) 匹配前三个元素

:first-of-type 和:last-of-type 匹配那些具有相同标签的第一个/最后一个子元素

:only-type-of 匹配子元素中标签类型与selector元素一致且只有一个的selector元素

   注意:匹配:only-child的元素一定匹配:only-of-type,反之则不一定

:nth-of-type() 和nth-last-type() 匹配那些具有相同标签的第n个/从后往前数n个

:not() 否定伪类

   注意:

:not()伪类自身优先级为0,最终的优先级由()的选择器表达式决定

:not()伪类可以不断级联,如input:not(:disabled):not(:read-only){ }

:is() 可以把括号中的选择器依次分配出去,对于那种复杂的有很多逗号分隔的选择器非常有用

  注意::is()最终的优先级由()的选择器表达式决定

伪元素:

::first-letter 表示第一个字母

::first-line 表示第一行

::selection 选中的内容

::before 元素的开始位置

::after 元素的结束位置

选择器优先级:

!important > id > class > tag   注意:!important 比内联优先级高


 3、几种常见的css布局?通过什么方式实现?

单列布局: 没什么要点,用margin :auto达到水平居中即可

.contenter {
    margin: auto;
}

双列布局


4、网页中应该使用奇数还是偶数的字体?为什么呢?字体单位有哪些?

偶数字号相对更容易和web设计的其他部分构成比例关系。

px:固定值

em:继承父级元素的字体大小,默认1em=16px。em = 像素值 / 父级font-size

rem:相对长度单位,可以做移动适配

html {
    font-size: 20px;
}

<div style="font-size: 1rem;">111</div> //20px
<div style="font-size: 2rem;">222</div> //40px

注意:如何做移动适配:以设计稿400px为例,移动设备 / 设计稿宽度 * x = x px,x为任意整数值


5、BFC是什么?有什么用?开发中的应用是什么?

BFC: 块级格式上下文block formatting context ,是一个独立的渲染区域,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响

应用:

阻止margin重叠;自适应两栏布局;可以阻止元素被浮动元素覆盖;可以包含浮动元素(清除内部浮动)

BFC布局规则:浮动的元素会被父级计算高度(父级元素触发了BFC)

非浮动元素不会覆盖浮动元素的位置(非浮动元素触发了BFC)

margin不会传递给父级(父级触发BFC)

属于同一个BFC的两个相邻元素上下margin会重叠


6、知道css有个content属性吗?有什么作用?有什么应用?

content属性专门应用在before/after伪元素上,用来插入生成内容。最常见的是利用伪类来清除浮动

.clearfix:after {
    content:".";       //这里利用到了content属性
    display:block;
    height:0;
    visibility:hidden;
    clear:both;  //清除左右两边的浮动
 }

7、如何居中一个div?垂直居中有哪些方法?水平居中有哪些方法?垂直水平居中呢?如何居中一个浮动元素?如何让绝对定位的div居中?

水平居中:

1、flex+margin:auto

2、flex+justify-content :center 

3、定位 + bottom + right + top + left 0 + margin : auto

4、grid + justify-self :center + align-self :center

5、定位 + left 50%  + margin-left - 一半的px值

垂直居中:

1、line-height 

水平垂直居中:

1、absolute +  bottom + right + top + left 0 + margin : auto

2、absolute +  left 50% + top 50% + margin-left/top - 一半的px值

3、flex+justify-content :center + align-items:center


 8、全屏滚动的原理是什么?用到了css的哪些属性?

原理类似于轮播图,超出的部分隐藏,滚动时显示

可能用到的css属性:overflow: hidden; transform: translate(100%, 100%); display:none


9、你对line-height是如何理解的?三种赋值方式有何区别?(带单位、纯数字、百分比) 

line-height 指一行字的高度,包含了字间距,实际上是下一行基线到上一行基线的距离

如果一个标签没有定义height属性,那么其最终表现的高度是由line-height决定的

一个内容没有设置高度,那么撑开容器高度的是line-height而不是容器内的文字内容

把line-height值设为height一样大可以实现单行文字的垂直居中

line-height 和 height 都能撑开一个高度,height会触发haslayout,而line-height不会


10、回流和重绘分别是什么?触发条件?性能影响?如何减少回流和重绘?

重绘:当元素的样式改变需要浏览器重新绘制样式

回流:当元素的大小、隐藏、位置改变,需要浏览器重新计算元素几何信息,以及重新渲染页面时,会影响当前元素,祖先元素和后代元素。

触发条件:

  • 添加或删除可见的DOM元素
  • 元素尺寸改变
  • 内容变化,例如用户在input框中输入文字
  • 页面渲染初始化
  • 浏览器窗口尺寸改变 —— 触发重排(回流)。

性能影响:

  • 回流比重绘的代价要高。回流的过程比重绘复杂,因为它涉及到更多的计算。
  • 回流必将引发重绘,而重绘不一定会引发回流。

如何减少回流和重绘:

使用transform替代top。
使用visibility替换display: none —— 因为前者只会触发重绘,后者会触发回流(重排)。
不要使用table布局,因为可能很小的一个小改动会导致整个table的重新布局。
避免在循环中对DOM进行频繁操作,可以使用documentFragment进行批量操作。

container.style.padding = '20px'; //触发回流,改变元素大小
container.style.borderWidth = '5px';
//使用cssText合并成一次操作
container.style.cssText = 'padding: 20px; border-width: 5px;';
let list = document.getElementById('list'),
    frag = document.createDocumentFragment(),
    items = ['Item 1', 'Item 2', 'Item 3'];

// 使用DocumentFragment作操作
items.forEach(item => {
    let li = document.createElement('li');
    li.textContent = item;
    frag.appendChild(li);
});

// 把DocumentFragment一次性添加到DOM中,减少页面回流
list.appendChild(frag);

11、link与@import的区别? 

1、link是HTML方式,@import是css方式

2、link最大限度支持并行下载,@import过多嵌套导致串行下载,出现FOCU(文档样式短暂失效)

3、link可以通过rel = “ alternate stylesheet”指定候选样式

4、浏览器对link支持早于@import,可以使用@import对老浏览器隐藏样式

5、@import必须在样式规则之前,可以在css文件中引用其他文件

6、总体来说,link优于@import

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_48447023/article/details/137949951

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签