前言

  • 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-扩展组件
  • 那么了解完了uni-app-扩展组件之后,这篇文章来给大家介绍一下 uni-app-修改组件主题和样式
  • 首先不管三七二十一,先来新建一个项目

搭建演示环境

创建一个全新的项目,因为本文要修改组件主题和样式,所以这次创建项目选择 uni-ui 模板:

然后在配置一下,微信小程序的 AppId,直接去之前的项目中拷贝一下即可,找到之前项目的 manifest.json 文件,然后选择微信小程序配置,复制一下即可。

  • 经过如上的这么一顿操作之后,就可以搭建完毕运行环境,与编码环境
  • 接下来就可以开始进行介绍 uni-app-修改组件主题和样式内容了

步入正题

修改组件主题

我们先使用一下组件,然后在看完了样式之后我们在进行修改,这里我们使用数字角标组件,先来看一下效果:

<template>
<view>
<uni-badge text="2" type="primary"></uni-badge>
<uni-badge text="4" type="error"></uni-badge>
<uni-badge text="22" type="primary"></uni-badge>
</view>
</template> <script>
export default {
}
</script> <style>
</style>

运行一下,效果如下:

我通过发现这个数字角标组件的样式是根据 type 属性来决定的,那么我们就可以通过修改 type 属性来修改组件的主题,比如说我们把 type 属性的值改为 success,那么组件的主题就会变成绿色。

那么知道了这些内容之后,我们就好办了,假如说我们要更改一下 type=primary 的颜色,那么我们就需要修改 primary 所对应的颜色。

我在前面的文章当中是不是有介绍到一个文件叫做 uni.scss,这个文件就是用来修改组件主题的,使用或修改对应的 scss 变量,就可以修改组件的主题。

上图中,是我查阅官方文档发现,提供了一些变量默认值,这些值就是当前组件的主题,我们可以通过修改这些值来修改组件的主题。

我们要更改的是 primary 的颜色,那么我们就可以在 uni.scss 文件中,找到 primary 这个变量,然后修改它的值即可。

注意:通过 uni-ui 创建的项目, uni.scss 文件是没有内容的,需要自己手动添加

假如说我将 primary 的颜色修改为 red,那么组件的主题就会变成红色。

$uni-primary: red;

修改组件主题的方式就是这样,首先你要确定你要修改组件对应的 scss 变量,在通过修改 uni.scss 文件中的变量值,就可以修改组件的主题。

最主要是就是查阅官方文档,大家都需要有这种查阅官方文档的习惯,这样才能更好的学习。

修改组件样式

就继续以上面的数字角标组件为例,我们来修改一下组件的样式,比如说我们想要修改一下组件的圆角,那么我们就可以通过修改组件的 border-radius 属性来修改组件的圆角, 还想修改一下文字的颜色,那么我们就可以通过修改组件的 color 属性来修改文字的颜色。

那么我们第一步要做的就是,找到要修改样式的组件所对应的元素类名, 这个时候我就打开控制台的审查元素。

然后我就可以看到,数字角标组件所对应的元素类名是 uni-badge,那么我们就可以通过修改 uni-badge 这个类名来修改组件的样式。

我这里可以很明确的告诉大家这样修改是不行的,要想修改组件样式有两种方案,分别是:

  1. 利用 Vue 的深度修改 :deep
  2. 利用全局属性 :global 修改

好,那么知道了方案我们就可以开始修改了,首先我们来看一下第一种方案,利用 Vue 的深度修改 :deep

<style>
:deep(.uni-badge) {
color: #000;
border-radius: 5px;
}
</style>
  • 运行在 H5 端的效果如下:

可以看到是一点问题都没有的,那么我们再来看一下运行在微信小程序端的效果:

可以看到是没有起效果的,那么这是为什么呢?因为我们没有加 !important,我们要将优先级提高, 加上 !important 之后,再来看一下效果:

注意:最好在修改的属性后面加上 !important,否则有的平台可能无效,上面已经验证过了

第二种方案,利用全局属性 :global 修改,这个方案就比较简单了,直接上代码:

<style>
:global(.uni-badge) {
color: #000 !important;
border-radius: 5px !important;
}
</style>

这里我就不贴效果图了,大家可以自己去运行一下,效果是一样的。

总结

  • 本篇文章主要给大家介绍了 uni-app-修改组件主题和样式的内容
  • 通过本篇文章的学习,相信大家对 uni-app-修改组件主题和样式有了一定的了解
  • 本篇文章的内容就介绍到这里,感谢大家的阅读,如果有什么不足的地方,欢迎大家指出,我会及时修改的,谢谢大家的支持

最后

大家好我是 BNTang, 一个热爱分享的技术的开发者,如果大家觉得我的文章对你有帮助的话,可以关注我的公众号 JavaBoyL,我会在公众号中分享一些IT技术和一些个人的见解,谢谢大家的支持。

【UniApp】-uni-app-修改组件主题和样式的更多相关文章

  1. hexo修改Next主题的样式

    Next主题默认对超链接只有下划线样式,很容易被忽略,就想着怎么修改下 主题样式是在\hexoBlog\themes\next\source\css,这里面保存了Muse,Mist和Pisces三个主 ...

  2. Vue中修改组件默认样式

    vue 中直接使用 class 修改组件的默认样式,在使用 scoped 之后,样式是没有效果. 此时可以使用div 包裹组件,deep 可以实现修改组件样式 .lxfix /deep/ .contr ...

  3. vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题

    Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范. vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当前组件元素,它是通过使 ...

  4. Vue中的scoped及穿透方法(修改第三方组件局部的样式)

    何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...

  5. 如何在vue中修改动态标签中的样式和修改组件库样式

    vue中修改动态标签中的样式和修改组件库样式 因为vue中的标签在渲染的时候,都会给标签加上id 所以你想在<style lang="scss" scoped>直接修改 ...

  6. rtvue-lowcode:一款基于uniapp框架和uview组件库的开源低代码开发平台

    rtvue-lowcode低代码开发平台 rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app.小程序等项目 ...

  7. uni app 零基础小白到项目实战-1

    uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...

  8. android 修改系统的dialog样式

    android 修改系统的dialog样式 一.觉得自定义配置文件麻烦?那就来修改系统自定义XML文件来实现修改系统dialog的样式吧. 如果是在XML中样式:首先来说下样式.  在 Style.x ...

  9. vue组件中的样式属性--scoped

    Scoped CSS Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范. vue组件中的style标签标有scoped属性时表明style里的css样式只适用于当 ...

  10. Android学习系列(40)--Android主题和样式之系统篇(下)

    11)Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> & ...

随机推荐

  1. Inno SetUp安装包:如何在程序安装时卸载驱动程序

    pnputil命令行方式卸载 如果您想通过命令行卸载.INF文件的驱动程序,您需要使用PnPUtil命令.以下是一个示例: pnputil /delete-driver oem0.inf /unins ...

  2. 响应式编程——初识 Flux 和 Mono

    by emanjusaka from ​ https://www.emanjusaka.top/archives/4 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址. 前言 Reactor ...

  3. LeetCode155:最小栈,最简单的中等难度题,时间击败100%,内存也低于官方

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 最近运气不错,在LeetCode上白捡一道送 ...

  4. C与CPP常见编译工具链与构建系统简介

    笔者最近在研究CEF的CMake工程,心血来潮想要对各种编译工具链以及构建系统做一个简单的总结,于是就有了本文.本文不会讲解任何关于C/C++语言方面的内容,主要C/C++的编译出发,介绍各种编译工具 ...

  5. 当开源项目 Issue 遇到了 DevChat

    目录 1. 概述 2. Bug 分析与复现 3. Bug 定位与修复 4. 代码测试 5. 文档更新 6. 提交 Commit 7. 总结 1. 概述 没错,又有人给 GoPool 项目提 issue ...

  6. Llama2-Chinese项目:2.1-Atom-7B预训练

      虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱.为了能够提升模型的中文能力,可以采用微调 ...

  7. RocketMQ 消息重试与死信队列

    RocketMQ 消息重试与死信队列 RocketMQ 前面系列文章如下: RocketMQ系列(一) 基本介绍 RocketMQ 系列(二) 环境搭建 RocketMQ 系列(三) 集成 Sprin ...

  8. 如何在Nuxt3.0中使用MongoDB数据库

    如何在Nuxt3.0中使用MongoDB数据库 一.介绍 Nuxt.js 是一个基于 Vue.js 的开源框架,用于构建服务端渲染 (Server-Side Rendering, SSR) 或静态生成 ...

  9. Redis——Redis面试题

    文章目录 概述 什么是Redis Redis有哪些优缺点 为什么要用 Redis /为什么要用缓存 为什么要用 Redis 而不用 map/guava 做缓存? Redis为什么这么快 数据类型 Re ...

  10. 解决在VS Code中运行有中文字符的Java代码(第三种方式),出现编码 GBK 的不可映射字符 (0x81)

    写代码时,我们不避免的会使用一些中文注释,这些在其他的语言中没有问题.但是在Java的注释里面如果有中文字符,就会报错.即使文件编码是utf-8也无济于事.是因为使用CMD运行java程序的时候,系统 ...