CSS3 布局样式及其应用
深入探讨 CSS3 布局样式及其应用
引言
在现代网页设计中,CSS(层叠样式表)不仅是设计视觉样式的工具,也是布局的核心技术。CSS3引入了新的布局模型,其中Flexbox与Grid布局在满足复杂布局需求方面表现尤为出色。本文将详细探讨CSS3的布局样式,包括它们各自的特性、优缺点、使用方法,以及实际案例,以便读者能更深入理解如何在项目中有效运用这些技术。
一、CSS布局的历史与发展
1.1 早期布局的局限性
在早期的网页设计中,布局主要依赖于float
、position
等属性,开发者往往需要使用繁琐的HTML结构(如大量嵌套<div>
),且在实现响应式设计时面临诸多挑战。这种方式不仅增加了代码量,且维护性极差。
1.2 Flexbox的出现
Flexbox布局是针对一维布局的解决方案,它的设计使得在容器中灵活排列项目成为可能。Flexbox简化了项目的对齐、空间分配,增强了响应式设计的能力。
1.3 Grid布局的崛起
Grid布局提供了强大的二维布局功能,它让开发者能够同时控制行与列,适用于复杂的网页布局。Grid确保了设计的高度灵活性,适应各种设备的屏幕尺寸。
二、CSS3布局样式详解
2.1 Flexbox布局
2.1.1 概述
Flexbox布局是一种一维布局方式,适合用于在行内或列内排列子项。开发者通过display: flex;
实现Flexbox布局,之后可以利用各种属性调整子项在容器内的行为。
2.1.2 核心属性详解
1. 容器属性
display: flex;
:设置为弹性容器,启用Flexbox布局。flex-direction
:row
(默认):主轴方向为水平方向。row-reverse
:主轴方向为水平方向,反向排列。column
:主轴方向为垂直方向。column-reverse
:主轴方向为垂直方向,反向排列。
justify-content
:flex-start
: 子项从头开始排列。flex-end
: 子项从尾巴开始排列。center
: 子项居中对齐。space-between
: 子项两端对齐,并保持均匀的间隔。space-around
: 每个子项两侧都有均匀的间隔。
align-items
:flex-start
: 子项在交叉轴的起始位置对齐。flex-end
: 子项在交叉轴的结束位置对齐。center
: 子项在交叉轴中间对齐。baseline
: 根据字体基线对齐。stretch
: 子项在交叉轴上扩展以填满容器。
flex-wrap
:nowrap
(默认):不换行,所有子项会压缩到单行。wrap
: 子项在容器宽度不足时换行。wrap-reverse
: 換成反向换行。
2. 项目属性
flex-grow
:定义项目的放大比例。如果父容器有剩余空间,具备更高flex-grow
值的项目会优先获得。flex-shrink
:定义项目的缩小比例。在父容器空间不足时,具备更高flex-shrink
值的项目会优先缩小。flex-basis
:定义项目的初始大小,可接受长度值(如px、%)或auto
,决定空间分配。
2.1.3 实际案例
以下是利用Flexbox创建的简易响应式导航栏示例:
html
<nav class="navbar"><div class="brand">Brand Name</div><div class="nav-items"><a href="#">Home</a><a href="#">About</a><a href="#">Services</a><a href="#">Contact</a></div>
</nav>
css
.navbar {display: flex; /* 启用Flexbox */justify-content: space-between; /* 两端对齐 */align-items: center; /* 垂直居中 */background-color: #333;padding: 1rem;
}.nav-items {display: flex; /* 子项采用Flexbox布局 */gap: 1rem; /* 项目间隔 */
}.nav-items a {color: white;text-decoration: none; /* 去掉下划线 */padding: 0.5rem 1rem; /* 提高可点击区域 */
}
2.2 Grid布局
2.2.1 概述
Grid布局是一种二维布局可配置方式,允许开发者同时设置行与列的结构。它使得布局设计更加直观且易于维护。
2.2.2 核心属性详解
1. 容器属性
-
display: grid;
:设置为网格容器。 -
grid-template-columns
:定义列。- 如:
grid-template-columns: repeat(3, 1fr);
创建3列均分的网格。
- 如:
-
grid-template-rows
:定义行。- 如:
grid-template-rows: 100px auto 200px;
创建3行,行高分别为100px、自动高度、200px。
- 如:
-
grid-gap
:设置行间距和列间距。 -
grid-template-areas
:为每个子项指定区域,使其更清晰。-
如:css
grid-template-areas: 'header header header''content sidebar''footer footer footer';
-
-
grid-auto-flow
:定义未指定区域的项目布局方式,如row
(按行)、column
(按列)。
2. 项目属性
grid-row-start
和grid-row-end
:定义项目的纵向位置。grid-column-start
和grid-column-end
:定义项目的横向位置。grid-area
:在声明的区域中放置项目,包括行列范围。
2.2.3 实际案例
使用Grid布局制作产品展示页的示例:
html
<div class="product-grid"><div class="product-item"><img src="product1.jpg" alt="Product 1"><h3>Product 1</h3><p>$29.99</p><button>Add to Cart</button></div><div class="product-item"><img src="product2.jpg" alt="Product 2"><h3>Product 2</h3><p>$39.99</p><button>Add to Cart</button></div>
</div>
css
.product-grid {display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* 自动填充列 */gap: 1rem; /* 行间隔 */
}.product-item {background-color: #f9f9f9;padding: 1rem;border: 1px solid #ddd;text-align: center; /* 内容居中 */
}
3. CSS3布局的细节与性能优化
3.1 避免不必要的复杂嵌套
在使用Flexbox和Grid布局时,尽量避免复杂的嵌套结构,这样不仅能保证代码的可读性,还能防止过多的计算负担。以下是一些额外建议:
- 使用语义化HTML标签,使结构更加清晰,如<
header
>、<footer>
和<main>
。 - 通过将相关内容组合在一起,减少DOM节点的深度和复杂性。
3.2 使用CSS预处理器
CSS预处理器如Sass和Less可以通过变量、嵌套和Mixin等功能,使得代码组织更加高效。例如,使用变量统一管理主题色:
scss
$primary-color: #4CAF50;
.button {background-color: $primary-color;color: white;padding: 10px 20px;border: none;border-radius: 5px;
}
3.3 减少重绘与重排
避免频繁访问和修改DOM,这会导致浏览器的重排和重绘。可以通过以下策略减少性能负担:
- 一次性修改DOM,所有更改集中到一个操作中减少重排。
- 使用
requestAnimationFrame()
进行动画更新,这对性能优化尤为重要。
3.4 使用懒加载技术
懒加载指的是只有当用户到达页面的某个部分时,内容才被加载。这特别适用于大量图片或视频的网页,如电商网站和图片画廊。可以使用简单的JavaScript实现,并与Intersection Observer API结合使用,以达到更好的效果。
四、CSS3布局的未来趋势
1. CSS容器查询
CSS容器查询允许根据父容器的尺寸调整子元素的样式,为响应式设计提供更加灵活的回应方法。
2. 更强的功能集成
随着CSS和JavaScript的集成越来越紧密,未来可能出现更多的与JavaScript交互的布局方式,实现更动态的用户界面。
3. 可复用性与模块化
未来的开发趋势可能会更加注重可复用的组件和模块化设计,使得开发和维护变得更加高效,并达成更好的团队合作。
结论
CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局。通过深入理解每种布局方式及其细节,开发者能够更有效地解决应用中的各种布局挑战。
希望本文不仅能为读者提供有关CSS3布局技术的实用知识,还能够激励开发者在实际项目中创造出更优雅、响应式的网页。随着前端技术的不断演进,我们期待每位开发者在这条探索之路上不断突破,推动网页设计的创新与进步!
相关文章:
CSS3 布局样式及其应用
深入探讨 CSS3 布局样式及其应用 引言 在现代网页设计中,CSS(层叠样式表)不仅是设计视觉样式的工具,也是布局的核心技术。CSS3引入了新的布局模型,其中Flexbox与Grid布局在满足复杂布局需求方面表现尤为出色。本文将…...
工业机器视觉-基于深度学习的水表表盘读数识别
字轮数字识别、指针读数识别(角度换算)、根据指针角度进行读数修正、根据最高位指针(x0.1)读数对字轮数字进行修正、得到最终读数。 基于深度学习的目标检测技术和OpenCV图像处理技术,可识别所有类型的表盘机械读数。...
kafka admin client 如何计算kafka发送速度
文章目录 方法 1:使用 AdminClient 获取消息数量示例代码:计算 Kafka 生产速度代码解释:解释:结果示例:方法 2:使用 Kafka JMX 监控JMX 指标: 总结: 要使用 Kafka Admin Client 来计…...
Ubuntu20.04 配置虚拟显示器和切回物理显示器
1、安装软件,用中软安装虚拟显示器软件 sudo apt-get install xserver-xorg-core-hwe-18.04 sudo apt-get install xserver-xorg-video-dummy2、添加配置文件 进入 /usr/share/X11/xorg.conf.d/ 文件夹下创建xorg.conf文件 # 创建xorg.conf文件 touch xorg.conf …...
【解决pycharm下site-packages文件标记为红色的问题】
怎么解决pycharm下site-packages文件标记为红色的问题 这是一个pycharm无法识别本地site-packages问题答案解释器设置路径如下: 这是一个pycharm无法识别本地site-packages问题 最近正在搭建一个python3requestsunittestHTMLTestRunner接口测试框架,发现…...
力扣-图论-2【算法学习day.52】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
项目-02-数学学院后台项目开发过程中的问题总结
目录 一、后台(pc端,vue2)1. dialog对话框被黑色蒙层盖住2. 将前端表格导出为word文档3. 在线查看、下载 .docx、.doc、.pdf文档 一、后台(pc端,vue2) 1. dialog对话框被黑色蒙层盖住 问题: d…...
数据结构-排序
目录 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、堆排 六、快速排序 1、hoare: 2、挖坑法: 3、前后指针法: 4、快排非递归 七、归并排序 1、递归写法: 2、非递归写法: 八、计数排序 九、排…...
神经网络中常见的激活函数Sigmoid、Tanh和ReLU
激活函数在神经网络中起着至关重要的作用,它们决定了神经元的输出是否应该被激活以及如何非线性地转换输入信号。不同的激活函数适用于不同的场景,选择合适的激活函数可以显著影响模型的性能和训练效率。以下是三种常见的激活函数:Sigmoid、T…...
[报错] Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法
报错:Error: PostCSS plugin autoprefixer requires PostCSS 8 原因:autoprefixer版本过高 解决方案: 降低autoprefixer版本 执行:npm i postcss-loader autoprefixer8.0.0 参考: Error: PostCSS plugin autoprefix…...
多线程---创建及方法
*线程创建的方式: 1.继承Thread类,重写run方法。 2.实现Runnable接口,重写run方法。 实际这两个run方法都重写的是Runnable中的run方法 简化方法: 1.匿名内部类创建Thread 子类对象 Thread thread new Thread(){Overridepub…...
C++设计模式之单例模式
动机 在软件系统中,经常有一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性,以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该是类设计…...
给你一个整数n, 判断它是否是素数。注意1不是素数。:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给你一个整数n, 判断它是否是素数。注意1不是素数。 输入描述: 第一行输入一个整数T,表示需要判断的数的个数接下来T行每行一个整数n,表示需要判断的数。1<n<1e5,1<T<…...
Java项目实战II基于微信小程序的电子竞技信息交流平台的设计与实现(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网技术的飞速发展…...
temu登录接口逆向分析(含Py纯算)
文章目录 1. 写在前面2. 接口分析3. 算法还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...
Java ArrayList 详解
Java ArrayList 详解 ArrayList 是 Java 集合框架(Collection Framework)中最常用的类之一,是一种基于动态数组的数据结构,属于 List 接口的实现类。它允许存储重复的元素,有序,支持随机访问,且…...
CTF之密码学(仓颉编码)
一、仓颉码(用于建立中文索引) 定义与目标: 仓颉码是为了建立中文的索引观念而设计的一种编码方式。其主要目标是方便对中文资料或程式进行索引功能的处理。 工作原理: 仓颉码的索引以ASCII的字符码为基准,但在内部会转…...
OpenCV的圆形检测HoughCircles
HoughCircles 函数是 OpenCV 库中用于在灰度图像中检测圆的函数,它基于霍夫变换(Hough Transform)的一种变体——梯度霍夫变换(HOUGH_GRADIENT)函数原型如下: void HoughCircles( InputArray image, OutputArray circles,int method, double dp, double minDist,double …...
Latex 英文双栏排版时,摘要和引言之间的距离
目标:解决这个间隔 打开“cas-common.sty" 搜索“\NewDocumentCommand \dashrule" 本来是两个 m m 变成 m m m然后是增加下面这个代码,其他地方不动 \skip_vertical:n {#4} 搜索”MaketitleBox“和“LongMaketitleBox ” 本来的代码应该…...
AD学习笔记·空白工程的创建
编写不易,禁止搬运,仅供学习,感谢理解 序言 本文参考B站,凡亿教育,连接放在最后。 创建工程文件 在使用AD这个软件的电路板设计中,有很多的地方跟嘉立创eda还是有不一样的地方,其中一个地方就…...
非球面加工领域的佼佼者:倚光科技
在光学领域,非球面加工技术宛如一颗璀璨的明珠,以其独特的优势和广泛的应用,引领着光学元件制造的新潮流。 非球面透镜,其表面曲率半径从中心到边缘是变化的,这使得它在光学系统中具有诸多显著优势。首先,…...
Git分布式版本控制工具 Git基本概念、Git工作流程、Git常用命令、Git远程仓库、IDEA操作Git
目录 1.Git基本概念 1.1 概述 1.1.1 开发中的实际场景 1.1.2 版本控制器的方式 1.1.2.1 集中式版本控制工具(SVN) 1.1.2.2 分布式版本控制工具(Git) 2.概述git工作流程 3.Git常用命令 3.1 Git环境配置 3.1.1 下载与安装 3.1.2 基本配置 3.1.3 为常用指令配置别名&…...
Spring 容器管理 Bean
Bean是什么 Bean 是指 Java 中的可重用软件组件,容器会根据提供的元数据来创建和管理这些 Bean,也包括它们之间的依赖关系。Spring 容器对 Bean 并没有太多的要求,无须实现特定接口或依赖特定库,只要是最普通的 Java 对象即可,这类对象也被称为 POJO(Plain Old Java Obj…...
Spring 容器 详解
Spring 容器详解 Spring 容器 是 Spring 框架的核心组件之一,它负责创建和管理应用程序中的 Bean(对象)以及处理它们之间的依赖关系。容器通过控制反转(IoC)和依赖注入(DI)实现对象的生命周期管…...
ubuntu环境下安装electron环境,并快速打包
1.配置镜像源 关闭防火墙,命令:sudo ufw disable 1.1配置国内镜像源: vim /etc/apt/source.list deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ jammy main…...
Yeeco成长型一体化数智赋能平台:科技矩阵重塑企业数字生态
随着科技的飞速发展,我们正在步入一个被称为“数智化时代”的新时代。在这个时代中,数据处理和分析的能力被提升到一个前所未有的高度,而这种变化背后的重要推动力量就是各种新兴的技术趋势。 为了在激烈的市场竞争中脱颖而出,Yee…...
DP、CP、Mn是什么?有什么关系?双径节齿轮又是什么?
有一些刚刚接触齿轮的小伙伴们,经常听到和齿轮相关的是Mn这个代号,有时候拿到图纸会碰到DP和CP的图纸,今天就简单数一数他们三个的关系: 径节DP 齿轮的节距定义为两个相邻齿轮齿上两个相同点之间的距离。在理想情况下,…...
Python 中的生成器是什么?
生成器(Generator)是Python中一种特殊的迭代器,它允许你逐步生成一系列值,而不是一次性创建整个列表或集合。 这在处理大型数据集或流式数据时特别有用,因为你可以逐个处理元素,而不需要将所有元素加载到内…...
如何参加华为欧拉考试?
华为欧拉考试主要针对的是华为欧拉(EulerOS/openEuler)操作系统的认证考试,这一认证体系旨在培养和认证具备基于欧拉操作系统进行企业级应用运行基础环境搭建、管理和调测能力的工程师以及云计算架构师。以下是对华为欧拉考试的详细介绍&…...
基于STM32设计的智能家居控制系统(华为云IOT)_275
文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…...
2024年第七届传智杯程序设计挑战赛第一场初赛题解
文章目录 2024年第七届传智杯程序设计挑战赛初赛第一场A-吃糖果(B组、C组)B-汤姆和杰瑞(A组、C组)C-游游的重组偶数(A组、B组、C组)D-开心还是难过(B组、C组)E-小欧的平面连线(A组、B组、C组)F-小红的四子棋(A组、B组、C组)G-小红的数组操作(A组、B组)H-游游的不相邻取数(A组) …...
iOS视图控制器的生命周期及各阶段的作用
iOS视图控制器(UIViewController)的生命周期是指从它被创建到最终被销毁的过程中所经历的一系列阶段。每个阶段都有其特定的作用和执行时机,这些阶段和作用对于开发高效、稳定的iOS应用至关重要。以下是iOS视图控制器的生命周期及其各个阶段的…...
stm32上电不能启动什么原因
STM32上电不能启动可能由多种原因造成,以下是一些常见的原因及解决方法: 一、软件原因 程序错误: 程序可能存在死循环、堆栈溢出、指针指向不允许的内存空间等问题。 解决方法:使用调试工具进行调试,检查程序流程,定位并修复错误。 时钟问题: 时钟切换失败或外部时钟源…...
【后端面试总结】golang channel深入理解
在Go语言中,Channel是一种用于在goroutine之间进行通信和同步的重要机制。它提供了一种安全、类型安全的方式来传递数据,使得并发编程变得更加直观和简单。本文将详细介绍Golang中Channel的基本概念、创建与关闭、发送与接收操作,以及相关的使…...
lobeChat安装
一、安装Node.js version > v18.17.0 二、下载 cd F:\AITOOLS\LobeChat git clone https://github.com/lobehub/lobe-chat.git (下载要是失败就手动下:https://codeload.github.com/lobehub/lobe-chat/zip/refs/heads/main) npm install …...
OpenCV 简介与安装方法
大家好啊,我是董董灿。 如果你在做计算机视觉相关的工作,肯定少不了使用 OpenCV 库。 在《计算机视觉专栏》的传统计算机视觉部分,我曾经使用 OpenCV 进行了很多图像的处理,比如边缘检测。 刚好最近在整理一份文稿,…...
力扣刷题TOP101:14.BM16 删除有序链表中重复的元素-II
目录: 目的 思路 复杂度 记忆秘诀 python代码 目的 1→1→2→3→3 删除重复后变成2。 思路 这个任务是删除链表里重复的节点包含本身。可以看成是一个抽奖活动的系统升级。某人通过多种方式报名(节点不同),后台数据检测到这些…...
Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署
文章目录 前言一、Zookeeper单机部署(手动部署)1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…...
【Linux】文件
声明:以下内容均学习自《Linux就该这么学》一书 1、文件权限及归属 对目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;“可执行”表示能够进入该目录。 文件类型区分 -普通…...
仿真键盘输入遇到Edge环境不识别 回车符如何处理
这个问题我也是最近才遇到,可能现在大家都喜欢用新架构,基于网页来写应用管理软件。 当遇到Edge环境下,文本框不识别回车符如何处理,根据笔者经验可通过配置Edge 基于键盘管理设置来解决这个事情。如图 即在Edge浏览器环境下&…...
Python 列表操作详解
Python 列表操作详解 在 Python 中,列表(list)是一种用于存储有序集合的数据结构。列表可以包含各种类型的数据,如整数、浮点数、字符串等,甚至可以包含其他列表(这称为嵌套列表)。 示例列表 …...
Git操作学习2
1.使用git rm删除文件 查看文件夹的内容 ls -lr 删除文件rm 文件名 但是此时只删了工作区的文件,仓库还没有删 可以再使用git add更新提交给仓库 也可以直接通过git rm 删除仓库里面的文件 工作区也删除了 暂存区也删除了 最后记得提交 否则删除的文件在版本库还…...
Spring Event 监听与异步设置:深入解析与应用场景
在开发中,事件驱动编程(Event-Driven Programming)是一种常见的编程模式,Spring 提供了强大的事件机制,使得我们可以通过 EventListener 或 ApplicationListener 来监听和处理应用中的各种事件。这种机制不仅使得应用架…...
百度木木浆测试
本程序测试识别图片的文字 import cv2 from paddleocr import PaddleOCR, draw_ocr from matplotlib import pyplot as plt # 加载PaddleOCR模型,这里你可以根据需要选择语言和模型路径 ocr PaddleOCR(use_gpuFalse, langch) # 假设我们识别中文字符,…...
视频监控集中管理方案设计:Liveweb视频汇聚方案技术特点与应用
随着科技的发展,视频监控平台在各个领域的应用越来越广泛。然而,当前的视频监控平台仍存在一些问题,如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果,也制约了视频监控平台的发展。 为了解决这些问…...
剑指offer(专项突破)---字符串
总目录:剑指offer(专项突破)---目录-CSDN博客 1.字符串的基本知识 C语言中: 函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中,包括结束符\0,要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…...
Zygote启动流程(AndroidV)
一:背景 众所周知,Android应用及system_server基本都是由zygote fork出来的,那么zygote是如何启动的、又是如何接收fork进程的请求,接下来一步步揭秘。 二:启动流程 init进程是Android系统启动时,启动的第一…...
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:智行无忧停车场管理系统(前后端源码 + 数据库 sql 脚本)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 车辆信息管理功能 5.0 停车位管理功能 6.0 入场登记管理功能 7.0 预约管理功能 8.0 收费规则功能 9.0…...
岩体力学的材质-力学等属性的自动划分.
#背景: 在力学求解过程中,我们往往会对目标物体进行网格划分, 那么如何做到自动完成这个过程呢? 这里使用岩体力学中的地下岩层进行举例,这里只是简单的导入了4种界面, 复杂的可以一次性导入几十种界面,都可以计算(你能分多细,这个计算方式就可以帮你分层多细) 这里我只是导…...
注解 实现原理 详解
Java 注解实现原理详解 注解(Annotation)是 Java 提供的一种元数据机制,用于为代码元素(类、方法、字段、参数等)添加额外的信息。注解不会直接影响程序逻辑,但可以通过 工具(如编译器、运行时…...