2024前端面试真题【CSS篇】

盒子模型

盒子模型box-sizing,描述了文档中的元素如何生成矩形盒子,并通过这些盒子的布局来组织和设计网页。包含contentpaddingmarginborder四个部分。

分类

  • W3C盒子模型content-box):标准盒子模型,Width = width
  • IE盒子模型border-box):Width = width + padding + border

BFC

BFC:块级上格式下文,是一块具有自己渲染规则的渲染区域。
渲染规则:

  • 内部盒子垂直向上一个接一个堆叠
  • 同一个BFC的两个相邻盒子的margin重叠
  • BFC的区域不会与float元素区域重叠
  • 计算BFC的高度时,浮动子元素也参与计算
  • 每个元素的左外边距与包含块的左边界相接触;
    -BFC就是一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。

BFC的触发条件

触发BFC的条件包含但不局限于:

  • 根元素
  • 浮动元素:leftright
  • overflow的值除了visible
  • display的值为inline-flex-等;
  • position的值为absolutefixed

BFC应用场景

  1. 防止margin塌陷
  2. 清除内部浮动
  3. 自适应多栏布局

响应式设计

特点

  • 同时适配PC + 平板 + 手机等;
  • 根据视口调整模块大小和位置

实现方式

响应式设计的基本原理是通过媒体查询检测不同的设备屏幕尺寸做处理。为了处理移动端,页面头部必须有meta声明viewport

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"></meta>

实现方式:

  • 媒体查询:@media screen and (max-width: 1920px) {...}
  • 百分比:height、width属性的百分比依托父元素的宽高,但是其它属性不完全依赖;
  • vw/vh:相对于视图窗口的宽高;
  • rem:相对于根元素htmlfont-size属性,默认情况下浏览器大小为16px,此时,1rem = 16px

元素的水平垂直居中方法

实现方式:

  1. 定位 + margin: auto
  2. 定位 + margin: 负值
  3. 定位 + transform
  4. table布局
  5. flex布局
  6. grid布局:网格布局

多栏布局、剩余宽度自适应

两栏布局

两栏布局一般是一个定宽栏和一个自适应的栏并排展示存在。
实现思路:

  • float左浮左边栏
  • 右边模块使用margin-left撑出内容块做内容展示
  • 为父级元素添加BFC,防止下方元素飞向上
.box {overflow: hidden;
}
.left {width: 200px;flot: left;height: 100%;
}
.right {margin-left: 200px;height: 100%;
}

三栏布局

实现思路:

  • 两边固定宽度、float,中间使用margin
  • 两边定宽、使用absolute,中间使用margin
  • 两边使用float和负margin
  • flex实现

弹性布局

  • flex-direction
  • flex-wrap
  • flex-flow: flex-direction flex-wrap;
  • justify-content
  • align-items:定义项目在交叉轴上如何对齐
  • align-content:定义多根轴线的对齐方式。
  • order:项目的排列顺序,数值越小,排列越靠前,默认为0
  • flex-grow:定义项目的放大比例,默认为0,即存在剩余空间也不放大;
  • flex-shrink:定义项目的缩放比例
  • flex-basis:设置元素在主轴上的初始尺寸,默认为内容决定;
  • align-self:单个项目的对齐方式

CSS选择器

分类:

  • id选择器
  • 类选择器
  • 标签选择器
  • 后代选择器(div p
  • 子选择器(div > p
  • 相邻同胞选择器(div + p
  • 群组选择器(div, p)
  • 伪类选择器:(first-child:nth-child()等)
  • 属性选择器([attribute~=value]等)
  • 层次选择器(p~ul:选择前面有p元素的每个ul)

实现单行/多行文本溢出的省略样式

  1. 单行文本溢出省略
<style>
.text-ellipsis {overflow: hidden;line-height: 40px;height: 40px;width: 100%;text-overflow: ellipsis;white-space: nowrap; /*文本不换行*/
}
</style>
  1. 多行文本溢出省略
  • 基于高度截断:伪元素+定位
<style>
.text-ellipsis1 {position: relative;line-height: 20px;height: 40px;overflow: hidden;word-break: break-all;
}
.text-ellipsis1:after {content: '...';position: absolute;bottom: 0px;right: 0px;padding: 0 20px 0 10px;
}
</style>
  • 基于行数截断(-webkit-box-clamp):
<style>
.text-ellipsis2 {width:100%;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;text-overflow: ellipsis;
}
</style>

CSS 实现一个三角形

<style>
.border {width: 0;height: 0;border-style: solid;border-width: 0 50px 50px;border-color: transparent transparent #ff0000;
}
</style>

CSS3 动画

  • transition实现渐变动画:transition: all 2s ease-in 500ms;
  • transform转变动画:scaletranslaterotateskew
  • animation实现自定义动画:通过@keyframes来定义关键帧
<style>
@keyframes rotate {from {transform: rotate(0deg)}to {transform: rotate(180deg)}
}
div {animation: rotate 2s;
}
</style>

CSS的设备像素、css像素、设备独立像素、dpr、ppi

css像素

css像素px为后缀,是一个长度单位,是一种相对单位,相对的是设备像素。
一般情况,页面缩放比为1,1个css像素 = 1个设备独立像素。
px会受到下面的因素的影响而变化:

  • 每英寸像素(PPI)
  • 设备像素比(DPR)

设备像素

设备像素,又称为物理像素。指设备能控制显示的最小物理单位。固定不变,单位为pt

设备独立像素

设备独立像素,与设备无关的逻辑像素,代表可以通过程序控制使用的虚拟像素,是一个总体概念
一个设备独立像素里可能包含一个或者多个物理像素点,包含的越多则屏幕看起来越清晰。
至于1个虚拟像素被换算成几个物理像素,这个数值就成为设备像素比(DPR)

设备像素比(DPR)

DPR = 设备像素 / 设备独立像素,在window中通过window.devicePixelRatio获取。

总结

  • 无缩放情况下,1个css像素 = 1个设备独立像素;
  • 设备像素由屏幕生成之后确定,不变;
  • PC中,1个设备独立像素 = 1个设备像素(未缩放情况下);
  • 移动端中,标准屏幕(160ppi)下,1个设备独立像素 = 1个设备像素;
  • 设备像素比(dpr) = 设备像素 / 设备独立像素;
  • 每英寸像素(ppi),值越大越清晰

px、em、rem、vh、vw

  • px:绝对单位,大小与元素的其它属性无关;

  • em:相对长度单位,相对于当前对象内文本的字体尺寸,特点

    • em的值不固定;
    • em会继承父级元素的字体大小;
    • em是相对单位,相对于当前对象内文本的字体尺寸;
    • 任意浏览器的默认字体高都是16px(1em = 16px);
    • 为了简化font-size的计算,我们只需要配置body的font-size: 62.5%;即可,此时:1em = 10px
  • rem:相对单位,相对HTML根元素的font-size的值。

Chrome支持12px

解决方案:

  • zoom: 0.8;
  • -webkit-transform: scale()
  • -webkit-text-size-adjust: none;

回流和重绘

回流:布局引擎根据各种样式计算每个盒子在页面上的大小和位置;在页面初始渲染阶段,会留不可避免的会触发。
重绘:当计算好盒模型的位置、大小和其它属性后,浏览器会根据每个盒子的特性进行绘制。

触发回流一定会触发重绘。回流的阶段主要是计算节点的位置和集合信息,当页面布局或者几何信息发生变化,则需要回流。重绘的阶段主要是做样式修改渲染。

如何减少回流

  • 样式组合
  • 避免内联样式使用
  • 复杂的动画应尽可能脱离文档流;
  • 使用css3硬件加速,transform等动画不会引起回流重绘;
  • 等;

css预编译语言

css提高性能的方法有哪些?

  • 内联首屏关键css
  • 异步加载css
  • 资源压缩
  • 合理使用选择器
  • 不要使用@import:会影响浏览器的并行下载,是的页面夹杂延迟
  • 把小的icon图片转base64编码使用等

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

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

相关文章

【系统架构设计师】九、软件工程(面向对象方法|逆向工程)

目录 六、面向对象方法 6.1 基本概念 6.2 面向对象的分析 6.2.1 用例关系 6.2.2 类之间的关系 6.3 面向对象的设计 6.4 面向对象设计原则与设计模式 6.5 面向对象软件的测试 七、逆向工程 历年真题练习 六、面向对象方法 面向对象的分析方法 (Object-Oriented Analys…

【Linux网络】数据链路层【上】{初识数据链路层/以太网/路由表/MAC地址表/ARP表/NAT表}

文章目录 1.初识数据链路层2.认识以太网2.0前导知识以太网帧和MAC帧CMSA/CD以太网的最小帧长限制是64字节IP层和MAC层 2.1以太网帧格式 3.预备知识计算机网络通信以太网和wifi路由表/MAC地址表/ARP表/NAT表/ACL表 用于同一种数据链路节点的两个设备之间进行信息传递。 1.初识数…

Apache AGE 聚合函数

简介 一般来说&#xff0c;聚合函数 aggr(expr) 会处理每个聚合键在传入记录中找到的所有匹配行&#xff08;键使用等价性进行比较&#xff09;。 在常规聚合&#xff08;即形式为 aggr(expr) 的情况下&#xff09;&#xff0c;聚合值列表是候选值列表&#xff0c;其中所有空…

Clion 使用gdbserver调试FreeSWITCH源码

1.准备环境 window安装clion安装好gdb、ssh、已经编译好的freeswitch可执行文件的docker镜像2.配置clion Settings -> Tools ->SSH Configurations Settings-Build, Execution, Deployment-Toolchains(其实设不设置都行,用默认也行的) Settings-Build, Execution, Depl…

DockerCompose拉取DockerHub镜像,并部署OpenMetaData

参考博主&#xff1a;http://t.csdnimg.cn/i49ET 一、DockerCompose拉取DockerHub镜像 方法一&#xff08;不太行&#xff09;&#xff1a; 在daemon.json文件中添加一些国内还在服务的镜像站&#xff08;可能某些镜像会没有&#xff09; ([ -f /etc/docker/daemon.json ] ||…

人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像

摘要 商品工业属性画像是电商产品经理在进行商品管理、推荐、搜索、广告等业务时的重要依据。通过对商品的工业属性&#xff08;如品类、品牌、规格、功能、风格等&#xff09;的准确识别和标注&#xff0c;可以提高商品的展示效果、匹配度、转化率和用户满意度。然而&#xf…

从概念到完成:Midjourney——设计思维与AI技术的完美结合

文章目录 本文来自 Python学研大本营 作者 学研君 去年 AI 爆火的时候&#xff0c;学研君也赶时髦用上了 Midjourney。平时用它生成图片&#xff0c;感觉生成的图片好看&#xff0c;比上网四处找图更省时省事&#xff0c;更合心意&#xff0c;还不用担心版权问题。 给大家看一下…

102.qt qml-最全Table交互之多列固定、行列拖拽、自定义委托、标题交互使用教程

自定义实现的Table控件&#xff0c;支持跨qt版本&#xff0c;兼容qt5,qt6&#xff01; 截图如下所示: 黑色风格如下所示&#xff1a; 视频演示入口&#xff1a;Qt QML QianWindowV2.5(新增曲线综合示例、QML最全Table交互示例、支持qt5/qt6)_哔哩哔哩_bilibili 1.示例页面入口…

【单片机毕业设计选题24061】-基于蓝牙的单片机通信系统

系统功能: 1、本系统硬件由两块STM32单片机&#xff0c;DHT11&#xff0c;光敏传感器&#xff0c;12864oled和HC-05蓝牙模块组成。 2、单片机1HC-05蓝牙模块做为主机&#xff0c;单片机2HC-05蓝牙模块做为从机。 3、单片机从机将采集到温湿度&#xff0c;光照强度等信息通过…

使用mybatis的statementHander拦截器监控表和字段并发送钉钉消息

新建mybatis的statementHander拦截器拦截器 类 面试题&#xff1a; 2.实现 解析Sql时引入JSqlParser JSqlParser 是一个 SQL 语句解析器。 它将 SQL转换为可遍历的 Java 类层次结构。 <dependency><groupId>com.github.jsqlparser</groupId><artifac…

[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)

文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包&#xff0c;反编译class&#xff0c;新建java源文件&#xff0c;修改代码&#xff0c;再编译成class&#xff0c;替换jar包内的class文件。 现在…

数据库作业5---视图

创建表 创建部门表&#xff08;dept&#xff09;和员工表&#xff08;emp&#xff09; create table dept(dept_id int primary key auto_increment comment 部门编号,dept_name char(20) comment 部门名称);insert into dept(dept_name) values(销售部),(财务部),(生产部),(…

Day03-索引模板,DSL语句,集群迁移API,ES集群状态统计API,KQL语句及分片重路由API实战

Day03-索引模板&#xff0c;DSL语句&#xff0c;集群迁移API&#xff0c;ES集群状态统计API&#xff0c;KQL语句及分片重路由API实战 1、索引模板1.1 什么是索引模板1.2 查看索引模板1.3 创建/修改索引模板1.4 删除索引模板 2、ES的DSL语句查询2.1 什么是DSL2.2 全文检索-match…

tusimple车道线检测 标注自己的数据集

一、打开labelme工具进行数据标注 二、数据格式转换 2.1 标签转换 运行Anaconda Prompt&#xff0c;进入json标签文件所在目录&#xff0c;逐个转换&#xff0c;分布运行 labelme_json_to_dataset 0000.json labelme_json_to_dataset 0001.json labelme_json_to_dataset 000…

redis查询慢,你们是如何查询优化?(运维篇3)

1、查看是否写入了bigkey 如果你查询慢日志发现&#xff0c;并不是复杂度过高的命令导致的&#xff0c;而都是 SET / DEL 这种简单命令出现在慢日志中&#xff0c;那么你就要怀疑你的实例否写入了 bigkey。 Redis 在写入数据时&#xff0c;需要为新的数据分配内存&#xff0c;相…

2024年公共文化与社会服务国际会议(ICPCSS 2024)

2024年公共文化与社会服务国际会议 2024 International Conference on Public Culture and Social Services 【1】会议简介 2024年公共文化与社会服务国际会议是一个集学术性、实践性和国际性于一体的盛会。我们期待与您共同探讨公共文化与社会服务的未来发展方向&#xff0c;为…

【linux】服务器设置所有用户创建虚拟环境到默认路径

【linux】服务器设置所有用户创建虚拟环境到默认路径 【创作不易&#xff0c;点点赞关注收藏】&#x1f600; 需要安装anaconda3的小伙伴可以看一下我前面的博文linux安装anaconda3 一、情况说明 我的anaconda3安装在"/public/apps/anaconda3/“&#xff0c;我希望所有…

C#实现最短路径算法

创建点集 double r 200 * 500;double width 1920;double height 1080;int col (int)(r / width);int row (int)(r / height);List<(double, double)> list1 new List<(double, double)>();for (int i 0; i < row; i){var y i * height;if (y < r){va…

好莱坞级别AI视频工具Odyssey亮相!AI世界动态回顾

好莱坞级别的视觉AI&#xff1a;Odyssey 首先&#xff0c;我们要提到的就是Odyssey——一款新晋AI视频工具&#xff0c;它以其好莱坞级别的视觉AI能力引起了广泛关注。奥德赛展示的一些片段令人印象深刻&#xff0c;包括精美的无人机镜头、风景画面以及专业级的B-roll素材。虽…

Snap Video:用于文本到视频合成的扩展时空变换器

图像生成模型的质量和多功能性的显著提升&#xff0c;研究界开始将其应用于视频生成领域。但是视频内容高度冗余&#xff0c;直接将图像模型技术应用于视频生成可能会降低运动的保真度和视觉质量&#xff0c;并影响可扩展性。来自 Snap 的研究团队及其合作者提出了 "Snap …