【前端面试3+1】20 css三栏布局6种实现方式、多行文本溢出怎么实现、token过期了怎么处理、【二叉树的中序遍历】

news2024/9/24 17:13:11

一、css三栏布局6种实现方式

1.浮动布局(Floats)

.container {
  overflow: auto; /* 清除浮动 */
}

.left, .right {
  width: 20%; /* 左右栏宽度 */
  float: left;
}

.middle {
  width: 60%; /* 中间栏宽度 */
  margin: 0 20%; /* 左右栏宽度 */
}

2.Flexbox

.container {
  display: flex;
}

.left, .right {
  flex: 1; /* 左右栏宽度 */
}

.middle {
  flex: 3; /* 中间栏宽度 */
}

3.Grid布局

.container {
  display: grid;
  grid-template-columns: 1fr 3fr 1fr; /* 1fr, 3fr, 1fr */
}

.left, .right {
  /* 无需额外样式 */
}

.middle {
  /* 无需额外样式 */
}

4.多列布局(CSS Columns)

.container {
  column-count: 3; /* 3列 */
  column-gap: 20px; /* 列间距 */
}

.left, .right {
  width: 20%; /* 左右栏宽度 */
}

.middle {
  width: 60%; /* 中间栏宽度 */
}

5.绝对定位

.container {
  position: relative;
}

.left, .right {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 20%;
}

.left {
  left: 0;
}

.right {
  right: 0;
}

.middle {
  margin: 0 20%;
}

6.表格布局(Table)

.container {
  display: table;
  width: 100%;
}

.left, .right, .middle {
  display: table-cell;
}

.left, .right {
  width: 20%;
}

.middle {
  width: 60%;
}

二、多行文本溢出怎么实现?

  1. 使用overflow属性

    overflow: hidden; 可以隐藏溢出的文本。overflow: scroll; 或 overflow: auto; 可以为容器添加滚动条。
  2. 使用text-overflow属性

    text-overflow: ellipsis; 会在溢出的文本后面显示一个省略号(...),这通常与white-space: nowrap;overflow: hidden;一起使用。

    下面是一个简单的例子,展示如何使用text-overflow属性来实现多行文本溢出的处理:

    .container {
      width: 200px; /* 容器宽度 */
      border: 1px solid #000;
      padding: 10px;
      box-sizing: border-box;
      overflow: hidden; /* 隐藏溢出内容 */
      text-overflow: ellipsis; /* 显示省略号 */
      display: -webkit-box; /* 启用多行文本溢出 */
      -webkit-line-clamp: 3; /* 限制行数 */
      -webkit-box-orient: vertical; /* 设置方向为垂直 */
    }
    <div class="container">
      这是一段很长的文本,需要在容器内自适应显示,并在溢出时显示省略号。
    </div>

    注意:-webkit-line-clamp属性是非标准的,并且在非Webkit浏览器中可能不起作用。对于跨浏览器兼容性,可能需要使用JavaScript或其他方法来实现类似的效果。

  3. 使用white-space属性

    white-space: nowrap; 防止文本换行,使其在同一行显示。white-space: normal; 允许文本正常换行。
  4. 使用word-break属性

    word-break: break-all; 允许在单词内断行。
  5. 使用-webkit-line-clamp属性(非标准属性,仅在Webkit浏览器有效):

    -webkit-line-clamp: 3; 可以限制在一个元素内显示的文本行数。
  6. 使用CSS Grid或Flexbox布局

    (1)Grid
    <div class="grid-container">
      <div class="grid-item">
        这是一段很长的文本,需要在容器内自适应显示,并在溢出时显示滚动条。
      </div>
    </div>
    .grid-container {
      display: grid;
      grid-template-columns: auto; /* 根据内容自动调整列宽 */
      grid-auto-rows: minmax(1em, auto); /* 行高根据内容自动调整 */
      gap: 10px; /* 设置网格项之间的间隙 */
      max-height: 150px; /* 设置容器的最大高度 */
      overflow: auto; /* 如果内容溢出,显示滚动条 */
    }
    
    .grid-item {
      grid-column: 1 / -1; /* 跨越所有列 */
      white-space: normal; /* 允许文本正常换行 */
    }
    (2)Flesbox
    <div class="flex-container">
      <div class="flex-item">
        这是一段很长的文本,需要在容器内自适应显示,并在溢出时显示滚动条。
      </div>
    </div>
    .flex-container {
      display: flex;
      flex-direction: column; /* 垂直排列子元素 */
      max-height: 150px; /* 设置容器的最大高度 */
      overflow: auto; /* 如果内容溢出,显示滚动条 */
    }
    
    .flex-item {
      flex: 1; /* 子元素占据可用空间 */
      display: flex;
      align-items: flex-start; /* 子元素在交叉轴的起点对齐 */
    }

  7. 使用JavaScript动态调整文本

    根据容器的大小动态调整文本的长度或内容。
  8. 使用媒体查询

    根据屏幕尺寸调整文本样式,以适应不同设备。

三、token过期了怎么处理

1.检测Token过期

  • 通常在API请求响应中,服务器会返回一个状态码,如401 Unauthorized,表示认证失败,可能是因为Token过期。
  • 客户端需要能够解析这些响应,并识别出Token过期的情况。

2.刷新Token

  • 如果后端支持Token刷新机制,客户端可以在检测到Token过期时,使用Refresh Token(如果存在)来请求一个新的访问Token。

3.重新登录

  • 如果没有Refresh Token或者刷新Token也过期了,客户端可能需要引导用户重新登录以获取新的Token。

4.自动重试请求

  • 在某些情况下,客户端可以在成功刷新Token后,自动重试之前因Token过期而失败的请求。

5.更新UI

  • 通知用户Token已过期,并根据需要更新用户界面,比如显示登录表单或错误消息。

6.安全性考虑

  • 在处理Token过期时,确保所有的Token刷新和重新登录过程都是安全的,避免Token泄露或CSRF攻击。

7.日志记录

  • 记录Token过期的事件,这有助于监控和调试问题。

7.用户会话管理

  • 在服务端,确保在Token过期后,相关的用户会话也被适当地管理或终止。

四、【算法】二叉树的中序遍历

题目

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

示例 1:

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

提示:

  • 树中节点数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100

解题

中序遍历二叉树是一种常见的树遍历算法,其遍历顺序为:左子树 -> 根节点 -> 右子树。以下是使用递归方法实现的中序遍历代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
 // 定义一个辅助函数来执行中序遍历
    int *result = (int*)malloc(1000 * sizeof(int)); // 假设最多1000个节点
    if (!result) {
        return NULL; // 如果内存分配失败,返回NULL
    }
    *returnSize = 0; // 初始化返回大小为0

    inorder(root, result, returnSize);

    return result;
}

// 辅助递归函数,填充结果数组
void inorder(struct TreeNode* node, int *result, int *returnSize) {
    if (node == NULL) {
        return;
    }
    inorder(node->left, result, returnSize); // 遍历左子树
    result[(*returnSize)++] = node->val; // 访问当前节点
    inorder(node->right, result, returnSize); // 遍历右子树
}

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

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

相关文章

面试经典 222. 完全二叉树的节点个数

二叉树我最近刷的特别多&#xff0c;差不多快刷完了&#xff0c;但是有一种题型差点给我忽略了&#xff0c;那就是完全二叉树&#xff0c;这也是一个很重要的题型&#xff0c;今天刚好有一道题目可以来复习一下完全二叉树的特性 题目链接如下&#xff1a;https://leetcode.cn/…

力扣-200.岛屿数量

刷力扣热题–第二十四天:200.岛屿数量 新手第二十四天 奋战敲代码&#xff0c;持之以恒&#xff0c;见证成长 1.题目描述 2.题目解答 这道题刚开始想的确实想的绞尽脑汁的&#xff0c;看了相关解答才明白的&#xff0c;三种方法&#xff0c;这里想先用两种方法进行实现&#…

MySQL改密码(简洁无废话)

1.找到MySQL的bin目录&#xff1a; 2.在上方输入cmd&#xff1a; 进入这个界面&#xff1a; 3.输入 mysqladmin -uroot -p password 4.输入后在下面输入原密码&#xff1a; 5.下面输入新密码&#xff0c;确认新密码&#xff1a; 然后就可以修改成功了。

学习 Helm ,一文弄懂

1. 什么是 Helm 1.1 概述 Helm 是 Kubernetes 应用程序的包管理器,和redhat中yum 管理包类似. 1.2 架构图v3 1.3 下载 官当 最新版本 官方github curl -LO https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz 1.4 安装 解压 #由于是二进制,直接解压到/usr/local/b…

科普文:解读MySQL 执行计划explain

概叙 实战&#xff1a;万字小结MySQL慢原因分析-CSDN博客 实战&#xff1a;搞懂SQL执行流程、SQL执行计划解读和SQL优化_sql解析和sql执行计划-CSDN博客 在排查mysql执行慢的过程中&#xff0c;前面文章中都有解释explain执行计划&#xff0c;这里单独拿出来解读一下。 慢查…

uniapp打开地图直接获取位置

uniapp官网文档 https://en.uniapp.dcloud.io/api/location/open-location.html <view class"map-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view></view>import map from ../../…

业务逻辑支付漏洞靶场复现(dami,niushop,cmseasy)

目录 dami_5.4 第一种&#xff1a;直接修改页面数量 第二种&#xff1a;利用抓包修改购买数量和金额 Niushop Cmseasy 第一种&#xff1a;改变购买数量 第二种&#xff1a;利用抓包修改数量 dami_5.4 首先通过注册页面注册账户&#xff0c;并登录。 第一种&#xff1a;直…

鉴源实验室·HTTP协议网络安全攻击

作者 | 李芷若 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着互联网的迅猛发展&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&…

萝卜快跑引领换电革命,储能蓝海爆发千亿商机,你抓住了吗?

近日&#xff0c;百度旗下的无人驾驶出行服务平台“萝卜快跑”火爆出圈&#xff0c;7月10日凭借优秀的订单量表现成功助推百度股价上涨超10%&#xff0c;其六公里4元的超高性价比广受好评。多个网络平台的自媒体博主们也抓准时机开始各类测评体验。 百度“萝卜快跑”无人驾驶项…

QT安装 error: [QNetworkReply::NetworkError(

QT安装遇到问题&#xff1a; [29040] Warning: No QtAccount credentials found. Please login via the maintenance tool of the SDK. [29040] Warning: No QtAccount credentials found. Please login via the maintenance tool of the SDK. [31404] Warning: Network error…

linux用户组练习

准备工作 [rootlocalhost ~]# watch -n 1 tail -n 5 /etc/group使用watch 动态监控 1.建立用户组 shengcan&#xff0c;其id 为2000 2.建立用户组 caiwu&#xff0c;其id 为 2001 3.足建立用户组 jishu&#xff0c;其id 为 2002 4.建立用户lee&#xff0c;指定其主组id为sh…

QT多媒体编程(二)——视频编程知识详解及mp4视频播放器Demo

目录 引言 1. QMediaPlayer 类详解 1.1 基本用法 示例代码&#xff1a; 1.2 常用函数 2. QVideoWidget 类详解 2.1 基本用法 示例代码&#xff1a; 2.2 常用函数 3. 实际案例&#xff1a;视频播放器 UI界面 核心代码&#xff1a; 运行结果&#xff1a; 4. 总结 引…

NodeJS凉山地区特色农产品团购平台-计算机毕业设计源码72936

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 用户登录流程 2.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4用例分析 2.5本章小结 3 系统总体设计 3…

【LeetCode每日一题】2024年8月第一周(上)

2024.7.30 中等 链接&#xff1a;2961. 双模幂运算 &#xff08;1&#xff09;题目描述&#xff1a; &#xff08;2&#xff09;示例&#xff1a; &#xff08;3&#xff09;分析&#xff1a; ① 在计算中&#xff0c;反复用到了%10&#xff0c;说明返回的只要取个位即可&…

SEO之网站结构优化(八)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 8、URL静态化 URL静态化一直以来都是最基本的SEO要求之一&#xff0c;但近一两年 SEO 行业对是否一定要做静…

科普文:万字细说微服务及其框架Netflix,Spring Cloud,Spring Cloud Alibaba梳理

概叙 微服务&#xff08;Microservices&#xff09;是一种软件架构风格&#xff0c;它将单一的应用程序拆分为多个小的服务&#xff0c;每个服务都是独立运行和部署的。每个微服务通常只专注于一个业务功能&#xff0c;具有自己的数据存储&#xff0c;并且通过轻量级的通信机制…

多无人机协同机间通信技术详解

随着无人机技术的飞速发展&#xff0c;多无人机系统&#xff08;Multi-Unmanned Aerial Vehicle, Multi-UAV&#xff09;在军事侦察、环境监测、目标跟踪、物流配送等多个领域展现出巨大潜力。多无人机协同作业的核心在于高效的机间通信技术&#xff0c;它能够实现无人机之间的…

npm install 巨慢,导致Jenkins编译报错问题解决——基础积累

今天在弄后台系统的服务器编译时&#xff0c;一直报错。报错信息为&#xff1a;系统找不到指定的路径。 最后进入到服务器中&#xff0c;找到E:/Jenkins/WorkSpace/JiePeiAiMomsAdmin_FenZhi这个路径&#xff0c;然后通过cmd进入到命令提示符中。 然后通过npm i进行安装&#…

简单的docker学习 第4章docker容器

第4章 Docker容器 4.1 容器基础 4.1.1 容器启动流程 通过 docker run 命令可以启动运行一个容器。该命令在执行时首先会在本地查找指定的镜像&#xff0c;如果找到了&#xff0c;则直接启动&#xff0c;否则会到镜像中心查找。如果镜像中心存在该镜像&#xff0c;则会下载到…

外贸建站:WordPress搭建外贸独立站零基础小白保姆级教程

凡做外贸的&#xff0c;我相信在过去几年中通过亚马逊、速卖通等电商平台上都取得了一定的成功。然而&#xff0c;近年来电商平台上的竞争激烈&#xff0c;利润空间有限&#xff0c;流量获取困难和昂贵&#xff0c;这对许多外贸从业者造成了困扰。因此&#xff0c;为了减少对平…