页面开发样式和布局入门: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作为一门成熟的服务器端编程…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
