页面开发样式和布局入门:Vite + Vue 3 + Less
页面开发样式和布局入门:Vite + Vue 3 + Less
引言
在现代前端开发中,样式和布局是页面开发的核心部分。随着技术的不断发展,Vite、Vue 3和Less等工具和框架的出现,使得前端开发变得更加高效和灵活。然而,尽管这些工具和框架提供了强大的功能,但在实际开发中仍然会遇到各种样式和布局的问题。本文将结合Vite、Vue 3和Less,详细介绍在页面开发中常见的样式和布局问题,并提供解决方案和最佳实践。
环境搭建
Vite简介
Vite是一个基于ES模块的现代前端构建工具,它利用浏览器原生的ES模块支持,实现了快速的冷启动和热更新。Vite的设计目标是提供一个轻量级、快速的开发环境,特别适合现代JavaScript框架(如Vue、React)的开发。
Vue 3简介
Vue 3是Vue.js的最新版本,带来了许多新特性和改进,包括更好的性能、更小的体积、更强大的组合式API等。Vue 3的设计目标是提供一个更加灵活和高效的开发体验,特别适合构建复杂的单页应用(SPA)。
Less简介
Less是一种CSS预处理器,它扩展了CSS的功能,提供了变量、混合、嵌套规则、函数等高级特性。Less的设计目标是让CSS的编写更加简洁和高效,特别适合大型项目的样式管理。
项目初始化
在开始开发之前,我们需要先初始化一个Vite + Vue 3 + Less的项目。以下是初始化步骤:
- 安装Node.js和npm:确保你的系统中已经安装了Node.js和npm。
- 创建Vite项目:
npm init vite@latest my-vue-app --template vue
- 进入项目目录:
cd my-vue-app
- 安装依赖:
npm install
- 安装Less:
npm install less less-loader --save-dev
- 配置Vite:在
vite.config.js
中添加Less支持:export default {css: {preprocessorOptions: {less: {javascriptEnabled: true,},},}, };
- 启动开发服务器:
npm run dev
样式和布局基础
CSS基础
CSS(层叠样式表)是用于描述HTML或XML(包括SVG、XHTML等)文档外观的语言。CSS的主要功能包括:
- 选择器:用于选择HTML元素。
- 属性:用于定义元素的样式。
- 值:用于指定属性的具体值。
Less特性
Less是CSS的扩展,提供了许多高级特性,包括:
- 变量:可以在Less中定义变量,并在样式中使用。
- 混合:可以将一组样式定义为一个混合,并在其他地方复用。
- 嵌套规则:可以在Less中嵌套选择器,使样式更加清晰。
- 函数和操作:可以在Less中使用函数和操作符,进行复杂的样式计算。
布局基础
布局是页面开发中的重要部分,常见的布局方式包括:
- 流式布局:元素按照HTML文档的顺序排列。
- 浮动布局:通过
float
属性实现元素的左右浮动。 - 定位布局:通过
position
属性实现元素的绝对定位或相对定位。 - Flexbox布局:通过
display: flex
实现灵活的盒子布局。 - Grid布局:通过
display: grid
实现二维网格布局。
常见样式和布局问题
盒模型问题
盒模型是CSS中用于描述元素尺寸和间距的基本模型。盒模型包括内容区域、内边距、边框和外边距。常见的盒模型问题包括:
- 盒模型计算:默认情况下,CSS的盒模型是
content-box
,即元素的宽度和高度只包括内容区域。可以通过设置box-sizing: border-box
来改变盒模型,使元素的宽度和高度包括内容区域、内边距和边框。 - 外边距合并:当两个垂直相邻的元素的外边距相遇时,它们会合并成一个外边距,取其中较大的值。可以通过设置
overflow: hidden
或使用BFC(块级格式化上下文)来避免外边距合并。
Flexbox布局问题
Flexbox是一种强大的布局方式,特别适合一维布局。常见的Flexbox布局问题包括:
- 主轴和交叉轴:Flexbox布局有两个轴,主轴和交叉轴。主轴的方向可以通过
flex-direction
属性设置,交叉轴的方向与主轴垂直。 - 对齐方式:可以通过
justify-content
属性设置主轴上的对齐方式,通过align-items
属性设置交叉轴上的对齐方式。 - 弹性项目:可以通过
flex-grow
、flex-shrink
和flex-basis
属性设置弹性项目的伸缩行为。
Grid布局问题
Grid布局是一种二维布局方式,特别适合复杂的网格布局。常见的Grid布局问题包括:
- 网格线:Grid布局通过网格线定义网格单元。可以通过
grid-template-columns
和grid-template-rows
属性定义网格线的位置。 - 网格单元:可以通过
grid-column
和grid-row
属性设置元素占据的网格单元。 - 对齐方式:可以通过
justify-items
和align-items
属性设置网格单元内的对齐方式。
响应式设计问题
响应式设计是指页面能够根据设备的屏幕尺寸自动调整布局和样式。常见的响应式设计问题包括:
- 媒体查询:可以通过
@media
规则定义不同屏幕尺寸下的样式。 - 流式布局:可以使用百分比单位定义元素的宽度和高度,使布局更加灵活。
- 断点设计:可以根据设备的屏幕尺寸定义不同的断点,并在每个断点下应用不同的样式。
Vue 3中的样式和布局
Scoped CSS
在Vue 3中,可以通过<style scoped>
标签实现组件样式的局部作用域。Scoped CSS的原理是通过在每个样式选择器前添加一个唯一的属性选择器,使样式只作用于当前组件。
动态样式
在Vue 3中,可以通过绑定样式对象或样式数组实现动态样式。例如:
<template><div :style="{ color: textColor, fontSize: fontSize + 'px' }">Dynamic Style</div>
</template><script>
export default {data() {return {textColor: 'red',fontSize: 16,};},
};
</script>
组件样式复用
在Vue 3中,可以通过<style module>
标签实现组件样式的模块化。模块化样式的原理是通过在每个样式选择器前添加一个唯一的类名,使样式只作用于当前组件。
Less在Vue 3中的应用
变量和混合
在Less中,可以通过@
符号定义变量,并通过mixin
定义混合。例如:
@primary-color: #42b983;.button {background-color: @primary-color;color: white;padding: 10px 20px;border-radius: 5px;
}
嵌套规则
在Less中,可以通过嵌套规则实现样式的层级结构。例如:
.container {width: 100%;.header {background-color: #333;color: white;padding: 20px;}.content {padding: 20px;}
}
函数和操作
在Less中,可以通过函数和操作符实现复杂的样式计算。例如:
@base-font-size: 16px;
@font-size-large: @base-font-size * 1.5;
@font-size-small: @base-font-size * 0.8;.text {font-size: @font-size-large;&.small {font-size: @font-size-small;}
}
实战案例
创建一个响应式导航栏
在本案例中,我们将使用Vue 3和Less创建一个响应式导航栏。导航栏将在不同屏幕尺寸下自动调整布局。
<template><nav class="navbar"><div class="navbar-brand"><a href="/">Logo</a></div><div class="navbar-menu"><a href="/">Home</a><a href="/about">About</a><a href="/contact">Contact</a></div></nav>
</template><style scoped lang="less">
@navbar-bg-color: #333;
@navbar-text-color: white;
@navbar-padding: 20px;.navbar {display: flex;justify-content: space-between;align-items: center;background-color: @navbar-bg-color;color: @navbar-text-color;padding: @navbar-padding;.navbar-brand {font-size: 24px;font-weight: bold;}.navbar-menu {display: flex;gap: 20px;a {color: @navbar-text-color;text-decoration: none;&:hover {text-decoration: underline;}}}@media (max-width: 768px) {flex-direction: column;align-items: flex-start;.navbar-menu {flex-direction: column;gap: 10px;}}
}
</style>
实现一个复杂的布局
在本案例中,我们将使用Vue 3和Less实现一个复杂的布局,包括头部、侧边栏、内容区和底部。
<template><div class="layout"><header class="header">Header</header><div class="main"><aside class="sidebar">Sidebar</aside><div class="content">Content</div></div><footer class="footer">Footer</footer></div>
</template><style scoped lang="less">
@header-bg-color: #42b983;
@sidebar-bg-color: #333;
@content-bg-color: #f5f5f5;
@footer-bg-color: #333;
@text-color: white;.layout {display: grid;grid-template-rows: auto 1fr auto;grid-template-columns: auto 1fr;min-height: 100vh;.header {grid-column: 1 / 3;background-color: @header-bg-color;color: @text-color;padding: 20px;}.main {display: grid;grid-template-columns: 200px 1fr;.sidebar {background-color: @sidebar-bg-color;color: @text-color;padding: 20px;}.content {background-color: @content-bg-color;padding: 20px;}}.footer {grid-column: 1 / 3;background-color: @footer-bg-color;color: @text-color;padding: 20px;}
}
</style>
总结
本文详细介绍了在Vite + Vue 3 + Less环境下进行页面开发时常见的样式和布局问题,并提供了相应的解决方案和最佳实践。通过掌握这些知识,开发者可以更加高效地进行页面开发,避免常见的样式和布局问题。
相关文章:
页面开发样式和布局入门:Vite + Vue 3 + Less
页面开发样式和布局入门:Vite Vue 3 Less 引言 在现代前端开发中,样式和布局是页面开发的核心部分。随着技术的不断发展,Vite、Vue 3和Less等工具和框架的出现,使得前端开发变得更加高效和灵活。然而,尽管这些工具…...

瑞芯微RK3566/RK3568开发板安卓11固件ROOT教程,Purple Pi OH演示
本文介绍RK3566/RK3568开发板Android11系统,编译ROOT权限固件的方法。触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新OpenHarmony5.0 Release系统,SDK源码全开…...
Netty 入门应用:结合 Redis 实现服务器通信
在上篇博客中,我们了解了 Netty 的基本概念和架构。本篇文章将带你深入实践,构建一个简单的 Netty 服务端,并结合 Redis 实现一个数据存取的示例。在这个场景中,Redis 作为缓存存储,Netty 作为服务端处理客户端请求。通…...

试题转excel;pdf转excel;试卷转Excel,word试题转excel
一、问题描述 一名教师朋友,偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运,几百道题几乎需要一个下午的时间 关键这些事,枯燥无聊费眼睛,实在是看起来就很蠢的工作 就想着做一个工具,可以自动处理…...

查看网卡设备Bus号
在Linux系统中,通过ip命令能够看到网卡设备的名称,那么怎么看这个网卡设备对应的硬件设备以及Bus号? 例如在下面的虚拟机中能够看到有一个网口名为enp1s0 如何查看这个设备对应的Bus编号,可以在/sys中找到对应的设备 ll /sys/cl…...

鸿蒙Next星河版高级用例之网络请求和自适应布局以及响应式布局
目录: 1、发起网络请求的两种方式第一种使用httpRequest发送http的请求:1.1、在进行网络请求前,您需要在module.json5文件中申明网络访问权限1.2、GET 请求1.3、POST请求1.4、处理响应的结果第二种使用axios发送http的请求:1.1、在…...
鸿蒙技术分享:敲鸿蒙木鱼,积____功德——鸿蒙元服务开发:从入门到放弃(3)...
本文是系列文章,其他文章见:敲鸿蒙木鱼,积____功德🐶🐶🐶——鸿蒙元服务开发:从入门到放弃(1)敲鸿蒙木鱼,积____功德🐶🐶🐶——鸿蒙元服务开发&am…...

Hadoop生态圈框架部署 伪集群版(六)- MySQL安装配置
文章目录 前言一、MySQL安装与配置1. 安装MySQL2. 安装MySQL服务器3. 启动MySQL服务并设置开机自启动4. 修改MySQL初始密码登录5. 设置允许MySQL远程登录6. 登录MySQL 卸载1. 停止MySQL服务2. 卸载MySQL软件包3. 删除MySQL配置文件及数据目录 前言 在本文中,我们将…...

【Docker】创建Docker并部署Web站点
要在服务器上创建Docker容器,并在其中部署站点,你可以按照以下步骤操作。我们将以Flask应用为例来说明如何完成这一过程。 1. 准备工作 确保你的服务器已经安装了Docker。如果没有,请根据官方文档安装: Docker 安装指南 2. 创…...

实验七 用 MATLAB 设计 FIR 数字滤波器
实验目的 加深对窗函数法设计 FIR 数字滤波器的基本原理的理解。 学习用 Matlab 语言的窗函数法编写设计 FIR 数字滤波器的程序。 了解 Matlab 语言有关窗函数法设计 FIR 数字滤波器的常用函数用法。 掌握 FIR 滤波器的快速卷积实现原理。 不同滤波器的设计方法具有不同的优…...

学习ESP32开发板安装鸿蒙操作系统(新板子esp32c3不支持)
鸿蒙LiteOS网址:LiteOS: Huawei LiteOS开源代码官方主仓库.LiteOS Studio 开发工具请访问https://gitee.com/LiteOS/LiteOS_Studio 失败的实践记录见:完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32(主要是想针对ESP32C3和S3)…...

asp.net core过滤器应用
筛选器类型 授权筛选器 授权过滤器是过滤器管道的第一个被执行的过滤器,用于系统授权。一般不会编写自定义的授权过滤器,而是配置授权策略或编写自定义授权策略。简单举个例子。 using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCo…...
力扣面试题 31 - 特定深度节点链表 C语言解法
题目: 给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。 示例: 输入…...
WordPress阅读文章显示太慢的处理
有两种方式, 1. 完全静态化。 动态都变成html,不再查数据库就快了。 但尝试了几个插件,都未成功。算了后面再研究。 2. cache缓存 用了WP Super Cache测试了一下,打开过一次后,文章秒开,也算达到了要求…...
关于多个线程共享一个实例对象
在多线程环境中,多个线程可能同时调用同一个对象的实例方法,这时候需要考虑如何保证线程安全。理解不同场景下的线程安全性是至关重要的,特别是当方法涉及共享状态时。 1. 共享实例与方法执行 共享实例:多个线程共享同一个实例对…...

【C++】printf 函数详解与格式化输出控制
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯printf 基础用法1.1 printf 的常见占位符1.2 占位符与参数的对应关系1.3 换行控制示例: 💯格式化输出控制2.1 输出宽度控制2.1.1 指定最小宽度 2.2 …...
HDFS 操作命令
在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在 集群上的文件系统称为 分布式文件系统 。 HDFS ( Hadoop Distributed File System )是 Apache Hadoop 项目的一个子项目, Hadoo…...
html ul li 首页渲染多条数据 但只展示八条,其余的数据全部隐藏,通过icon图标 进行展示
<div style"float: left;" id"showMore"> 展开 </div> <div style"float: left;“id"hideLess"> 收起 </div> var data document.querySelectorAll(.allbox .item h3 a); const list document.querySelectorAl…...

Facebook:筑牢隐私安全堡垒,守护社交净土
在全球社交媒体平台中,Facebook一直是风靡全球的佼佼者。然而,随着数字化信息的迅速膨胀,用户隐私保护的重要性日益凸显。面对用户对数据安全性的高度重视,Facebook致力于通过一系列措施来确保隐私保护,守护每位用户的…...
2024年构建PHP应用开发环境
文章目录 前言选择合适的PHP版本安装与配置PHP环境Windows平台Linux平台macOS平台 集成Web服务器数据库连接与管理使用Composer进行依赖管理调试工具的选择代码质量管理部署与持续集成安全性考虑参考资料结语 前言 随着互联网的发展,PHP作为一门成熟的服务器端编程…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...