公司面试题总结(一)

1.说说你对盒子模型的理解,如何切换

当对一个文档进行布局的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型,
将所有元素表示为一个个矩形的盒子
content,即实际内容,显示文本和图像
boreder,即边框,围绕元素内容的内边距的一条或多条线,由粗细、样式、颜色三
部分组成
padding,即内边距,清除内容周围的区域,内边距是透明的,取值不能为负,受盒
子的 background 属性影响
margin,即外边距,在元素外创建额外的空白,空白通常指不能放其他元素的区域

盒子模型可以分成:

W3C 标准盒子模型,是浏览器默认的盒子模型
o 盒子总宽度 = width + padding + border + margin;
o 盒子总高度 = height + padding + border + margin
o 也就是,width/height 只是内容高度,不包含 padding 和 border 值
IE 怪异盒子模型
o 盒子总宽度 = width + margin;
o 盒子总高度 = height + margin;
o 也就是,width/height 包含了 padding 和 border 值
Box-sizing
定义了引擎应该如何计算一个元素的总宽度和总高度
content-box 默认值,元素的 width/height 不包含 padding,border,与标准盒子
模型表现一致
border-box 元素的 width/height 包含 padding,border,与怪异盒子模型表现一
inherit 指定 box-sizing 属性的值,应该从父元素继承

2. css 选择器有哪些?优先级?哪些属性可以继承?

css 选择器

id 选择器(#box),选择 id 为 box 的元素
类选择器(.one),选择类名为 one 的所有元素
标签选择器(div),选择标签为 div 的所有元素
后代选择器(#box div),选择 id 为 box 元素内部所有的 div 元素
子选择器(.one>one_1),选择父元素为.one 的所有.one_1 的元素
相邻同胞选择器(.one+.two),选择紧接在.one 之后的所有.two 元素
群组选择器(div,p),选择 div、p 的所有元素 还有一些使用频率相对没那么多的选择器:
伪类选择器
o :link:选择未被访问的连接
o :visited:选取已被访问的链接
o :active:选择活动链接
o :hover:鼠标指针浮动在上面的元素
o :focus:选择具有焦点的
o :first-child:父元素的首个子元素
伪元素选择器
o :first-letter :用于选取指定选择器的首字母
o :first-line :选取指定选择器的首行
o :before : 选择器在被选元素的内容前面插入内容
o :after : 选择器在被选元素的内容后面插入内
属性选择器
o [attribute]选择带有 attribute 属性的元素
o [attribute=value]选择所有使用 attribute=value 的元素
o [attribute~=value]选择 attribute 属性包含 value 的元素
o [attributel=value]:选择 attribute 属性以 value 开头的元素
在 CSS3 中新增的选择器有如下:
o 层次选择器(p~ul),选择前面有 p 元素的每个 ul 元素
o 伪类选择器
:first-of-type 表示一组同级元素中其类型的第一个元素
:last-of-type 表示一组同级元素中其类型的最后一个元素
:only-of-type 表示没有同类型兄弟元素的元素
:only-child 表示没有任何兄弟的元素
:nth-child(n) 根据元素在一组同级中的位置匹配元素
:nth-last-of-type(n) 匹配给定类型的元素,基于它们在一组兄弟元
素中的位置,从末尾开始计数
:last-child 表示一组兄弟元素中的最后一个元素
:root 设置 HTML 文档
:empty 指定空的元素
:enabled 选择可用元素
:disabled 选择被禁用元素
:checked 选择选中的元素
:not(selector) 选择与 <selector> 不匹配的所有 元素
属性选择器
o [attribute*=value]:选择 attribute 属性值包含 value 的所有元素选择
o [attribute^=value]: attribute 属性开头为 value 的所有元素
o [attribute$=value]:选择 attribute 属性结尾为 value 的所有元素

优先级

内联 > ID 选择器 > 类选择器 > 标签选择器
如果存在内联样式,那么 A = 1, 否则 A = 0 B 的值等于 ID 选择器出现的次数
C 的值等于 类选择器 和 属性选择器 和 伪类 出现的总次数
D 的值等于 标签选择器 和 伪元素 出现的总次数
比较规则:
从左往右依次进行比较 ,较大者优先级更高
如果相等,则继续往右移动一位进行比较
如果 4 位全部相等,则后面的会覆盖前面的
内联样式的优先级最高,如果外部样式需要覆盖内联样式,就需要使用!important

继承属性

字体系列属性
o font:组合字体
o font-family:规定元素的字体系列
o font-weight:设置字体的粗细
o font-size:设置字体的尺寸
o font-style:定义字体的风格
o font-variant:偏大或偏小的字体
文本系列属性
o text-indent:文本缩进
o text-align:文本水平对刘
o line-height:行高
o word-spacing:增加或减少单词间的空白
o letter-spacing:增加或减少字符间的空白
o text-transform:控制文本大小写
o direction:规定文本的书写方向
o color:文本颜色
元素可见性
o visibility
表格布局属性
o caption-side:定位表格标题位置
o border-collapse:合并表格边框
o border-spacing:设置相邻单元格的边框间的距离
o empty-cells:单元格的边框的出现与消失
o table-layout:表格的宽度由什么决定
列表属性
o list-style-type:文字前面的小点点样式
o list-style-position:小点点位置
o list-style:以上的属性可通过这属性集合
引用
o quotes:设置嵌套引用的引号类型
光标属性
o cursor:箭头可以变成需要的形状
继承中比较特殊的几点:
a 标签的字体颜色不能被继承 h1-h6 标签字体的大下也是不能被继承的
无继承的属性
display
文本属性:vertical-align、text-decoration
盒子模型的属性:宽度、高度、内外边距、边框等
背景属性:背景图片、颜色、位置等
定位属性:浮动、清除浮动、定位 position 等
生成内容属性:content、counter-reset、counter-increment
轮廓样式属性:outline-style、outline-width、outline-color、outline
页面样式属性:size、page-break-before、page-break-after

3. 元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

实现元素水平垂直居中的方式:

使用 Flexbox 布局:

o 将父容器的 display 属性设置为 flex,
o 然后使用 align-items 和 justify-content 属性分别设置为 center,

使用绝对定位和负边距:

o 父级设置为相对定位,子级绝对定位,
o 并将 left 和 top 属性设置为 50%,
o 然后使用负边距将子级向左和向上移动自身宽度和高度的一半
o 不要求父元素的高度

使用 table 布局:

o 设置父元素为 display:table-cell,
o 子元素设置 display: inline-block。
o 父元素利用 vertical 和 text-align 可以让所有的行内块级元素水平垂直居中
o vertical-align: middle;
o text-align: center

使用 grid 布局:

o 将父容器的 display 属性设置为 grid,
o 并使用 justify-items 和 align-items 属性分别设置为 center,

使用 transform 和 translate 方法:

o 不需要知道自身元素的宽高
o 父级设置为相对定位,子级绝对定位
o translate(-50%, -50%)将子级水平和垂直方向上平移自身宽度和高度的一半

利用定位+margin:auto

o 父级设置为相对定位,子级绝对定位
o 四个定位属性的值都设置了 0
o 如果子级没有设置宽高,则会被拉开到和父级一样宽高
o 子元素设置了宽高,实际上子级的虚拟占位已经撑满了整个父级
o margin:auto 就可以上下左右都居中

内联元素居中布局

o 水平居中

行内元素可设置:text-align: center
flex 布局设置父元素:display: flex; justify-content: center

o 垂直居中

单行文本父元素确认高度:height === line-height
多行文本父元素确认高度:display: table-cell; vertical-align: middle

块级元素居中布局

o 水平居中

定宽: margin: 0 auto
绝对定位+left:50%+margin:负自身一半

o 垂直居中

position: absolute 设置 left、top、margin-left、margin-top(定高)
display: table-cell
transform: translate(x, y)
flex(不定高,不定宽)
grid(不定高,不定宽),兼容性相对比较

4. 怎么理解回流跟重绘?什么场景下会触发?如何减少回流和重回

Html 的渲染流程:dom 节点 dom 树 css 生成 OM Html 分为 dom+css
回流(重排):获取尺寸大小 生成几何 重绘:根据像素渲染 回流一定重绘
回流: 布局引擎会根据各种样式计算每个盒子在页面上的大小与位置
重绘: 当计算好盒模型的位置、大小及其他属性后,浏览器根据每个盒子特性进行绘制

浏览器解析渲染机制:

解析 HTML,生成 DOM 树,解析 CSS,生成 CSSOM 树
将 DOM 树和 CSSOM 树结合,生成渲染树(Render Tree)
Layout(回流):根据生成的渲染树,进行回流(Layout),得到节点的几何信息(位置,大小)
Painting(重绘):根据渲染树以及回流得到的几何信息,得到节点的绝对像素
Display:将像素发送给 GPU,展示在页面上

回流触发时机

添加或删除可见的 DOM 元素
元素的位置发生变化
元素的尺寸发生变化(包括外边距、内边框、边框大小、高度和宽度等)
内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代
页面一开始渲染的时候(这避免不了)
浏览器的窗口尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)

重绘触发时机

触发回流一定会触发重绘
颜色的修改
文本方向的修改
阴影的修改

减少回流和重回

想设定元素的样式,通过改变元素的 class 类名 (尽可能在 DOM 树的最里层)

• 避免设置多项内联样式

应用复杂的元素动画,使用 position 属性 fixed 值或 absolute 值
避免使用 table 布局,每个元素的大小以及内容的改动,导致整个 table 的重新计算
使用 css3 硬件加速,可以让 transform、opacity、filters 这些动画不会引起回流重绘
避免使用 CSS 的 JavaScript 表达式

5. 什么是响应式设计?响应式设计的基本原理是什么?如何做?

适配 rem(根元素字体大小) em(父元素字体大小)媒体查询 vw/vh(性能问题) %
响应式网站设计 是一种网络页面设计布局,页面的设计与开发应当根据用户行为以及设备环
境(系统平台、屏幕尺寸、屏幕定向等)进行相应的响应和调整
响应式设计的基本原理 是通过媒体查询检测不同的设备屏幕尺寸做处理,为了处理移动端,
页面头部必须有 meta 声明 viewport

属性对应:

width=device-width: 是自适应手机屏幕的尺寸宽度
maximum-scale:是缩放比例的最大值
inital-scale:是缩放的初始化
user-scalable:是用户的可以缩放的操作

实现响应式布局的方式有如下:

媒体查询

o 设置不同类型的媒体条件,并根据对应的条件,
o 给相应符合条件的媒体调用相对应的样式表
o 当视口在 375px - 600px 之间,设置特定字体大小 18px
@media screen (min-width: 375px) and (max-width: 600px) {
body {
font-size: 18px;
}
}

百分比

o 当浏览器的宽度或者高度发生变化时,通过百分比单位
o 浏览器中的组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果

vw/vh

o vw 表示相对于视图窗口的宽度,
o vh 表示相对于视图窗口高度。
o 任意层级元素,在使用 vw 单位的情况下,1vw 都等于视图宽度的百分之一

rem

o rem 是相对于根元素 html 的 font-size 属性
o 默认情况下浏览器字体大小为 16px,此时 1rem = 16px

6. 如果要做优化,CSS 提高性能的方法有哪些?

内联首屏关键 CSS

o 使浏览器在下载完 html 后就能立刻渲染
o 注意:较大的 css 代码并不合适内联(初始拥塞窗口、没有缓存)

异步加载 CSS

o 使用 javascript 将 link 标签插到 head 标签最后
o 设置 link 标签 media 属性为 noexist
        ▪ 浏览器认为当前样式表不适用当前类型,会在不阻塞页面渲染的情
        况下再进行下载。
        ▪ 加载完成后,将 media 的值设为 screen 或 all,从而让浏览器开始解
        析 CSS
o 通过 rel 属性将 link 元素标记为 alternate 可选样式表,
        ▪ 加载完成之后,将 rel 设回 stylesheet

资源压缩

o 利用 webpack、gulp/grunt、rollup 等模块化工具
o 将 css 代码进行压缩,使文件变小,大大降低了浏览器的加载时间

合理使用选择器

o 不要嵌套使用过多复杂选择器,最好不要三层以上
o 使用 id 选择器就没必要再进行嵌套
o 通配符和属性选择器效率最低,避免使用

减少使用昂贵的属性

o 如 box-shadow/border-radius/filter/透明度/:nth-child 等,
o 在页面发生重绘的时候,昂贵属性会降低浏览器的渲染性能

不要使用@import

o css 样式文件有两种引入方式,一种是 link 元素,另一种是@import
o @import 会影响浏览器的并行下载,使得页面在加载时增加额外的延迟,增
添了额外的往返耗时
o 而且多个@import 可能会导致下载顺序紊乱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

export 和 export default 的区别

在 JavaScript 中&#xff0c;export 和 export default 都是用于导出模块中的内容的关键字&#xff0c;但它们有一些区别&#xff1a; export: export 关键字用于导出多个变量、函数或对象。可以一次导出多个内容&#xff0c;并且在导入时需要使用对应的名称。例如&#xff1a…

qmt量化交易策略小白学习笔记第18期【qmt编程之获取对应周期的北向南向数据--方式2:原生python】

qmt编程之获取对应周期的北向南向数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 获取对应周期的北向南向数据 提示 该数据通过get_market_data_ex接口获取获取历史数据前需要先用downl…

增加强制索引依然慢

版本: 阿里云RDS MySQL 8.0.25 线上数据库CPU达到100%, 定位到如下SQL EXPLAIN SELECT ssd.goods_no,ssd.goods_name,ssd.goods_spec,ssd.goods_unit,ssd.create_time,w.warehouse_name,sb.batch_no,swl.warehouse_region_location_name,sc.customer_name AS goodsOwnerName,s…

idm2024最新完美破解版免费下载 idm绿色直装版注册机免费分享 idm永久激活码工具

IDM 2024破解版重新开发了调度程序和MMS协议支持、重新设计和增强的下载引擎、与所有最新浏览器的独特高级集成、改进的工具栏以及大量其他改进和新功能&#xff0c;这一全新的更新&#xff0c;使得IDM下载器更加完美。值得一提的是&#xff0c;它可以借助油猴浏览器的脚本&…

Maven核心功能依赖和构建管理

1.依赖管理和配置 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中&#xff0c;避免出现版本冲突和依赖缺失等…

苹果手机618大降价重登销量榜首 红米K70pro为何成京东618国产手机之光

今天的618已经好几天了&#xff0c;很多买有机的已经下单&#xff0c;不出意外苹果15系列手机仍然是最卖座的手机&#xff0c;大家虽然口号喊得很响身体却是诚实的。但令人感到意外的是&#xff0c;今年618国产手机的第一把交椅确实红米K70系列&#xff0c;说好的支持华为呢&am…

45-4 护网溯源 - 溯源相关思路

一、先了解国家的相关法规 根据中华人民共和国网络安全法和刑法相关规定,严禁从事危害网络安全的活动,包括但不限于入侵他人网络、扰乱网络正常功能、窃取网络数据等行为。任何个人和组织都不得以非法方式获取公民个人信息、出售或非法提供个人信息给他人。违反法律规定,给…

如何在手机上恢复误删除的视频?

说到移动设备上的视频恢复&#xff0c;我们仍将揭开4种解决方案供您使用。希望它们对您的案件有所帮助。 众所周知&#xff0c;我们移动设备上的视频应用程序将创建一个缓存文件夹&#xff0c;以在它们永远消失之前临时存储已删除的项目。因此&#xff0c;有许多iPhone / Andr…

C++基础与深度解析 | 模板 | 函数模板 | 类模板与成员函数模板 | concepts | 完美转发 | 模板的其他内容

文章目录 一、函数模板二、类模板与成员函数模板三、Concepts(C20)四、模板相关内容1.数值模板参数与模板模板参数2.别名模板与变长模板3.包展开与折叠表达式4.完美转发与lambda表达式模板5.消除歧义与变量模板 一、函数模板 在C中&#xff0c;函数模板是一种允许你编写可以处理…

iOS 实现蓝牙设备重连的四种方式

文章目录 一、通过identifiers的方式实现重连二、通过UUID的方式实现重连三、通过scan的方式实现重连四、通过didDisconnect后回连实现重连 一、通过identifiers的方式实现重连 /*!* method retrievePeripheralsWithIdentifiers:** param identifiers A list of <code…

java项目使用jsch下载ftp文件

pom <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>demo1&#xff1a;main方法直接下载 package com.example.controller;import com.jcraft.jsch.*; im…

【mysql】数据报错: incorrect datetime value ‘0000-00-00 00:00:00‘ for column

一、问题原因 时间字段在导入值0000-00-00 00:00:00或者添加 NOT NULL的时间字段时&#xff0c;会往mysql添加0值&#xff0c;此时可能出现此报错。 这是因为当前的MySQL不支持datetime为0&#xff0c;在MySQL5.7版本以上&#xff0c;默认设置sql_mode模式包含NO_ZERO_DATE, N…

基于UrBAN数据集:用声音监测和预测蜜蜂群体的健康状况

蜜蜂在生态平衡中扮演着关键角色&#xff0c;是农业作物和自然生态系统中的重要传粉者。它们不仅生产蜂蜜和蜂蜡&#xff0c;还对许多水果和种子作物产生影响&#xff0c;包括杏仁、柑橘类水果和蓝莓等。蜜蜂群体的健康状况和数量的下降可能对农业产业产生重大影响。全球范围内…

Python爬取城市空气质量数据

Python爬取城市空气质量数据 一、思路分析1、寻找数据接口2、发送请求3、解析数据4、保存数据二、完整代码一、思路分析 目标数据所在的网站是天气后报网站,网址为:www.tianqihoubao.com,需要采集武汉市近十年每天的空气质量数据。先看一下爬取后的数据情况: 1、寻找数据…

2024全国高考作文题解读(文心一言 4.0版本)

新课标I卷 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写…

大模型基础——从零实现一个Transformer(1)

一、Transformer模型架构图 主要模块&#xff1a; embedding层&#xff1a; Input/Output Embedding&#xff1a; 将每个标记(token)转换为对应的向量表示。 Positional Encoding&#xff1a;由于没有时序信息&#xff0c;需要额外加入位置编码。 N个 block堆叠: Multi-Head …

【QT5】<总览四> QT常见绘图、图表及动画

文章目录 前言 一、QFile类读写文件 二、QPainter绘简单图形 三、QChart图表 四、QPropertyAnimation属性动画 五、Q_PROPERTY宏简介 六、自定义属性动画 前言 承接【QT5】&#xff1c;总览三&#xff1e; QT常用控件。若存在版权问题&#xff0c;请联系作者删除&#…

Debezium系列之:记录一次debezium采集tdsql-c数据库数据丢失原因的排查

Debezium系列之:记录一次debezium采集tdsql-c数据库数据丢失原因的排查 一、背景二、排查数据丢失时间段数据采集情况三、捕获提交异常信息四、定位原因五、解决方案一、背景 debezium采集tdsql-c数据库,偶尔会出现数据丢失的情况,出现多次后决定整个链路排查定位问题二、排…

UE5 Mod Support 思路——纯蓝图

原创作者&#xff1a;Chatouille 核心功能 “Get Blueprint Assets”节点&#xff0c;用于加载未来的mod。用基础类BP_Base扩展即可。打包成补丁&#xff0c;放到Content\Paks目录下&#xff0c;即可让游戏访问到内容。 与文中所写不同的地方 5.1或者5.2开始&#xff0c;打…

uniapp封装picker选择器组件,支持关键字查询

CommonPicker.vue组件 路径在 components\CommonPicker.vue <template><view><uni-easyinput v-model"searchQuery" :placeholder"placeholder" /><picker :range"filteredOptions" :range-key"text" v-model&…