css前端面试题

1.什么是css盒子模型?

盒子模型包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。

标准盒子模型和IE盒子模型的区别在于其对元素的width和height的不同解析:(元素的width和height的大小指的就是我们给元素设置的width和height的大小)。
    标准盒模型:元素的width和height = content
    IE盒模型:元素的width和height =( content+border+padding )

标准盒子模型:box-sizing:content-box

宽高指的是内容区域的宽高,

元素框的总宽度 = 元素width + padding的左右边距 + border的左右宽度 + margin的左右边距

标准盒子模型

怪异盒模型(IE盒子模型):box-sizing:border-box

宽高指的是border+padding+content区域的宽高

元素框的总宽度 = 元素(element)的width + margin的左右边距;

IE盒子模型

2.css选择器的优先级?

CSS选择器的优先级按照以下顺序排列:!important > 内联选择器 > ID选择器 > 类别选择器 > 属性选择器 > 伪类 > 元素选择器 > 通配符选择器 > 继承选择器。

  • 行内样式(style=""),带有 !important 或不带
  • ID 选择器 (#id) 带有或不带 !important
  • 类选择器 (class)、属性选择器(input[type="text"] )、伪类选择器(:hover,:first-child,:checked)等带有或不带 !important
  • 元素选择器(p,a,span)、伪元素选择器(::before)带有或不带 !important
  • 最后定义的同优先级规则(对于非 !important 规则)

3.使元素水平和垂直居中的不同方法有那些?

  • 绝对定位和transform
.container{position: relative;width: 100vw;height: 100vh;
}.container .item {position: absolute; top: 50%;left: 50%;transform: translate(-50%, -50%)/*margin-left: 负的宽度的一半*//*margin-top: 负的高度的一半*/
}
  • Flexbox布局
.container{display: flex;justify-content: center;aligin-items: center; width: 100vw;height: 100vh;
}
  • Grid布局
.container{display: grid;place-items: center; width: 100vw;height: 100vh;
}

4.什么是响应式设计?如何实现?

是一种网页设计方法,可以适应不同的屏幕尺寸和设备,旨在为跨平台的用户提供良好的交互体验。

实现的方法有: 

  • 百分比布局

           给子元素的宽高,设置成%

  • 媒体查询布局

           通过@media 媒体查询,可以通过给不同屏幕的大小编写不同的样式来实现响应式的布局。

@media (min-width: 768px) and (max-screen:1200px) {...
}
  • rem 响应式布局

           rem 是相对于 html 根元素的字体大小(font-size)的单位。

           em: 相对于父级元素的字体大小,如果自身定义了font-size按自身来计算,如首行缩进

           比如:html { font-size: 14px;}  .box { width: 10rem; height: 20rem;}

           此时 1rem = 14px,所以 box 盒子的宽高分别为:140px 和 280px

           浏览器默认的font-size:16px,最小字体为12px,

          如果设置10px,可以使用 scale 进行缩放,{transform:scale(0.83),transform-origin: 0 0},默认缩放中心点是在盒子的正中心,如果我们需要文本左对齐,就需要改变中心点

  • vw 响应式布局

           vw 和 vh 分别相对的是视图窗口的宽度和视口窗的高度。

           1vw = 视口宽度*  1%,比如:浏览器宽度1200px, 1 vw = 1200px/100 = 12 px

            vmin:vw和vh中较小的那个。
            vmax:vw和vh中较大的那个。

  • flex 弹性布局

.container{display: flex;flex-direction: column;         // 主轴方向为纵向justify-content: space-between; // 两端对齐  
}justify-content: space-around;  /* 均匀排列每个元素,每个元素周围分配相同的空间 */
  • gird网格布局

.container{display: grid; grid-template-columns: repeat(4, 1fr);  /*定义4个相同的列*/grid-gap:10px;                          /*定义列之间的间距*/
}

自适应网格布局

.container{display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));  /*列宽度最小200px,为了适应屏幕自动填充网格中的项目*/grid-gap:10px;                          /*定义列之间的间距*/
}

砖石布局,网格项根据垂直空间定位,从而产生视觉上的动态布局, 通过将grid-auto-rows 属性设置为minmax(100px, auto),网格将自动调整每行的高度。例如:

.container{display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gird-auto-rows: minmax(100px,auto);grid-gap:10px;
}

5.弹性布局flexbox? { flex:1}表示什么?

css3引入的新的布局模式,提供了一种灵活的方式来排列容器的元素,它的所有子元素自动成为容器成员,称为flex项目item。它引入了两个轴:主轴和交叉轴。通过设置容器及其子元素的属性,可以控制它们的流动和对齐方式。

Flex布局的基本属性:

  • flex-direction:row | row-reverse | column | column-reverse

    定义了主轴的方向,可以是水平或垂直,以及其起始和结束的方向。

  • flex-wrap:nowrap | wrap | wrap-reverse

    决定了当容器空间不足时,项目是否换行。

  • flex-flow: row | column   wrap

    这是flex-direction和flex-wrap的简写形式。

  • justify-content:

    flex-start | flex-end | center | space-between | space-around | space-evenly | start | end | left | right ... + safe | unsafe

    设置项目在主轴上的对齐方式。

  • align-items:

    stretch | flex-start | flex-end | center | baseline | first baseline | last baseline | start | end | self-start | self-end + ... safe | unsafe

    定义了项目在交叉轴上的对齐方式。

  • align-content:

    flex-start | flex-end | center | space-between | space-around | space-evenly | stretch | start | end | baseline | first baseline | last baseline + ... safe | unsafe;

    定义了多根轴线时,项目在交叉轴上的对齐方式。

  • gap row-gap、column-gap:设置容器内项目间的间距。

使用flexbox可以创建等高列,通过在容器上设置display:flex, 并将{ flex:1} 应用于子元素来实现。允许列扩展以均匀地填充可用空间。

.container {display:flex;
}
.container div {flex:1;}

当你设置 flex: 1 时,你告诉浏览器这个flex项目应该能够伸展来占据任何额外的空间,并且在需要时也可以缩小,而且不考虑它的初始大小。可以平均分配空间

flex : 1 其实是代表3个属性的简写:flex-grow、flex-shirnk、flex-basis,这3个属性是可以单独进行设置的

当设置了 flex:1 属性时,代表 flex-grow: 1、flex-shrink:1、flex-basis:0%

  • flex-grow: 分配剩余空间的相对比例。

        属性值:负值无效,默认为 0

        公式:原始宽度 + (剩余空间 / 总共分成多少份 * 当前元素所占分数)

  • flex-shrink: 指定了 flex 元素的收缩规则

        属性值:负值无效,默认值为 1

        公式:父元素原始宽度 * (原始宽度 / 所有项原始宽度总和)

  • flex-basis: 指定了 flex 元素在主轴方向上的初始大小   

        属性值:content | <‘width’> (即:可以百分比,也可以具体的数)默认值是 auto

注意:当设置了flex:1时,原先给元素设置的width属性是不会生效的 

6.css动画?

使用css关键帧可以实现脉动动画效果,通过定义具有重复循环的旋转动画,可以模拟记载旋转器

@keyframes rotate {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}
}.rotate {animation: rotate 1s linear infinite;
}

7.如何使用css grid创建网格布局?

要创建网格布局,需要定义网格容器并指定所需的行数和列数,可以使用 grid-template-rows 和 grid-template-columns 属性来设置网络轨道的大小

以下是kds项目中键盘布局:

grid-template-rows 和 grid-template-columns 为固定宽高

.keyboard-container {display: grid;grid-template-columns: 100px 100px 100px 100px;grid-template-rows: 80px 80px 80px 80px;grid-gap: 1px;         //间距,是 grid-column-gap 和 grid-row-gap 的合并简写形式grid-template-areas:'a b c d''e f g h''i j k l''m n o l';
}
// [确认]键,占最后一列的两行 'l'
.enter {grid-area: l;
}

 . 号表示没有名称的网格项。可将一个单元格(或多个单元格)留作空白

.item1 {grid-area: myArea;
}
.grid-container {grid-template-areas: 'myArea myArea . . .';
}

8.使用sass或less等css预处理器有那些优点?

css预处理器通过引入变量、嵌套、mixin和函数等功能在增强css的功能。这些功能使代码更加模块化、可重用且更易于维护。

$parmary-color: #f00;.container {color: $parmary-color
}

sass和less的区别:

  编译环境不一样:Sass的安装需要Ruby环境,是在服务器端处理的。而Less需要引入 less.js来处理

变量名不一样。Less中使用@,而Sass中使用$

输出设置: SASS提供了多种输出选项,如嵌套、展开、紧凑和压缩,这为开发者提供了灵活的控制输出CSS样式的方法。而LESS的输出设置较为简单,通常直接输出编译后的CSS代码。‌

Sass支持条件语句,如if…else、for循环等,而Less不支持

9.display:none; 和visibility:hidden;的区别是什么?

  • display:none; 彻底消失,释放空间。能引发页面的reflow回流(重排)。
  • visibility:hidden; 就是隐藏,但是位置没释放,好比opacity:0; 不引发页面回流。

10.回流/重排、重绘是什么?

    ①、回流的定义 :当Rendering Tree 中部分元素的尺寸大小、布局、隐藏等属性改变时,浏览器的布局需要调整,则需要重新渲染DOM。这个过程就叫回流。回流也叫重排(对整个页面进行重新排版)。

    ②、重绘的定义:当元素属性的改变不影响DOM Tree的结构,即不会影响浏览器的布局,只是“表象”发生变化(如background-color,visibility等),那么针对新样式对元素进行重新绘制。

二者的联系

  • 回流一定会引起重绘,重绘不一定引起回流。
  • 回流需要重新渲染DOM,也要重新处理Rendering Tree。即回流的开销比重绘要大。

11.解释CSS中的‌继承和‌层叠的概念,并举例说明如何影响样式应用

  • 继承:是CSS的一个特性,它允许一些属性自动应用于特定元素的子元素。例如,文本颜色(color)和字体大小(font-size)可以从父元素继承到子元素。
  • 层叠: 规定了当多个样式作用于同一个元素时,如何确定最终的样式。也就是选择器优先级

12.解释什么是CSS的will-change属性,并讨论其如何帮助优化页面性能。

will-change属性用于通知浏览器特定css属性即将发生的更改。允许浏览器提前为更改做好准备,有助于优化渲染性能。

13.如何优化CSS以提高页面加载速度

  1. 尽量少的去对标签进行选择,而是用class 
  2. 选择器优化嵌套,尽量避免层级过深
  3. 属性是可以通过继承而来的,避免对这些属性重复指定规则
  4. 尽量减少页面重排、重绘

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

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

相关文章

C++模板进阶和模板链接错误的解决

小编在学习模板进阶之后&#xff0c;觉得模板的内容很有用&#xff0c;所以今天带给大家的内容是模板进阶的所有内容&#xff0c;内容包括模板的使用&#xff0c;模板的特化&#xff0c;模板的全特化&#xff0c;模板的偏特化&#xff0c;模板链接时候会出现的链接错误及解决方…

Ubuntu系统SSH免密连接Github配置方法

Ubuntu系统SSH免密连接Github配置方法 一、相关介绍1.1 Ubuntu简介1.2 Git简介1.3 Github简介 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、Git本地环境配置工作4.1 安装Git工具4.2 创建项目目录4.3 …

STM32被拔网线 LWIP的TCP无法重连解决方案

目录 一、问题描述 二、项目构成 三、问题解决 1.问题代码 2.解决思路 3.核心代码&#xff1a; 四、完整代码 1.监测网口插入拔出任务 2.TCP任务 3.创建tcp任务 4.删除tcp任务 五、总结 一、问题描述 最近遇到一个问题&#xff0c;就是我的stm32设备作为tcp客户端…

AndroidStudio与手机进行无线调试

(一)、前提条件 一部手机一条USB数据线一部电脑手机和电脑连接到同一个 Wifi开启手机的USB调试功能开启手机的无线调试功能 (二)、操作步骤 1、 将手机和电脑用USB数据线连接 2、 打开 终端&#xff0c;输入 adb devices ,查看手机和电脑是否连接成功。如下图&#xff1a; 2、…

Linux驱动开发-06蜂鸣器和多组GPIO控制

一、控制蜂鸣器 1.1 控制原理 我们可以看到SNVS_TAMPER1是这个端口在控制着蜂鸣器,同时这是一个PNP型的三极管,在端口输出为低电平时,蜂鸣器响,在高电平时,蜂鸣器不响 1.2 在Linux中端口号的控制 gpiochipX:当前SoC所包含的GPIO控制器,我们知道I.MX6UL/I.MX6ULL一共包…

Atom - hackmyvm

简介 靶机名称&#xff1a;Atom 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmAtom 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Atom&#xff09;&#xff1a;192.168.56.101 跳板机IP(windows 11)&#xff1…

多显示器,如何快速切换电脑显示模式!

​一般在使用多显示器的情况下,可能我们要根据不同的工作需求来动态调整相适应的Windows显示模式,像扩展模式、复制模式、单显示器等模式。调整相应的模式方法也不止一种,下面一起了解下不同的方法如何快速操作实现! 快捷键法(WIN+P) 同时按下键盘徽标键WIN+P,会弹出个选…

微软发布iOS/安卓正式版Designer应用,AI修图功能助力创意设计

一、Microsoft Designer应用正式上线 AITOP100平台获悉&#xff0c;微软一直致力于为用户提供优质的创意工具&#xff0c;此次推出的Microsoft Designer应用正是其在移动端的重要布局。这款应用已正式上线iOS、Android、Windows和网页版本&#xff0c;满足不同用户的需求。微软…

高性能系统架构设计之:多级缓存

前言 为了提高系统的性能&#xff0c;一般会引入“缓存机制”&#xff0c;将部分热点数据存入缓存中&#xff0c;用空间换取时间&#xff0c;以达到快速响应的目的。 其实&#xff0c;缓存的应用远远不止存在于服务层&#xff08;传统的Redis缓存&#xff09;&#xff0c;从客户…

虚拟试衣人像合成新SOTA!IMAGDressing-v1:ControlNet和IP-Adapter的最佳拍档

文章链接&#xff1a;https://arxiv.org/pdf/2407.12705 github链接&#xff1a;https://imagdressing.github.io/ Demo试用&#xff1a;https://sf.dictdoc.site/ 亮点直击 为商家引入了一项新的虚拟试衣&#xff08;VD&#xff09;任务&#xff0c;并设计了一个综合亲和力测量…

最新缺失msvcp140.dll的多种解决方法,有效解决电脑dll问题

msvcp140.dll 是一个关键的动态链接库&#xff08;DLL&#xff09;文件&#xff0c;属于 Microsoft Visual C 2015 Redistributable 的一部分。它为使用 Microsoft Visual C 编译的应用程序提供了运行时支持&#xff0c;确保这些应用程序能够正常运行。以下是对 msvcp140.dll 的…

《0基础》学习Python——第十九讲__爬虫\<2>

一、用get请求爬取一般网页 首先由上节课我们可以找到URL、请求方式、User-Agent以及content-type 即&#xff1a;在所在浏览器页面按下F12键&#xff0c;之后点击网路-刷新&#xff0c;找到第一条双击打开标头即可查看上述所有内容&#xff0c;将上述URL、User-Agent所对应的…

ABAP打印WORD的解决方案

客户要求按照固定格式输出到WORD模板中&#xff0c;目前OLE和DOI研究了均不太适合用于这种需求。 cl_docx_document类可以将WORD转化为XML文件&#xff0c;利用替换字符串方法将文档内容进行填充同 时不破坏WORD现有格式。 首先需要将WORD的单元格用各种预定义的字符进行填充…

四个节点即可实现的ComfyUI批量抠图工作流

原文链接&#xff1a;ComfyUI面部修复完全指南 (chinaz.com) 下图就是批量抠图的工作流 虽然工作流很简单&#xff0c;但是我们前提还是需要安装好我们的节点 首先安装我们的抠图节点 安装 BiRefNet 所需依赖&#xff1a;timm&#xff0c;如已安装无需运行 requirements.txt…

苹果电脑crossover怎么下载 苹果电脑下载crossover对电脑有影响吗 MacBook下载crossover软件

CodeWeavers 发布了 CrossOver 24 版本更新&#xff0c;不仅兼容更多应用和游戏&#xff0c;得益于 Wine 9.0 带来的 7000 多项改进&#xff0c;CrossOver 还可以在 64 位系统上运行Windows应用的软件&#xff0c;使得用户可以在Mac系统中轻松安装使用仅支持Windows系统运营环境…

搜维尔科技:【研究】动作捕捉加速游戏开发行业的发展

动作捕捉加速游戏开发行业的发展 Sunjata 的故事始于 2004 年&#xff0c;它将席卷乌干达视频游戏行业&#xff0c;然后席卷全世界。但首先&#xff0c;Klan Of The Kings 的小团队需要工具来实现他们的愿景。 漫画家兼非洲民间传说爱好者罗纳德卡伊马 (Ronald Kayima) 在将…

idea navigate mysql生成实体类

参考&#xff1a;https://blog.51cto.com/u_16175427/7251120 使用idea导航MySQL生成实体类 1、在IDEA的顶部菜单中选择View -> Tool Windows -> Database 2、找到表&#xff0c;右键表Scripted Extensions -> Generate POJO...

6. dolphinscheduler-3.0.0伪集群部署

环境说明&#xff1a; 主机名&#xff1a;cmc01为例 操作系统&#xff1a;centos7 安装部署软件版本部署方式centos7zookeeperzookeeper-3.4.10伪分布式hadoophadoop-3.1.3伪分布式hivehive-3.1.3-bin伪分布式clickhouse21.11.10.1-2单节点多实例dolphinscheduler3.0.0单节…

ELK kibana查询与过滤

ELK kibana查询与过滤 1、通过布尔操作符 AND 、 OR 和 NOT 来指定更多的搜索条件(注意&#xff1a;这AND、OR、NOT必须大写)。例如&#xff0c;搜索message包含服务层关键词并且日志级别为INFO的条目&#xff0c;您可以输入 message:“服务层” AND level:“INFO”。 2、要搜…

KU FPGA FLASH boot失败debug

原因 新板子回来后&#xff0c;测试flash 烧录正常&#xff0c;但是无法BOOT&#xff0c;此时SPI设置为X4模式,使用内部时钟&#xff0c;速度90M。烧录过程不报错&#xff0c;校验也正常。 FLASH理论支持最大速度108M&#xff0c;90M应该还好。另外板卡预留了EMCCLK外部时钟模…