uniapp【uni-ui】【vue3】样式覆盖方式记录

vue3中推荐使用:deep进行样式覆盖与穿透

javascript 复制代码
<template>
	<uni-easyinput v-model="value" placeholder="请输入内容"></uni-easyinput>
</template>

<script lang="ts" setup>
	import { ref } from 'vue'
	const value = ref('')
</script>

<style lang="scss" scoped>
	:deep(.uni-easyinput__content-input){
		border: 1px solid red;
	}
</style>

对于/deep/ 是vue2中的样式穿透方案,现已弃用(于vue3中将不会生效)

对于::v-deep是vue3早期的样式穿透方案,现已弃用(但是会生效只是警告而已)

对于uni-ui的样式覆盖注意

直接将类名放置在标签上,将导致样式覆盖无法生效。如:

javascript 复制代码
<template>
	<uni-easyinput class="uni-input-outer" v-model="value" placeholder="请输入特殊样式框内容"></uni-easyinput>
</template>

<script lang="ts" setup>
	import { ref } from 'vue'
	const value = ref('')
</script>

<style lang="scss" scoped>
.uni-input-outer {
	:deep(.uni-easyinput__content-input){
		border: 1px solid red;
	}
}
</style>

我们通常希望给标签加上类名用于样式隔绝,专门覆盖某一个输入框的样式。但直接在uni-ui上的标签上加样式时,会出现覆盖样式不生效。此时的解决方案是在外层加个view标签包裹即可(注: 在组件中覆盖样式也不生效,需要把样式写在page页面的style里面或全局样式里面。尝试用全局方式或创建样式文件并使用@import ''引入的方式管理这些覆盖样式)。

示例如:

index.vue

javascript 复制代码
<template>
	<view class="uni-input-outer">
		<uni-easyinput v-model="value" placeholder="请输入特殊样式框内容"></uni-easyinput>
	</view>
</template>
<script lang="ts" setup>
	import { ref } from 'vue'
	const value = ref('')
</script>
<style lang="scss" scoped>
.uni-input-outer {
	:deep(.uni-easyinput__content-input){
		border: 1px solid red;
	}
}
</style>

亦或者

index.vue

javascript 复制代码
<template>
	<view class="uni-input-outer">
		<uni-easyinput v-model="value" placeholder="请输入特殊样式框内容"></uni-easyinput>
	</view>
</template>
<script lang="ts" setup>
	import { ref } from 'vue'
	const value = ref('')
</script>
<style lang="scss" scoped>
	@import './index.scss';
</style>

index.scss

javascript 复制代码
.uni-input-outer {
	:deep(.uni-easyinput__content-input){
		border: 1px solid red;
	}
}
相关推荐
webYin4 小时前
vue2 打包生成的js文件过大优化
前端·vue.js·webpack
叶玳言5 小时前
【LVGL】从HTML到LVGL:嵌入式UI的设计迁移与落地实践
前端·ui·html·移植
Gazer_S5 小时前
【Element Plus 表单组件样式统一 & CSS 文字特效实现指南】
前端·css·vue.js
小薛博客7 小时前
23、Jenkins容器化部署Vue应用
运维·vue.js·jenkins
用户51681661458419 小时前
Uncaught ReferenceError: __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not defined
前端·vue.js
熊猫片沃子9 小时前
Vue 条件与循环渲染:v-if/v-else 与 v-for 的语法简介
前端·vue.js
拜无忧10 小时前
【教程】vue+vite+ts创建一个最新的高性能后台项目架构
vue.js·typescript·vite
蝶开三月10 小时前
从卡顿到丝滑:3 个实战场景教你搞定代码性能优化
javascript·vue.js·性能优化
知否灬知否11 小时前
VUE3中换行的指示箭头组件(根据屏幕大小进行调节)
前端·javascript·vue.js
学习3人组11 小时前
Vue 与 React 全面功能对比
前端·vue.js·react.js