uniapp快速入门系列(3)- CSS技巧与布局

章节三:CSS技巧与布局

    • 1. uniapp中的样式编写
    • 2. 常见布局技巧与实例解析
      • 2.1 水平居中布局
      • 2.2 垂直居中布局
      • 2.3 等高布局
      • 2.4 响应式布局
    • 3. CSS动画与过渡效果

在uniapp中,我们使用CSS来设置页面的样式和布局。本章将介绍一些在uniapp中常用的CSS技巧和布局实例,帮助你更好地美化页面和实现各种布局效果。

1. uniapp中的样式编写

在uniapp中,我们可以在.vue文件中使用 <style> 标签来编写样式。可以直接编写常规的CSS样式,也可以使用预编译的CSS工具,比如Sass或Less。

uniapp支持以下几种方式来引入样式:

  • 在 .vue 文件中直接编写样式,不使用外部文件;
  • 在 .vue 文件中引入外部的 .css 或 .scss 文件;
  • 使用 scoped 属性将样式限制在当前组件内,避免样式污染其他组件。

我们在第一章中使用HBuilderX中创建的HelloWorld项目中添加一个hello.vue:
图示
并在pages.json中将原来的默认路径更改为hello,如下:
图示

下面是一个简单的示例,演示了如何在uniapp中编写样式:

<template><view class="container"><view class="box">Hello, Uniapp!</view></view>
</template><script>
export default {name: 'HelloWorld'
}
</script><style>
.container {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f5f5f5;
}.box {width: 200px;height: 200px;background-color: #ff0000;color: #fff;text-align: center;line-height: 200px;font-size: 20px;
}
</style>

在这个示例中,我们创建了一个名为 HelloWorld 的组件,使用了 display: flex 实现了页面的居中布局,background-color 设置了背景颜色,color 设置了字体颜色,text-alignline-height 用于居中文本,widthheight 设置了盒子的尺寸。

将以上代码完全复制到hello.vue中,保存并点击右上角预览查看效果如下:
图示

2. 常见布局技巧与实例解析

2.1 水平居中布局

在uniapp中实现水平居中布局可以使用 display: flexjustify-content: center 的组合。下面是一个示例,展示了如何实现水平居中布局:

<template><view class="container"><view class="box">Hello, Uniapp!</view></view>
</template><style>
.container {display: flex;justify-content: center;height: 100vh;
}.box {width: 200px;height: 200px;background-color: #ff0000;color: #fff;text-align: center;line-height: 200px;font-size: 20px;
}
</style>

在这个示例中,我们使用了 display: flex.container 中的元素水平排列,然后使用 justify-content: center 将元素水平居中。
图示

2.2 垂直居中布局

在uniapp中实现垂直居中布局可以使用 display: flexalign-items: center 的组合。下面是一个示例,展示了如何实现垂直居中布局:

<template><view class="container"><view class="box">Hello, Uniapp!</view></view>
</template><style>
.container {display: flex;justify-content: center;align-items: center;height: 100vh;
}.box {width: 200px;height: 200px;background-color: #ff0000;color: #fff;text-align: center;line-height: 200px;font-size: 20px;
}
</style>

在这个示例中,我们使用了 display: flex.container 中的元素垂直排列,并使用 justify-content: centeralign-items: center 将元素水平和垂直居中。

请注意,justify-content: center 是用于水平居中的,而 align-items: center 是用于垂直居中的。
图示

2.3 等高布局

在uniapp中实现等高布局可以使用 flex 弹性布局和自适应高度的方式。下面是一个示例,展示了如何实现等高布局:

<template><view class="container"><view class="box-left"><view class="content">Left Content</view></view><view class="box-right"><view class="content">Right Content</view></view></view>
</template><style>
.container {display: flex;height: 400px;
}.box-left,
.box-right {flex: 1;display: flex;align-items: center;justify-content: center;
}.content {width: 200px;height: 200px;background-color: #ff0000;color: #fff;text-align: center;line-height: 200px;font-size: 20px;
}
</style>

在这个示例中,我们创建了一个容器 .container 并将其高度设置为400px,然后使用 display: flexflex: 1.box-left.box-right 的宽度设置为相等,并使用 align-items: centerjustify-content: center 将内容居中。

图示

2.4 响应式布局

当在HBuilderX中创建一个hello.vue文件时,可以按如下方式编写响应式布局的代码:

<template><div class="container"><div :class="['box', isSmallScreen ? 'small-box' : '']">Hello, HBuilderX!</div></div>
</template><script>
export default {data() {return {isSmallScreen: false};},mounted() {this.checkScreenSize();window.addEventListener('resize', this.checkScreenSize);},destroyed() {window.removeEventListener('resize', this.checkScreenSize);},methods: {checkScreenSize() {this.isSmallScreen = window.innerWidth < 768;}}
};
</script><style scoped>
.container {display: flex;justify-content: center;align-items: center;height: 100vh;
}.box {padding: 20px;background-color: lightblue;color: white;font-size: 24px;
}.small-box {font-size: 16px;
}
</style>

这段代码包含了一个包含响应式样式的hello组件。它根据屏幕尺寸动态添加/删除一个CSS类来改变文字大小。组件会在mounted钩子中添加窗口大小监听器,并在组件销毁时移除监听器。

<template>部分,我们有一个div.container来居中显示内容。内部的div.box是一个包含Hello, HBuilderX!文本的div。根据isSmallScreen的值,我们将其添加到div.boxclass属性中以改变样式。

<script>部分,我们将isSmallScreen设置为false,在mounted钩子中添加了一个屏幕大小检测函数并将其绑定到resize事件上。在destroyed钩子中,我们移除了窗口大小监听器。最后,在checkScreenSize方法中,我们根据窗口的innerWidth大小更新isSmallScreen的值。

<style>部分,我们使用了scoped属性来确保样式仅作用于当前组件。.container采用flex布局来居中显示内容。.box设置了一些样式,如背景颜色、文字颜色和字体大小。.small-box用于在较小的屏幕上改变文字大小。

我们在预览窗口可以切换不同预览机型预览页面在不同屏幕的展现效果
图示

3. CSS动画与过渡效果

uniapp支持使用CSS动画和过渡效果为页面添加动态效果。你可以通过CSS的 @keyframes 规则来定义动画,然后通过 animation 属性将动画应用到元素上。

下面是一个示例,展示了如何在uniapp中实现一个简单的动画效果:

<template><view class="container"><view class="box"></view></view>
</template><style>
.container {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f5f5f5;
}.box {width: 100px;height: 100px;background-color: #ff0000;animation: rotate 2s linear infinite;
}@keyframes rotate {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}
}
</style>

在这个示例中,我们创建了一个容器 .container 并将其居中显示,然后创建了一个盒子 .box,并为其应用了一个名为 rotate 的动画,持续时间为2秒,使用线性变换方式,并无限循环播放动画。在 @keyframes 规则中定义了动画的具体属性,从0%到100%逐步旋转360度。

除了使用CSS动画,uniapp还支持使用过渡效果为元素添加平滑的过渡效果。你可以通过CSS的 transition 属性定义动画过渡的属性、持续时间和动画曲线。

滚动方块

下面是一个示例,展示了如何在uniapp中实现一个简单的过渡效果:

<template><view class="container"><view class="box" :class="{'active': isActive}" @click="toggleActive"></view></view>
</template><style>
.container {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f5f5f5;
}.box {width: 100px;height: 100px;background-color: #ff0000;transition: transform 0.3s ease;
}.box.active {transform: scale(1.5);
}
</style><script>
export default {data() {return {isActive: false}},methods: {toggleActive() {this.isActive = !this.isActive;}}
}
</script>

在这个示例中,我们创建了一个容器 .container 并将其居中显示,然后创建了一个盒子 .box,并通过 :class 属性和 isActive 数据绑定的方式来控制是否应用 .active 样式,这样就可以根据 isActive 的值来切换过渡效果。在 .box 的样式中,我们使用 transition 属性定义了 transform 属性的过渡效果,持续时间为0.3秒,并使用了缓动动画曲线。在 .box.active 的样式中,我们定义了过渡后的样式,这里使用了 transform: scale(1.5) 来实现缩放效果。

图示

以上是uniapp中常用的CSS技巧和布局实例,以及如何使用CSS动画和过渡效果增强页面的动态效果。希望对你有所启发,让你的uniapp应用更加出色!

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

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

相关文章

6个视频素材库,免费、高清、无水印,你值得拥有~

现在做自媒体的朋友真的越来越多了&#xff0c;对一些视频素材的要求也越来越高&#xff0c;除了自己拍摄之外&#xff0c;还可以在网上找各种无版权视频素材&#xff0c;但国内高质量视频素材大多数不免费&#xff0c;那免费的视频素材要去哪里找呢&#xff1f; 今天就给大家…

SQL Server 简介与 Docker Compose 部署

今天我翻阅了在之前公司工作时的笔记&#xff0c;发现了有关数据库的一些记录。当时&#xff0c;我们的项目开始使用 Oracle 数据库&#xff0c;但后来由于一些项目需求的变更&#xff0c;我们切换到了 SQL Server 。值得一提的是&#xff0c;公司当时也开始采用 Docker 技术&a…

普通物理 A2 期末复习

普通物理 A2 期末复习 本文首发于 2023-06-20 在 https://chenhaotian.top/study/general-physics-a2-final-review/ 总结 第十章 机械振动和电磁振荡 10-1 谐振动 弹簧振子的谐振动 位移 速度 加速度 特征量 旋转矢量法 单摆 能量 题&#xff1a;振动方程 题&#xff1a;振…

Astronomaly:利用 CNN 和主动学习识别 400 万张星系图像中的异常

星系中的异常现象是我们了解宇宙的关键。然而&#xff0c;随着天文观测技术的发展&#xff0c;天文数据正以指数级别增长&#xff0c;超出了天文工作者的分析能力。 尽管志愿者可以在线上参与对天文数据的处理&#xff0c;但他们只能进行一些简单的分类&#xff0c;还可能会遗漏…

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 &#xff08;Log4j – Apache Log4j 2&#xff09;是对Log4j的升级&#xff0c;它比其前身Log4j 1.x提供了重大改进&#xff0c;并参考了Logback中优秀的设计&#xff0c;同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

[UE虚幻引擎] DTCopyFile 插件说明 – 使用蓝图拷贝复制文件 (Windows)

本插件可以在虚幻引擎中使用蓝图对系统的其他文件进行拷贝复制操作。 1. 节点说明 Async Copy File ​ 异步复制文件 Param Source File : 要复制的源文件的完整路径。Param Target File : 要复制的目标文件的完整路径。Param Force Copy : 如果为true&#xff0c;则如果目标…

项目管理必备的22个公式

大家好&#xff0c;我是老原。 趁着国庆时间比较空闲&#xff0c;给你们整理了一些项目管理必备的计算公式&#xff0c;一共22个。 每一个公式都给你们标注了适用情况和使用方法&#xff0c;为了方便你们理解&#xff0c;也加了一些例子&#xff0c;保准你看了就会。 觉得不…

FutureTask和CompletableFuture的模拟使用

模拟了查询耗时操作&#xff0c;并使用FutureTask和CompletableFuture分别获取计算结果&#xff0c;统计执行时长 package org.alllearn.futurtask;import com.google.common.base.Stopwatch; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; imp…

基于Java+SpringBoot+Vue线上医院挂号系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

2023全网最全requests库和requests模块使用详解(建议收藏)

一、requests简介 #简介&#xff1a;使用requests可以模拟浏览器的请求&#xff0c;比起之前用的urllib&#xff0c;requests模块的api更加便捷&#xff08;本质就是封装了urllib3&#xff09;#注意&#xff1a;requests库发送请求将网页内容下载下来以后&#xff0c;并不会执…

基于SSM线上课程管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Python数据分析实战-实现卡方检验(附源码和实现效果)

实现功能 使用scipy.stats模块中的chi2_contingency函数来执行卡方检验&#xff08;Chi-square test&#xff09;。卡方检验用于检验两个或多个分类变量&#xff08;组别&#xff09;之间是否存在显著关联&#xff08;差异&#xff09;。 例1&#xff1a;从某中学随机抽取两个…

单目标应用:遗传算法(Genetic Algorithm,GA)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、遗传算法GA 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;起源于对生物系统所进行的计算机模拟研究&#xff0c;是一种随机全局搜索…

故障注入常用方法有哪些 其重要性是什么

故障注入是一种有效的测试方法&#xff0c;可用于评估系统对异常情况的响应。通过这种测试方法&#xff0c;可以发现系统中的潜在问题&#xff0c;并采取适当措施来改进系统的质量和性能。本文将介绍故障注入常用方法及重要性! 一、故障注入常用方法 1、随机故障注入&#xff1…

实施运维01

一.运维实施工程师所具备的知识 1.运维工程师&#xff0c;实施工程师是啥&#xff1f; 运维工程师负责服务的稳定性&#xff0c;确保服务无间断的为客户提供服务. 实施工程师负责工程的实施工作&#xff0c;负责现场培训&#xff0c;一般都要出差&#xff0c;哪里有项目就去…

【数据结构】什么是算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.算法的定义 1.算法的概念 2.数据结构与算法的关系 二.算法的特性 输入 输出 有穷性 确定性 可行性 三.算法的设计要求 1.正确性 2.可读性 3.健壮性 4.效…

GNU和Linux的关系、 Linux的发行版本、CentOs和RedHat的区别

GNU和Linux的关系 其实&#xff0c;我们通常称之为的"Linux"系统&#xff0c;相对更准确的名称应该称为“GNU/Linux”系统&#xff01; 一个功能完全的操作系统需要许多不同的组成部分&#xff0c;其中就包括内核及其他组件&#xff1b;而在GNU/Linux系统中的内核就…

基于SpringBoot的大型商场应急预案管理系统

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 预案信息管理 预案类型统计 事件类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍…

开学典礼教师代表讲话发言稿 教师宣誓词分享

教师精彩发言稿1 尊敬的领导&#xff0c;亲爱的同学们&#xff1a; 大家好&#xff01; 在这个明媚的早晨&#xff0c;我非常荣幸地代表全体教师&#xff0c;向你们这群活力四溢的新面孔&#xff0c;表达我们最诚挚的问候和欢迎。 新学期&#xff0c;新开始&#xff0c;每个…

Elasticsearch:使用 ELSER 文本扩展进行语义搜索

在今天的文章里&#xff0c;我来详细地介绍如何使用 ELSER 进行文本扩展驱动的语义搜索。 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasticsearch 及 Kibana&#xff0c;请参考如下的链接来进行安装&#xff1a; 如何在 Linux&#xff0c;MacOS 及 Windows 上…