前端常见基础面试题css篇

news2024/9/23 21:21:15

目录

1.css3有哪些新特性?

2.CSS有哪些基本选择器?它们的权重是如何表示的?

3.css 选择器的类型优先级排序

4.写出几种CSS实现元素两个盒子垂直水平居中的代码

5.CSS 常见的伪类和伪元素有哪些?

6.CSS的引入方式有哪些?ink和@ import的区别是什么?

7.怎么理解盒子模型,盒子模型有几种?

8.display 有哪些值?说明他们的作用?

9.为什么要初始化 CSS 样式?

10.position 跟 display、overflow、float 这些特性相互叠加后会怎么样?

11.为什么会出现浮动? 什么时候需要清除浮动?清除浮动有哪些方式?

12.在网页中的应该使用奇数还是偶数的字体?为什么呢?

13.margin 和 padding 分别适合什么场景使用?

14.px、em、rem的区别?

15.浏览器内核有哪几种,分别是哪些浏览器?

16.css预处理是什么,有哪些?

17.css自适应屏幕布局的方法有哪些?

18.从css方面优化性能?

19.css hack是什么?

20.对BFC的理解?


1.css3有哪些新特性?

CSS3是CSS技术的最新版本,它提供了许多新特性和功能,以改进网页的外观和交互性。以下是CSS3中的一些常用新特性:

  1. 响应式布局:使用CSS3媒体查询,可以让网页在不同的屏幕尺寸上适应不同的布局。

  2. 动画:CSS3提供了transition和animation特性,可以制作简单的动画效果。

  3. 颜色:CSS3支持使用RGBa、HSLa等新的颜色格式,以及渐变色。

  4. 字体:CSS3支持使用外部字体,如Google Fonts,以提高网页字体的多样性。

  5. 圆角和阴影:CSS3提供了border-radius和box-shadow特性,可以制作圆角和阴影效果。

  6. 背景:CSS3支持多背景图片和背景定位,可以制作美观的背景效果。

这些只是CSS3中的一些常用特性,它还有很多其他强大的功能,值得您去探索和了解。

2.CSS有哪些基本选择器?它们的权重是如何表示的?

CSS 有以下基本选择器:

  1. 通配符选择器(*):选择所有元素。

  2. 元素选择器(例如 h1):选择所有具有特定元素名称的元素。

  3. ID 选择器(例如 #myId):选择具有特定 id 属性的单个元素。

  4. 类选择器(例如 .myClass):选择具有特定类名称的一个或多个元素。

  5. 属性选择器(例如 [type="text"]):选择具有特定属性和属性值的元素。

  6. 伪类选择器(例如 :hover):选择具有特定动态状态的元素。

  7. 伪元素选择器(例如 ::before):选择具有特定生成内容的元素的一部分。

CSS 选择器的权重是根据它们的特殊性来表示的。特殊性的高低决定选择器的权重,从而决定最终样式的应用。特殊性的高低可以通过选择器的类型、数量和位置等来表示。

3.css 选择器的类型优先级排序

CSS 选择器优先级排序如下:

  1. !important
  2. 内联样式(style 属性)
  3. ID 选择器
  4. 类选择器、属性选择器、伪类选择器
  5. 标签选择器、伪元素选择器
  6. 通配符选择器
  7. 继承选择器

注意:选择器越往后,其优先级越低。

当同一元素同时被多个选择器选中时,优先级高的选择器的样式会覆盖优先级低的选择器的样式。如果多个选择器的优先级相同,则最后加载的样式文件中的选择器优先级高于先加载的样式文件中的选择器。

4.写出几种CSS实现元素两个盒子垂直水平居中的代码

  1. 使用flex布局:
.container {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 300px;
}

.box {
  width: 50%;
  height: 50%;
}
  1. 使用grid布局:
.container {
  display: grid;
  place-items: center;
  height: 300px;
}

.box {
  width: 50%;
  height: 50%;
}
  1. 使用table布局:
.container {
  display: table;
  height: 300px;
  width: 100%;
}

.box {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
  width: 50%;
  height: 50%;
}
  1. 使用绝对定位:
.container {
  position: relative;
  height: 300px;
}

.box {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 50%;
  height: 50%;
}

5.CSS 常见的伪类和伪元素有哪些?

  1. 伪类:
  • :active:激活状态
  • :hover:鼠标悬停状态
  • :focus:元素获得焦点状态
  • :visited:已访问链接状态
  • :first-child:第一个子元素
  • :last-child:最后一个子元素
  • :nth-child(n):第 n 个子元素
  1. 伪元素:
  • ::before:在元素内容前插入内容
  • ::after:在元素内容后插入内容
  • ::first-letter:选择文本的第一个字母
  • ::first-line:选择文本的第一行
  • ::selection:选择文本的颜色

6.CSS的引入方式有哪些?ink和@ import的区别是什么?

CSS有3种引入方式。

  • 行内式是指将样式写在元素的 style属性内。

  • 内嵌式是指将样式写在 style元素内。

  • 外链式是指通过link标签,引入CSS文件内的样式。

通过link标签引入样式与通过@ import方法引入样式有如下区别。

(1)加载资源的限制。

link是 XHTML的标签,除了加载CSS文件外,还可以加载RSS等其他事务,如加载模板等。

@ import只能加载CSS文件。

(2)加载方式。

如果用link引用CSS,在页面载入时同时加载,即同步加载。

如果用@ import引用CSS,则需要等到网页完全载入后,再加载CSS文件,即异步加载。

(3)兼容性。

link是 XHTML的标签,没有兼容问题。

@ import是在CSS2.1中提出的,不支持低版本的浏览器。

(4)改变样式

link的标签是DOM元素,支持使用 JavaScript控制DOM和修改样式;@ import是种方法,不支持控制DOM和修改样式。

7.怎么理解盒子模型,盒子模型有几种?

W3C标准盒子模型

  • 标准模式下,一个块的宽度 = width+padding(内边距)+border(边框)+margin(外边距)
  • CSS中的宽(width)=内容(content)的宽
  • CSS中的高(height)=内容(content)的高

IE盒子模型

  • 怪异模式下,一个块的宽度 = width+margin(外边距) (即怪异模式下,width包含了border以及padding)
  • CSS中的宽(width)=内容(content)的宽+(border+padding)*2
  • CSS中的高(height)=内容(content)的高+(border+padding)*2

CSS3 box-sizing

  • box-sizing:content-box; 将采用标准模式的盒子模型标准
  • box-sizing:border-box; 将采用怪异模式的盒子模型标准
  • box-sizing:inherit; 规定应从父元素继承 box-sizing 属性的值。

8.display 有哪些值?说明他们的作用?

  • block:该元素将生成一个矩形的框,并且该元素前后会带有换行符。
  • inline:该元素生成的框只在文本的基线上,元素前后没有换行符。
  • inline-block:该元素生成内联框,其内容作为块级元素呈现,元素前后没有换行符。
  • none:该元素不生成任何框,并且从文档流中删除。
  • flex:该元素被设置为一个弹性盒子,使其子元素在一个弹性布局中分布。
  • grid:该元素被设置为一个网格容器,使其子元素在网格布局中分布。

9.为什么要初始化 CSS 样式?

初始化 CSS 样式是为了将所有浏览器的默认样式设置为一致的标准,以便更好地控制页面的布局和样式。各种浏览器默认样式不同,如果不进行初始化,很可能会导致页面样式不一致的问题。通过初始化 CSS 样式,开发人员可以确保所有元素的样式以统一的方式呈现,并可以从头开始定义其他样式,从而更轻松地管理页面样式。

10.position 跟 display、overflow、float 这些特性相互叠加后会怎么样?

position、display、overflow、float等特性相互叠加后的效果,可以简单分为如下几种情况:

  • position: relative/absolute/fixed 与 display: none/block 的相互影响:如果元素的 position 设置为 relative/absolute/fixed,但是元素的 display 设置为 none,那么元素将不会在页面上显示;如果元素的 position 设置为 relative/absolute/fixed,但是元素的 display 设置为 block,那么元素将会在页面上显示,并且会脱离文档流。

  • position: relative/absolute/fixed 与 float 的相互影响:如果元素的 position 设置为 relative/absolute/fixed,但是元素的 float 设置为 left/right,那么元素将被挤到页面的左/右边;如果元素的 position 设置为 relative/absolute/fixed,并且元素的 float 设置为 none,那么元素将不会被挤到页面的左/右边。

  • overflow 与 display 的相互影响:如果元素的 overflow 设置为 scroll/auto,但是元素的 display 设置为 none,那么元素将不会在页面上显示;如果元素的 overflow 设置为 scroll/auto,并且元素的 display 设置为 block,那么元素将会在页面上显示,并且会出现滚动条。

总的来说,这些特性的相互叠加关系取决于每一种特性的具体实现方式,所以在实际的使用中

11.为什么会出现浮动? 什么时候需要清除浮动?清除浮动有哪些方式?

浮动是因为 CSS 中的 float 属性会使元素脱离文档流,因此会出现浮动现象。

需要清除浮动当:

  1. 浮动元素下方的元素布局错乱
  2. 浮动元素不占据它的正常文档流位置
  3. 浮动元素的父元素的高度不随其内浮动元素的增加而增加

清除浮动的方式有:

  1. 在父元素添加 clear: both 属性
  2. 给父元素添加伪元素并添加 clear: both 属性
  3. 使用 overflow 属性,例如 overflow: hiddenoverflow: auto
  4. 使用 after 伪元素并将其设置为空块元素,并将其 clear 设置为 both

12.在网页中的应该使用奇数还是偶数的字体?为什么呢?

在网页设计中,一般使用偶数字体,如 16px 或 14px,而不是奇数字体,如 15px 或 17px。因为偶数字体在计算机上的呈现更加精确,可以避免在显示时出现一些较小的模糊误差,使得网页的字体效果更佳

13.margin 和 padding 分别适合什么场景使用?

Margin 和 padding 是用来给元素设置外边距和内边距的。

  • margin:设置元素的外边距,适合于在元素与其他元素之间设置间距。
  • padding:设置元素的内边距,适合于在元素内部内容与边框之间设置间距。

使用场景根据具体需求决定。一般情况下,如果需要给元素的内容保留一定的空间,可以使用 padding;如果需要给元素设置外边距,可以使用 margin。

14.px、em、rem的区别?

  • px: 像素是固定大小的单位,一般用于固定尺寸(如边框、图像大小)。
  • em: em 是一个相对单位,相对于父元素的字体大小。它通常用于字体大小,如果没有设置父元素的字体大小,则相对于浏览器的默认字体大小。
  • rem: rem 也是一个相对单位,但相对的是根元素(HTML 元素)的字体大小。如果没有设置根元素的字体大小,则相对于浏览器的默认字体大小。因此,rem 单位通常比 em 更灵活,更易于管理。

15.浏览器内核有哪几种,分别是哪些浏览器?

浏览器内核主要:

  1. Blink:Google Chrome 和 Opera 的内核。
  2. Gecko:Firefox 的内核。
  3. Webkit:Safari 和 Apple's 设备的内核。
  4. Trident:Internet Explorer 的内核。

需要注意的是,现在很多浏览器都有自己独特的内核,而不仅仅是使用上述内核中的一种。例如,一些 Android 浏览器使用的是 Webkit 内核,但它们有自己的独特功能和特殊的行为。

16.css预处理是什么,有哪些?

CSS 预处理是一种将 CSS 扩展为具有额外功能的语言的方法。它们可以使 CSS 更加强大,并且更易于管理。常见的 CSS 预处理语言有:

  1. Sass (Syntactically Awesome Style Sheets)
  2. Less (Leaner Style Sheets)
  3. Stylus
  4. PostCSS

这些预处理语言都有类似的语法,但各有特色。它们需要先编译为标准 CSS,才能在浏览器中运行。

17.css自适应屏幕布局的方法有哪些?

  • Flexbox 布局
  • Grid 布局
  • 百分比布局
  • 媒体查询
  • rem 单位布局
  • JavaScript 响应式布局。

18.从css方面优化性能?

  1. 合并 CSS 文件:合并多个 CSS 文件以减少 HTTP 请求数量。

  2. 压缩 CSS 文件:删除 CSS 文件中的空格、注释和换行符,以减少 CSS 文件大小。

  3. 避免使用 CSS 表达式:CSS 表达式会对网页性能产生负面影响。

  4. 使用缓存:使用 HTTP 缓存功能可以加快加载速度。

  5. 避免使用 CSS hack:CSS hack 可能不被某些浏览器支持,并且也可能导致代码难以维护。

  6. 减少使用 CSS 选择器:尽量使用简单的选择器,避免使用过于复杂的选择器。

  7. 使用精简的 CSS:仅使用必要的 CSS 属性,避免使用过多的属性。

  8. 避免使用 @import 规则:@import 规则会导致浏览器发送额外的 HTTP 请求,从而影响性能。

19.css hack是什么?

CSS hack 是指使用特殊的代码来解决 CSS 在不同浏览器中的兼容性问题的方法。它们通常是指特定于浏览器的代码,用于解决浏览器渲染错误或兼容性问题。

CSS hack 有不同的形式,例如使用特定的浏览器前缀、条件语句等。然而,随着浏览器技术的发展和更新,它们可能不再有效,并且还可能带来一些副作用。因此,一般建议尽量避免使用 CSS hack,使用其他兼容性解决方案代替。

20.对BFC的理解?

BFC,即Block Formatting Context,块级格式化上下文,是Web页面布局的一个渲染区块,它是布局过程中生成的一个独立的渲染区域,可以独立于其他渲染区域进行布局。BFC的特点包括:内部的元素不会影响外部的元素,外部的元素不会影响内部的元素;BFC内部的所有浮动元素都会被提到BFC的顶部。BFC的出现解决了页面布局中的一些问题,例如浮动元素对文档布局的影响,多列布局等。BFC的生成方式包括:float属性不为none,position属性为absolute或fixed,display属性为inline-block、table-cell、table-caption、flex、grid。

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

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

相关文章

CMMI-外包与采购管理

外包与采购管理(Outsourcing and Procurement Management, OPM)是指外包管理和采购管理,目的是选择合适的承包商和供应商,并依据合同进行有效的管理。外包与采购管理过程域是SPP模型的重要组成部分。本规范阐述了外包与采购管理过…

自定义认证器

自定义认证器工作流程 1、设备向AWS IoT发送http请求,包含token和token签名 2、IoT判断这是一个自定义认证请求,然后确认token和token签名是否匹配 3、Lambda函数验证token之后,将输出5项数据, isAuthenticated:求是…

Zookeeper入门与应用

Zookeeper入门与应用1.简介1.1.应用场景1.2.Zookeeper的设计目标1.3数据模型2. 单机安装3.常用shell命令3.1.查询3.2.创建3.3.更新3.4.删除4.zookeeper的Acl权限控制案例/远程登录acl 超级管理员5.zookeeper的 JavaAPI连接到Zookeeper5.1.新增节点5.2.修改节点5.3.删除节点5.4.…

4、数组、切片、map、channel

目录一、数组二、切片三、map四、channel五、引用类型一、数组 数组: 数组是块连续的内存空间,在声明的时候必须指定长度,且长度不能改变所以数组在声明的时候就可以把内存空间分配好,并赋上默认值,即完成了初始化数组…

Spring反射内置工具类ReflectionUtils

Spring反射内置工具类ReflectionUtils前言反射1,什么是反射2,反射的实现2.1获取class对象的三种实现2.1.1Object ——> getClass();2.1.2 任何数据对象(包括数据基本类型)都有一个静态的class属性通过Class类的静态方法&#x…

TX Text Control .NET 31.0 SP1 for WPF 企业版Crack

将文档编辑、创建和 PDF 生成添加到 WPF 应用程序。 TX Text Control for WPF Enterprise 是一个免版税、完全可编程的丰富编辑控件,它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功能。它提供全面的文本格式,强大的邮件合并…

golang fmt.Sprintf(“%.2f“) 的舍入问题

首先,fmt.Sprintf("%.2f")使用的是banker rounding 而不是四舍五入,banker rounding 的定义如下(来自百度百科):1.要求保留位数的后一位如果是4,则舍去。例如5.214保留两位小数为5.21。2.如果保留…

第四代英特尔至强重磅发布,芯片进入下半场:软硬加速、绿色可持续

编辑 | 宋慧 出品 | CSDN 云计算 2023 年的第二周,英特尔重磅发布其企业级芯片领域重要的产品——第四代英特尔 至强 可扩展处理器。作为数据中心处理器当之无愧的王牌产品,迄今为止,英特尔已经向全球客户交付了超8500万颗​至强可扩展处理器…

agent扩展-自定义外部加载路径

自定义classLoader实现加载外部jar, 以skywalking agent 类加载器为例子 整体思路 扩展findClass ,解决loadClass可以查找到扩展findResource,解决getResources可以获取到资源 基本原理 ClassLoader loadClass的加载顺序 findLoadedClass 加载本地已经…

Spring Boot学习篇(十三)

Spring Boot学习篇(十三) shiro安全框架使用篇(五) 1 准备工作 1.1 在SysUserMapper.xml中书写自定义标签 <select id"findRoles" resultType"string">select name from sys_role where id (select roleid from sys_user_role where userid (S…

Matlab论文插图绘制模板第77期—对数刻度横向柱状图

在之前的文章中&#xff0c;分享了Matlab对数刻度柱状图的绘制模板&#xff1a; 进一步&#xff0c;再来看一下对数刻度横向柱状图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系列&#xff0c;旨在降低大家使用Matlab进行科研绘…

[WTL/ATL]_[初级]_[TreeView控件如何显示ToolTip]

场景 在开发界面程序时&#xff0c;CTreeViewCtrl(它实际内部封装的就是Win32的TreeView控件)一般会用来作为选择某些类型的树形菜单&#xff0c;点击某项的时候&#xff0c;右边能显示某些对应的数据。当这个控件的宽度固定时&#xff0c;有时候每行的文本项可能由于过长从而…

【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(双向LSTM,附完整代码和数据集)

写在前面&#xff1a; 首先感谢兄弟们的关注和订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 在https://blog.csdn.net/A…

【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中

【CSS】元素居中一、 水平居中1.行内元素水平居中&#xff08;1&#xff09;text-align2.块级元素水平居中2.1 margin&#xff08;1&#xff09;margin2.2布局&#xff08;1&#xff09;flex justify-content&#xff08;推荐&#xff09;&#xff08;2&#xff09; flexmargin…

张驰咨询:关于六西格玛,有一些常见的疑惑!

​ 很多想要学习六西格玛的学员&#xff0c;经常会有这些困惑&#xff1a; 以前没有接触过六西格玛&#xff0c;需要什么基础吗&#xff1f;自学还是培训&#xff1f;哪些行业会用到六西格玛呢&#xff1f;学习六西格玛对以后的工作有哪些帮助&#xff1f;如何选择六西格玛培…

STM32配置读取双路24位模数转换(24bit ADC)芯片CS1238数据

STM32配置读取双路24位模数转换&#xff08;24bit ADC&#xff09;芯片CS1238数据 CS1238是一款国产双路24位ADC芯片&#xff0c;与CS1238对应的单路24位ADC芯片是CS1237&#xff0c;功能上相当于HX711和TM7711的组合。其功能如下所示&#xff1a; 市面上的模块&#xff1a; …

股票买卖接口怎么来的?

现在股票买卖接口主要是在线上研发&#xff0c;有专业的开发团队进行源码开发和完善&#xff0c;但是&#xff0c;常常会在开发过程中出现问题&#xff0c;也就是遇到一些特殊的情况需要及时处理&#xff0c;那么股票买卖接口怎么开发实现出来的&#xff1f;一、股票买卖接口开…

案例分享| 助力数字化转型:广州期货交易所全栈信创项目管理平台上线

广州期货交易所项目管理平台基于易趋&#xff08;easytrack&#xff09;进行实施&#xff0c;通过近半年的开发及试运行&#xff0c;现已成功交付上线、推广使用&#xff0c;取得了良好的应用效果。1. 关于广州期货交易所&#xff08;以下简称广期所&#xff09;广期所于2021年…

MySQL8.0安装教程

文章目录1.官网下载MySQL2.下载完记住解压的地址&#xff08;一会用到&#xff09;3.进入刚刚解压的文件夹下&#xff0c;创建data和my.ini在根目录下创建一个txt文件&#xff0c;名字叫my&#xff0c;文件后缀为ini&#xff0c;之后复制下面这个代码放在my.ini文件下&#xff…

华为手表开发:WATCH 3 Pro(4)创建项目 + 首页新建按钮,修改初始文本

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;4&#xff09;创建项目 首页新建按钮&#xff0c;修改初始文本初环境与设备创建项目创建项目入口配置项目认识目录结构修改首页初始文本文件名&#xff1a;index.hml新建按钮 “ 按钮 ”index.hml初 鸿蒙可穿戴开发 希望能写…