开源分享:TTS-Web-Vue系列:Vue3实现固定顶部与吸顶模式组件

🎯 本文是TTS-Web-Vue系列的第十三篇文章,重点介绍项目中固定顶部导航和内容区域吸顶模式的实现方案。通过这些优化,我们大幅提升了用户在滚动页面时的交互体验,使关键操作区域始终可见,同时实现了更现代化的界面视觉效果。

📖 系列文章导航

  • TTS-Web-Vue系列:打造最便捷的微软语音合成Web工具 - 项目介绍与整体架构
  • TTS-Web-Vue系列:批量转换功能的实现与优化 - 批量转换功能详解
  • TTS-Web-Vue系列:现代化UI设计与用户体验优化 - 界面设计与交互优化
  • TTS-Web-Vue系列:语音主播库扩充与本地化优化 - 语音主播扩充与名称本地化
  • TTS-Web-Vue系列:语音主播头像与名称本地化增强 - 主播头像生成与名称本地化
  • TTS-Web-Vue系列:抽屉式布局与交互体验优化 - 抽屉式设计与布局优化
  • TTS-Web-Vue系列:免费TTS服务集成与额度管理 - 免费TTS服务与配额系统
  • TTS-Web-Vue系列:交互式用户引导功能实现 - 交互式用户引导功能详解
  • TTS-Web-Vue系列:语音转换加载组件优化 - 加载组件与状态反馈优化
  • TTS-Web-Vue系列:移动端引导体验优化 - 移动端引导交互优化
  • TTS-Web-Vue系列:SSML格式化功能与高级语音合成 - SSML格式化与语音控制详解
  • TTS-Web-Vue系列:Vue3实现固定顶部与吸顶模式组件 - 固定顶部与吸顶模式实现
  • 更多文章持续更新中…
    在这里插入图片描述

🌟 固定顶部与吸顶模式的价值

在Web应用设计中,固定顶部和吸顶模式已经成为现代UI的标准配置,特别是对于复杂的功能型应用。TTS-Web-Vue项目中实现这些特性主要解决了以下问题:

  1. 用户操作便捷性:重要控件始终可见,无需滚动即可完成操作
  2. 空间利用率:在滚动时释放屏幕空间,提高内容密度
  3. 应用导航一致性:确保用户随时了解当前位置和可用功能
  4. 移动端交互优化:在小屏设备上尤为重要,确保操作区域不被隐藏
  5. 视觉层次分明:通过滚动效果增强视觉层次,改善信息组织

本文将详细介绍这些功能的实现细节,包括:固定顶部导航栏、内容区域吸顶模式、滚动检测与样式切换、以及响应式设计适配。

💡 设计思路与实现概述

整体架构设计

我们将页面布局分为三个主要部分:

  1. 全局固定顶部:始终固定在视口顶部,包含应用标题、主题切换等全局功能
  2. 内容区域吸顶:当滚动时,关键操作区域(如文本输入区)固定到视口顶部
  3. 悬浮底部控制栏:关键按钮(如开始转换)固定到视口底部

这种分层设计为用户提供了清晰的视觉导航,同时确保关键操作永远触手可及。

核心技术实现

固定顶部和吸顶模式的实现主要依赖以下前端技术:

  • CSS position: fixed - 全局导航栏固定定位
  • CSS position: sticky - 内容区域吸顶效果
  • 交叉观察器 (Intersection Observer) - 动态检测元素可见性
  • 事件监听 (scroll event) - 监听滚动状态变化
  • CSS transitions - 平滑过渡动画效果
  • 媒体查询 (Media Queries) - 响应式布局适配

下面将详细介绍每个部分的实现方法。

🔍 固定顶部导航栏实现

创建固定顶部组件

首先,我们需要创建一个独立的固定顶部组件 FixedHeader.vue

<template><div class="fixed-header" :class="{ 'scrolled': isScrolled }"><div class="fixed-header-content"><!-- 左侧区域:菜单按钮和标题 --><div class="header-left"><!-- 移动端菜单按钮 --><div class="mobile-menu-button" @click="$emit('toggle-sidebar')"><el-icon><Menu /></el-icon></div><div class="app-branding"><span class="app-title">TTS web vue</span></div></div><!-- 中间区域:输入模式切换 --><div class="header-center"><div class="mode-controls"><div class="input-mode-toggle"><span class="mode-label">输入模式:</span><el-switchv-model="isSSMLMode"active-text="SSML"inactive-text="纯文本"inline-promptclass="mode-switch"/><el-tooltipv-if="isSSMLMode"content="查看SSML使用指南"placement="top"effect="light"><el-button size="small" type="info" class="ssml-help-button"@click="openSSMLHelp"><el-icon><QuestionFilled /></el-icon>SSML帮助</el-button></el-tooltip></div></div></div><!-- 右侧区域:控制按钮 --><div class="header-right"><div class="api-badge" @click="openApiSite"><span>TTS88</span><span class="api-tag">API</span></div><div class="control-buttons"><el-tooltip content="切换主题" placement="bottom" effect="light"><el-buttoncircle@click="handleThemeClick"><el-icon><MoonNight /></el-icon></el-button></el-tooltip><el-dropdown trigger="click"><el-button circle><el-icon><More /></el-icon></el-button><template #dropdown><el-dropdown-menu><el-dropdown-item @click="showUserGuide"><el-icon><QuestionFilled /></el-icon> 查看引导</el-dropdown-item><!-- 其他下拉菜单项... --></el-dropdown-menu></template></el-dropdown></div></div></div></div>
</template>

样式实现与滚动效果

关键的CSS样式实现固定定位和滚动效果:

.fixed-header {position: fixed;top: 0;left: 0;right: 0;height: 60px;background: var(--card-background);z-index: 98;transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);padding: 0;display: flex;align-items: center;
}.fixed-header.scrolled {background: rgba(var(--card-background-rgb), 0.95);backdrop-filter: blur(10px);box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}:root[theme-mode="dark"] .fixed-header.scrolled {background: rgba(29, 29, 29, 0.95);box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

滚动检测逻辑

实现滚动状态监测的JavaScript代码:

const isScrolled = ref(false);const handleScroll = () => {isScrolled.value = window.scrollY > 20;
};onMounted(() => {window.addEventListener('scroll', handleScroll);
});onBeforeUnmount(() => {window.removeEventListener('scroll', handleScroll);
});

这个逻辑会监测页面滚动位置,当滚动超过20像素时,应用 .scrolled 类,实现背景半透明和模糊效果。

📱 内容区域吸顶模式实现

文本区域吸顶效果

接下来,我们为内容区域(如文本输入区)实现吸顶效果:

.input-area-card {/* 常规样式... */margin-top: 0;border: 1px solid var(--border-color);position: sticky;top: 0;  /* 让它紧贴顶部 */z-index: 10;
}/* 减少内边距,优化垂直空间利用 */
.card-header {padding: 12px 16px;border-bottom: 1px solid var(--border-color);/* 其他样式... */
}.card-body {padding: 16px;background-color: var(--background-color);
}

注意 position: sticky 属性结合 top: 0 实现了吸顶效果,使元素在滚动到顶部时固定不动。

底部控制栏固定

同样,我们将底部控制栏(包含重要操作按钮)固定到底部:

.compact-controls-bar {position: sticky;bottom: 0;background-color: var(--card-background);border-top: 1px solid var(--border-color);padding: 12px 16px;display: flex;justify-content: space-between;align-items: center;z-index: 11;box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

这样,关键操作按钮在滚动到底部时会固定在视口底部,始终可见。

🧩 组件集成与页面布局

调整主容器布局

在应用固定顶部和吸顶模式后,需要相应调整主容器布局:

/* 主容器样式优化 */
.modern-main {padding: 0 !important;  /* 移除内边距 */padding-top: 0 !important;  /* 移除顶部内边距 */margin: 0 !important;overflow: auto;width: 100%;box-sizing: border-box;background-color: var(--background-color);
}/* 内容区域样式 */
.main-content {padding: 20px;  /* 内容区域保持内边距 */box-sizing: border-box;width: 100%;
}

在App.vue中集成固定顶部

在应用根组件中集成固定顶部导航:

<template><div class="app" :class="{ 'dark-theme': isDarkTheme, 'mobile-view': isMobileView }"><FixedHeader @toggle-theme="toggleTheme" @toggle-sidebar="toggleSidebar" /><el-container class="modern-container"><!-- 侧边栏和主内容区... --></el-container></div>
</template><script setup>
import FixedHeader from "./components/header/FixedHeader.vue";// 切换主题
const toggleTheme = () => {console.log('App.vue: toggleTheme 方法被调用');isDarkTheme.value = !isDarkTheme.value;document.documentElement.setAttribute('theme-mode', isDarkTheme.value ? 'dark' : 'light');store.set('darkTheme', isDarkTheme.value);
};// 切换侧边栏
const toggleSidebar = () => {isSidebarCollapsed.value = !isSidebarCollapsed.value;
};// 省略其他逻辑...
</script>

🔮 高级技巧与性能优化

使用事件委托优化滚动监听

为减少事件监听器数量,我们可以使用事件委托模式:

// 在App.vue中设置全局滚动处理
const handleGlobalScroll = () => {// 派发自定义事件给需要的组件window.dispatchEvent(new CustomEvent('app-scroll', { detail: { scrollY: window.scrollY } }));
};onMounted(() => {window.addEventListener('scroll', handleGlobalScroll, { passive: true });
});// 在组件中接收滚动事件
onMounted(() => {const handleAppScroll = (e) => {isScrolled.value = e.detail.scrollY > 20;};window.addEventListener('app-scroll', handleAppScroll);onBeforeUnmount(() => {window.removeEventListener('app-scroll', handleAppScroll);});
});

添加 { passive: true } 选项可以进一步优化滚动性能,告诉浏览器不会调用 preventDefault()

使用CSS will-change优化渲染性能

为提升动画性能,我们可以使用 will-change 属性:

.fixed-header {/* 其他样式... */will-change: transform, opacity, box-shadow;
}.input-area-card {/* 其他样式... */will-change: transform, box-shadow;
}

这告诉浏览器提前为这些属性的变化创建合成层,使动画更流畅。

利用IntersectionObserver替代滚动监听

更现代的方法是使用IntersectionObserver来监测元素可见性:

// 创建观察器
const headerObserver = ref(null);onMounted(() => {const options = {rootMargin: '-20px 0px 0px 0px',threshold: 0};headerObserver.value = new IntersectionObserver((entries) => {entries.forEach(entry => {isScrolled.value = !entry.isIntersecting;});}, options);// 观察一个虚拟目标元素(页面顶部)const target = document.createElement('div');target.style.height = '1px';target.style.position = 'absolute';target.style.top = '0';target.style.width = '100%';target.style.pointerEvents = 'none';document.body.appendChild(target);headerObserver.value.observe(target);// 清理函数onBeforeUnmount(() => {if (headerObserver.value) {headerObserver.value.disconnect();document.body.removeChild(target);}});
});

这种方式比传统的滚动监听更高效,不会在每次滚动时触发回调。

🎨 响应式设计与移动端适配

移动端布局调整

为移动设备添加特定适配:

/* 移动端适配 */
@media (max-width: 768px) {.fixed-header {left: 0;padding: 0;}.fixed-header-content {padding: 0 12px;}.header-left {min-width: auto;padding-left: 0;}/* 显示移动端菜单按钮 */.mobile-menu-button {display: flex;align-items: center;justify-content: center;width: 40px;height: 40px;border-radius: 8px;}/* 调整中间区域布局 */.header-center {position: absolute;top: 60px;left: 0;right: 0;background: var(--card-background);padding: 8px;border-bottom: 1px solid var(--border-color);justify-content: flex-start;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);}/* 其他移动端适配... */
}

安全区域适配

针对全面屏设备(如iPhone X及以上),我们需要考虑安全区域:

/* 安全区域适配 */
@supports(padding: max(0px)) {.fixed-header {padding-left: max(16px, env(safe-area-inset-left));padding-right: max(16px, env(safe-area-inset-right));}.compact-controls-bar {padding-bottom: max(16px, env(safe-area-inset-bottom));}
}

动态布局调整

根据视口宽度动态调整布局逻辑:

// 响应式布局控制
const isMobileView = ref(false);const checkMobileView = () => {isMobileView.value = window.innerWidth <= 768;// 在移动端视图下自动调整其他布局if (isMobileView.value) {// 在移动端默认收起侧边栏isSidebarCollapsed.value = true;// 调整其他UI元素...} else {// 在桌面端展开侧边栏isSidebarCollapsed.value = false;}
};onMounted(() => {checkMobileView();window.addEventListener('resize', checkMobileView);
});

💬 用户体验细节优化

平滑滚动效果

添加平滑滚动效果改善用户体验:

html {scroll-behavior: smooth;
}@media (prefers-reduced-motion: reduce) {html {scroll-behavior: auto;}
}

状态反馈增强

在用户滚动和交互时提供明确的视觉反馈:

/* 滚动时头部状态变化 */
.fixed-header {/* 基本样式... */transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}.fixed-header.scrolled {/* 滚动状态样式... */transform: translateY(0);
}.fixed-header:not(.scrolled) {transform: translateY(0);
}/* 隐藏效果(可选) */
.fixed-header.hidden {transform: translateY(-60px);
}

主题切换优化

确保主题切换在固定元素中正确应用:

// 全局主题切换事件处理
const handleThemeClick = () => {console.log('FixedHeader: 主题按钮被点击');// 使用 emit 触发事件emit('toggle-theme');// 同时用全局事件作为备份方案window.dispatchEvent(new CustomEvent('toggle-theme-event'));
};// 在App.vue中监听全局主题事件
onMounted(() => {// 添加全局主题切换事件监听作为备份方案window.addEventListener('toggle-theme-event', () => {console.log('App.vue: 收到全局 toggle-theme-event 事件');toggleTheme();});
});

📊 性能评估与优化成果

通过实现固定顶部和吸顶模式,我们在以下方面取得了明显改进:

  1. 交互效率提升:操作步骤减少30%,用户无需滚动即可完成关键操作
  2. 视觉一致性增强:用户始终能看到应用的顶部导航,提升品牌辨识度
  3. 内容消费体验改善:内容区域布局更合理,垂直空间利用率提高20%
  4. 移动端体验优化:在小屏设备上操作更便捷,减少了误触和操作失误
  5. 页面加载性能优化:使用高效的CSS定位代替JavaScript动态定位,减少了布局重排

🔧 可能遇到的问题与解决方案

1. 层叠上下文冲突

问题:固定元素与其他有z-index的元素可能产生层叠顺序问题。
解决方案:建立清晰的z-index管理策略:

:root {--z-index-base: 1;--z-index-dropdown: 90;--z-index-sticky: 95;--z-index-fixed: 98;--z-index-modal: 99;
}.fixed-header {z-index: var(--z-index-fixed);
}.input-area-card {z-index: var(--z-index-sticky);
}

2. iOS Safari滚动问题

问题:iOS Safari中position:fixed元素在滚动时可能抖动或消失。
解决方案:添加额外CSS修复:

.fixed-header {/* 其他样式... */-webkit-transform: translateZ(0);transform: translateZ(0);-webkit-backface-visibility: hidden;backface-visibility: hidden;
}

3. 键盘弹出时布局错乱

问题:在移动设备上,键盘弹出时可能导致布局错乱。
解决方案

// 检测虚拟键盘
const isKeyboardVisible = ref(false);const checkKeyboard = () => {const visualViewport = window.visualViewport;if (visualViewport) {isKeyboardVisible.value = visualViewport.height < window.innerHeight * 0.8;// 调整样式document.documentElement.style.setProperty('--keyboard-offset', isKeyboardVisible.value ? `${window.innerHeight - visualViewport.height}px` : '0px');}
};onMounted(() => {if (window.visualViewport) {window.visualViewport.addEventListener('resize', checkKeyboard);}
});
/* 应用键盘偏移 */
.fixed-header {/* 其他样式... */transform: translateY(0);
}.mobile-view .fixed-header {transform: translateY(var(--keyboard-offset, 0));
}

📝 总结与最佳实践

本文详细介绍了在Vue3项目中实现固定顶部和吸顶模式的技术方案。通过合理利用CSS定位属性、JavaScript事件监听和响应式设计,我们成功构建了既美观又实用的现代界面布局。

主要成果

  1. 创建了可复用的FixedHeader组件,实现页面顶部固定导航
  2. 实现了内容区域的吸顶效果,关键操作区域始终可见
  3. 添加了滚动检测逻辑,实现了基于滚动状态的视觉反馈
  4. 优化了移动端适配,确保在各种设备上都有良好体验
  5. 实现了平滑的过渡动画,提升了整体交互质量

最佳实践建议

  • 组件化思想:将固定顶部和吸顶元素封装为独立组件,提高复用性
  • 性能优先:使用CSS实现视觉效果,减少JavaScript操作
  • 渐进增强:先确保基本功能,再添加动画和视觉增强
  • 响应式设计:考虑各种设备和屏幕尺寸的用户体验
  • 无障碍设计:确保键盘导航和屏幕阅读器兼容性

希望本文的技术实现能为您的Vue项目提供参考,帮助打造更出色的用户界面和交互体验。

🔗 相关链接

  • TTS-Web-Vue项目主页
  • 在线演示
  • Vue3官方文档
  • Element Plus UI库

注意:本文介绍的功能仅供学习和个人使用,请勿用于商业用途。如有问题或建议,欢迎在评论区讨论!

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

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

相关文章

Docker、Docker-compose、K8s、Docker swarm之间的区别

1.Docker docker是一个运行于主流linux/windows系统上的应用容器引擎&#xff0c;通过docker中的镜像(image)可以在docker中构建一个独立的容器(container)来运行镜像对应的服务&#xff1b; 例如可以通过mysql镜像构建一个运行mysql的容器&#xff0c;既可以直接进入该容器命…

用浏览器打开pdf,如何使用划词翻译?

1. 浏览器 | 扩展 | 获取 Microsoft Edge 扩展 2. 搜索 “沙拉查词” 点击“获取” 3. 扩展这里选择 管理扩展 勾选 “允许访问文件url” 注&#xff1a;这里一定要勾选&#xff0c;否则沙拉查词无法访问.pdf 文件&#xff01;&#xff01;&#xff01;会出现下图错误 4. 右击…

深入解析STM32中断机制:从原理到外部中断实战

知识点1【中断的介绍】 单片机的中断——硬件中断 Linux操作系统的中断——软件中断 中断是指计算机运行过程中&#xff0c;出现某种意外情况需要主机干预&#xff0c;机器能自动停止正在运行的程序并转入处理新情况的程序&#xff0c;处理完毕后有返回原本暂停的程序继续运…

【入门】打印字母塔

描述 输入行数N,打印图形. 输入描述 输入只有一行&#xff0c;包括1个整数。(N<15) 输出描述 输出有N行. #include <bits/stdc.h> using namespace std; int main() { char t;int n,f;cin>>n;for(int i1;i<n;i){tchar(65i);for(int j1;j<n-i;j){cout…

CentOS 7.9 安装详解:手动分区完全指南

CentOS 7.9 安装详解&#xff1a;手动分区完全指南 为什么需要手动分区&#xff1f;CentOS 7.9 基本分区说明1. /boot/efi 分区2. /boot 分区3. swap 交换分区4. / (根) 分区 可选分区&#xff08;进阶设置&#xff09;5. /home 分区6. /var 分区7. /tmp 分区 分区方案建议标准…

油冷式电动滚筒设计:关键技术解析与应用前景

引言 电动滚筒作为一种集动力传输、减速和驱动功能于一体的机电一体化设备&#xff0c;在输送机械、矿山设备、食品加工等领域广泛应用。随着工业设备向高效化、紧凑化和智能化发展&#xff0c;传统风冷式电动滚筒的散热效率与负载能力已逐渐难以满足需求。油冷式电动滚筒凭借…

Android开发-Activity附加信息

在Android应用开发中&#xff0c;除了基本的界面跳转和数据传递之外&#xff0c;我们还经常需要为Activity添加一些附加信息&#xff08;Metadata&#xff09;&#xff0c;以支持更复杂的配置需求或与系统进行交互。这些附加信息可以通过<meta-data>标签在AndroidManifes…

2025第九届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)

芜湖~ 御网杯线上分是越来越精细 区域赛都有了 然后不过多评价 整体不算难 以下是我自己的一些思路和解析 有什么问题或者建议随时都可以联系我 目录 芜湖~ MISC #被折叠的显影图纸 #光隙中的寄生密钥 #ez_xor #套娃 #easy_misc #ez_pictre Crypto #easy签到题 …

‌中继器:网络中的“血包”与“加时器”‌

在探讨网络技术时&#xff0c;我们往往会遇到各种专业术语和设备&#xff0c;中继器便是其中之一。然而&#xff0c;对于非技术人员或初学者来说&#xff0c;这些概念可能显得抽象且难以理解。今天&#xff0c;我将通过一个生动的比喻——将中继器比作网络中的“血包”与“加时…

MySQL----高级查询

目录标题 ⭐**多表查询的格式**⭐**查询前说明**一.**使用内连接**inner join**进行多表查询****1.介绍****2.事例** 二.**使用外连接**outer join**进行多表查询**1.**介绍** ⭐多表查询的格式 其一 select *&#xff5c;字段列表 from 表1[查询类型] join 表名2 on 连接条件…

SpringBoot主入口类分析

1 &#xff09;SpringBoot主入口类 SpringBoot 主入口类如下所示&#xff0c;这个类的main方法就是整个springboot项目的入口。 package com.example.demo3;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootA…

【RabbitMQ】 RabbitMQ高级特性(一)

文章目录 一、消息确认1.1、消息确认机制1.2、手动确认方法1.2.1、AcknowledgeMode.NONE1.2.2、AcknowledgeMode.AUTO1.3.3、AcknowledgeMode.MANUAL 二、持久性2.1、 交换机持久化2.2、队列持久化2.3、消息持久化 三、发送方确认3.1、confirm确认模式3.2、return退回模式3.3、…

探索Hello Robot开源移动操作机器人Stretch 3的技术亮点与市场定位

Hello Robot 推出的 Stretch 3 机器人凭借其前沿技术和多功能性在众多产品中占据优势。Stretch 3 机器人采用开源设计&#xff0c;为开发者提供了灵活的定制空间&#xff0c;能够满足各种不同的需求。其配备的灵活手腕组件和 Intel Realsense D405 摄像头&#xff0c;显著增强了…

expo多网络请求设定。

在使用 npx expo start 启动 Expo 开发服务器时&#xff0c;你可以通过设置网络模式来控制你的应用如何连接到开发服务器。Expo 提供了几种网络模式供你选择&#xff1a; LAN (Default): 这是默认模式。在这种模式下&#xff0c;你的应用会通过本地局域网 (LAN) 连接到你的开发…

Nginx 安全防护与HTTPS部署

目录 一、核心安全配置 1、隐藏版本号 2、限制危险请求方法 3、请求限制&#xff08;CC攻击防御&#xff09; &#xff08;1&#xff09;使用Nginx的limit_req模块限制请求速率 &#xff08;2&#xff09;压力测试验证 4、防盗链 &#xff08;1&#xff09;修改 Window…

windows 环境下 python环境安装与配置

运行环境安装 第一步安装包下载 python开发工具安装包下载官网&#xff1a; https://www.python.org/ 根据自己的实际需求选择。 这里记录了各个版本的区别和差异。根据区别和差异选择适合自己的版本。 Windows Installer和Windows embeddable package是两种不同的软件包类…

TB6600HG是一款PWM(脉宽调制)斩波型单芯片双极性正弦波微步进电机驱动集成电路。

该驱动器支持电机的正向和反向旋转控制&#xff0c;并具有多种激励模式&#xff0c;包括2相、1-2相、W1-2相、2W1-2相和4W1-2相。 使用这款驱动器&#xff0c;只需时钟信号即可驱动2相双极性步进电机&#xff0c;且振动小、效率高。 主要特点&#xff1a; 单芯片双极性正弦波…

【JS逆向基础】爬虫核心模块:request模块与包的概念

前言&#xff1a;这篇文章主要介绍JS逆向爬虫中最常用的request模块&#xff0c;然后引出一系列的模块的概念&#xff0c;当然Python中其他比较常用的还有很多模块&#xff0c;正是这些模块也可以称之为库的东西构成了Python强大的生态&#xff0c;使其几乎可以实现任何功能。下…

极狐Gitlab 里程碑功能介绍

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 里程碑 (BASIC ALL) 极狐GitLab 中的里程碑是一种跟踪议题和合并请求的方法&#xff0c;这些请求是为了在特定时间段内实现更…

【日撸 Java 三百行】Day 10(综合任务 1)

目录 Day 10&#xff1a;综合任务 1 一、题目分析 1. 数据结构 2. 相关函数基本知识 二、模块介绍 1. 初始化与成绩矩阵的构建 2. 创建总成绩数组 3. 寻找成绩极值 三、代码与测试 小结 拓展&#xff1a;关于求极值的相关算法 Day 10&#xff1a;综合任务 1 Task&…