页面开发样式和布局入门: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作为一门成熟的服务器端编程…...

Apache Commons Chain 与 Spring Boot 整合:构建用户注册处理链
文章目录 概述1. 环境准备2. 创建自定义上下文3. 创建命令验证用户输入保存用户数据发送欢迎邮件 4. 构建并执行处理链5. 使用处理链6. 运行结果7. 总结 概述 本文档旨在展示如何在 Spring Boot 应用中使用 Apache Commons Chain 来实现一个用户注册的处理链。我们将通过 Chai…...

一、测试工具LoadRunner Professional脚本编写-录制前设置
设置基于URL的脚本 原因:基于HTML的脚本会导致login接口不能正确录制 设置UTF-8 原因:不勾选此项会导致脚本中文变为乱码...

React Native 组件详解之SectionList、StatusBar、Switch、Text 、 TextInput
在本文中,我们将详细介绍 React Native 中的五个常用组件:SectionList、StatusBar、Switch、Text 和 TextInput。每个组件都有其独特的用途和特性,我们将通过示例代码和 API 说明来帮助你更好地理解和使用它们。 SectionList SectionList 是…...

阿里云:aliyun-cli和ali-instance-cli
概念: 这篇文章只是来澄清一下这俩“cli"之间的区别和联系: aliyun cli 和 ali-instance-cli 都是阿里云提供的命令行工具,但它们的功能和使用场景有所不同。 1. aliyun cli 是一个通用的阿里云命令行接口工具,它允许用户…...

Linux 远程连接服务
远程连接服务器简介 什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操 作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。 远程连接服务器的功…...

Docker 安装和使用
#Docker 安装和使用 文章目录 1. 安装2. 干掉讨厌的 sudo3. 使用镜像源3.1. 使用 upstart 的系统3.2. 使用 systemd 的系统 4. 基本使用4.1. 容器操作4.2. 镜像操作 5. 网络模式说明5.1. bridge 模式5.2. host 模式5.3. container 模式5.4. none 模式 6. 查看 Docker run 启动参…...

web基础和http协议 附:nginx服务的安装
web基础和http协议: https://www.baidu.com/ URL https:// 协议 http:// www.baidu.com/ 域名 web介绍: DNS和域名 DNS解析的方式: 1、运营商 2、/etc/hosts 人工配置的域名和ip地址之间的映射关系 3、/etc/resolv.conf dns服务器的ip地址 bind,内网解析域名和ip地址…...

springboot利用easypoi实现简单导出Excel
vue springboot利用easypoi实现简单导出 前言一、easypoi是什么?二、使用步骤 1.传送门2.前端vue3.后端springboot 3.1编写实体类(我这里是dto,也一样)3.2控制层结尾 前言 今天玩了一下springboot利用easypoi实现excel的导出,以前…...

【前端新手小白】学习Javascript的【开源好项目】推荐
目录 前言 1 项目介绍 1.1 时间日期类 1.2 网页store类 1.3 事件类 1.4 Number类 1.5 String类 1.6 正则验证类 1.7 ajax类 1.8 data数据类 1.9 browser浏览器类 2 学习js-tool-big-box开源项目时有哪些收获 2.1 你可以这样做 2.2 如果你需要使用本项目 2.3 你…...

CentOS7虚拟机 网络适配器 NAT模式和桥接模式区别
一、环境介绍 宿主机:Windows电脑 虚拟机:VMware下的CentOS7 局域网:路由器下的各真实主机组成的网络 内部局域网:宿主机构建的一个内部网路 二、NAT和桥接网络链接模式区别 NAT模式:相当于宿主机构建一个内部局域网&a…...