【前端面试3+1】17 伪类和伪元素的区别、CSS权重、图片显示优化、【二叉树最大深度】

一、伪类和伪元素的区别

1、伪类:

  • 伪类是用来描述元素的特定状态的选择器,比如:hover、:active、:first-child等。
  • 伪类在选择器中以冒号(:)开头,用于匹配处于特定状态的元素。
  • 伪类可以用于选择DOM元素的特定状态,但并不会在文档中生成新的内容

示例:选择第一个子元素的样式

ul li:first-child {
  color: red;
}

2、伪元素:

  • 伪元素是用来在文档中生成虚拟元素的选择器,比如::before、::after等。
  • 伪元素在选择器中以双冒号(::)开头,用于在元素的内容前后生成额外的样式。
  • 伪元素可以用于在元素的内容前后插入额外的内容,比如添加装饰性的内容或样式。

示例:在元素的内容前插入一个装饰性的元素

p::before {
  content: "$";
}

3、小结:

伪类用于选择元素的特定状态,而伪元素用于在元素的内容前后生成虚拟元素。

二、CSS权重

CSS选择器的权重是用来确定样式优先级的重要概念,通常用于解决样式冲突的问题。CSS选择器的权重由四个部分组成,分别是:

  1. 内联样式:在元素的style属性中直接设置的样式。权重值为1000。
  2. ID选择器:通过#符号定义的选择器。权重值为100。
  3. 类选择器、属性选择器和伪类选择器:权重值为10。
  4. 元素选择器和伪元素选择器:权重值为1。

内联样式>ID选择器>类选择器、属性选择器、伪类选择器>元素选择器、伪元素选择器

        根据以上规则,可以计算出CSS选择器的权重,权重值越高的样式会优先生效。如果两个样式的权重相同,则后定义的样式会覆盖前面定义的样式。

例如:

#main-content .article p {
  color: blue;
}

.article p {
  color: red;
}

        第一个选择器的权重为100(ID选择器#main-content) + 10(类选择器.article) + 1(元素选择器p),总权重为111。 第二个选择器的权重为10(类选择器.article) + 1(元素选择器p),总权重为11。

因此,第一个选择器的样式会优先生效,段落文本颜色为蓝色。

三、图片显示优化有哪些方法?

1、图片格式优化

        选择合适的图片格式,如JPEG、PNG、WebP等,根据具体需求选择最适合的格式。JPEG适合照片和图像,PNG适合图形和透明效果,WebP是一种新一代的图片格式,具有更高的压缩率和更小的文件大小。

2、图片压缩

        通过压缩图片文件大小来减少加载时间,可以使用在线工具或图片编辑软件对图片进行压缩。注意在压缩过程中保持图片质量,避免影响显示效果。

3、响应式图片

        使用响应式图片技术,根据设备屏幕大小和分辨率加载不同尺寸的图片,提高页面加载速度和用户体验。可以使用srcset和sizes属性或者picture元素实现响应式图片加载。

4、懒加载

        使用懒加载技术延迟加载图片,只有当图片即将进入视口时才加载,减少页面加载时间和带宽占用。可以通过JavaScript库如LazyLoad.js实现图片懒加载。

5、图片CDN加速

        使用内容分发网络(CDN)来加速图片加载,将图片资源缓存到CDN节点,提高图片加载速度和用户体验。

6、图片预加载

        预加载页面中即将显示的图片,提前加载图片资源,避免用户看到空白或等待过程。

7、图片优化工具

        使用图片优化工具如ImageOptim、TinyPNG等,自动优化图片压缩和格式转换,提高页面性能。

四、【算法】二叉树最大深度

1、题目:

        给定一个二叉树 root ,返回其最大深度。

补充:二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数


 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root) {
   
}

2、解题:

  • 使用递归的方式计算二叉树的最大深度。
  • 如果根节点为空,返回深度0。
  • 否则,分别计算左子树和右子树的最大深度。
  • 最大深度为1加上左子树和右子树中较大的深度。
  • 递归调用直到叶子节点,然后向上返回深度值。
int maxDepth(struct TreeNode* root) {
    if (root == NULL) {
        return 0;
    } else {
        int leftDepth = maxDepth(root->left);
        int rightDepth = maxDepth(root->right);
        
        return 1 + (leftDepth > rightDepth ? leftDepth : rightDepth);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ARM看门狗定时器

作用 在S3C2440A中,看门狗定时器的作用是当由于噪声和系统错误引起的故障干扰时恢复控制器的工作。 也就是说,系统内部的看门狗定时器需要在指定时间内向一个特殊的寄存器内写入一个数值,俗称喂狗。 如果喂狗的时间过了,那么看门…

基于springboot+vue实现的疫情防控物资调配与管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

探索顶级短视频素材库:多样化选择助力创作

在数字创作的浪潮中,寻找优质的短视频素材库是每位视频制作者的必经之路。多种短视频素材库有哪些?这里为您介绍一系列精选的素材库,它们不仅丰富多样,而且高质量,能极大地提升您的视频创作效率和质量。 1.蛙学网 蛙学…

git操作基本命令

Git命令操作: 1、服务器上面有新的修改,pull出现错误操作如下 git stash git pull origin master git stash pop 2、删除本地一个文件test.py,想重新download远程服务器最新的文件 #git checkout test.py 3、查看当前处于哪一个分支 #git …

stm32开发之threadx整合letter-shell 组件记录

前言 使用过rt-thread的shell 命令交互的方式,觉得比较方便,所以在threadx中也移植个shell的组件。这里使用的是letter-shellletter-shell 核心的逻辑在于组件通过链接文件自动初始化或自动添加的两种方式,方便开发源码仓库 实验(核心代码) shell 线程…

ECMA进阶1之从0~1搭建react同构体系项目1

ECMA进阶 ES6项目实战前期介绍SSRpnpm 包管理工具package.json 项目搭建初始化配置引入encode-fe-lint 基础环境的配置修改package.jsonbabel相关tsconfig相关postcss相关补充scripts脚本webpack配置base.config.tsclient.config.tsserver.config.ts src环境server端&#xff1…

链表--经典题

题目一:移除链表元素 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2: 输入:head [], val 1 输出:[]示例 3: 输入:head [7,7,7,7], val 7 输出…

【转】关于vsCode创建后,不显示NPM脚本解决

刚刚使用vue ui新建了个vue项目,打开vs-code发现,无论怎么设置都找不到NPM脚本显示,苦恼了很久,突然发现!打开了package-lock.json,然后立马把vs-code关闭,重新打开,就显示了npm脚本…

计算机网络(三)数据链路层

数据链路层 基本概念 数据链路层功能: 在物理层提供服务的基础上向网络层提供服务,主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改在为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的…

03-echarts如何画立体柱状图

echarts如何画立体柱状图 一、创建盒子1、创建盒子2、初始化盒子(先绘制一个基本的二维柱状图的样式)1、创建一个初始化图表的方法2、在mounted中调用这个方法3、在方法中写options和绘制图形 二、画图前知识1、坐标2、柱状图图解分析 三、构建方法1、创…

构建高效协同平台架构:实现团队协作的新高度

随着企业规模的扩大和工作方式的变革,团队协作变得愈发重要。在这个数字化时代,构建一个高效的协同平台架构,能够为团队提供强大的工具和资源,实现更加高效、灵活的协作方式。本文将探讨协同平台架构的重要性,并介绍如…

UE5不打包启用像素流 ubuntu22.04

首先查找引擎中像素流的位置: zkzk-ubuntu2023:/media/zk/Data/Linux_Unreal_Engine_5.3.2$ sudo find ./ -name get_ps_servers.sh [sudo] zk 的密码: ./Engine/Plugins/Media/PixelStreaming/Resources/WebServers/get_ps_servers.sh然后在指定路径中…

笔试的解题思路很多,

昨天发的笔试题目,留言的人还挺多,这道笔试题目是字节的嵌入式笔试题目,从面试的朋友描述说,对方的面试过程很专业。 现场写代码, 金三银四一直是铁律,去年我一个朋友离职后,也是最近这几天拿到…

【C语言】预处理

个人主页点这里~ 预处理 一、预处理符号二、#define定义常量三、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏与函数的对比(一)、宏的优势(二)、宏的劣势(三)、宏和函数的对比 七、#和##1、…

Emacs之增加/取消输入括号自动匹配(一百三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

vue webpack打包配置生成的源映射文件不包含源代码内容、加密混淆压缩

前言:此案例使用的是vue-cli5 一、webpack源码泄露造成的安全问题 我们在打包后部署到服务器上时,能直接在webpack文件下看到我们项目源码,代码检测出来是不安全的。如下两种配置解决方案: 1、直接在项目的vue.config.js文件中加…

C语言 | Leetcode C语言题解之第30题串联所有单词的子串

题目: 题解: typedef struct {char key[32];int val;UT_hash_handle hh; } HashItem;int* findSubstring(char * s, char ** words, int wordsSize, int* returnSize){ int m wordsSize, n strlen(words[0]), ls strlen(s);int *res (int *)mall…

【测试开发学习历程】python常用的模块(中)

目录 5 time模块 5.1、Python中的四种格式的时间: 5.2、time模块中的常用函数 6 I/O流操作 6.1 创建文件 6.2 读取一个文件存入到另外一个文件 6.3 with open as 结构 6.4 open和with open as的区别 7 Excel的操作模块-openpyxl 7.1、新建Excel文件进行读…

11.范式与反范式设计

范式 1.问题 MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多…

bestvike 资料 --Spring Boot 2.5.0

Spring Boot 2.5.0 SSM环境搭建 springspringmvcmybatisspring springmvc mybatis # 项目 - 需求分析 概要设计(库表设计) 详细设计(验证库表正确性) 编码(环境搭建业务代码) 测试 部署上线# 员工添加 查询所有功能 SSM - 库表 库: ssm 数据库:mysql 表: id na…