vue css自定义标签,Vue如何使用CSS自定义变量

目录

在 css 自定义变量的功能以及出来许久了,但实际开发中大家使用并不多。归其原因是因为 less、sass 等预处理器已经拥有定义变量的功能,以及Vue、react很方便设置 style 样式,大家可能觉得使用 css 定义变量不方便且没必要。实则不然举个最直观的栗子:“如何使用 vue 设置伪类伪元素的样式”。这是个世纪难题,大部分人可能会通过修改类名的方式解决,可如果要修改的样式多,或者我想通过不同的数据渲染不同的样式,那该怎么办呢?今天我就来直接解决这个问题。 先来了解什么是 css 自定义变量。 简单使用:

div {

--bg-color : pink; //定义变量

color : var( --bg-color ) // 通过var函数使用变量

}

hello

你将会得到一个粉色的hello。在父级定义的变量也可以让子级及其伪类伪元素使用。

div {

--bg-color : pink; //定义变量

color : var( --bg-color ); // 通过var函数使用变量

}

div:hover {

background-color : var( --bg-color );

}

div span {

background-color : var( --bg-color );

}

hello world

var 函数还可以设置一个默认值,当查找不到自定义变量时,你还可以设置一个默认值。

div {

color : var( --bg-color, pink ); // 第二个参数为默认值

background-color : var( --bg-color ,--color,--a,red );// 你甚至可以设置多个变量,它从左到右依次查找

}

hello

到此为止 css 自定义变量就介绍的完了。接下来看看它在 vue 中的使用。你可以在标签的 style 属性里面设置其变量的值。

hello

export default {

data(){

return {

a : 'blue',

}

},

methods: {

changeColor(){

this.a = this.a === 'blue' ? "red" : "blue"

}

}

}

.box {

color : var(--a);

}

.box:hover {

background-color : var(--a);

}

点击 div 它的字体颜色以及其 hover 时的背景颜色将会直接改变。在此时你会发现通过自定义 css 变量,可以很方便的修改其样式以及可以直接修改其伪类的属性。由于子元素可以共享父元素的自定义变量,你可以直接在子组件中直接使用父自己的变量。

// 父组件

hello

export default {

components : {

Child

},

data(){

return {

a : 'blue',

}

}

}

// 子组件 Child

world

span {

color : var(--color);

}

试验一下效果非常的 amazing ,这样我们可以在父组件修改状态来改变子组件的样式,绕过了子父组件传值。注意:子组件必须要在变量能作用到的范围类挂载才行。

上述栗子中可以看出,子定义变量的方便之处。为来跟为方便的使用你可以通过 vue 自定义指令的方式设置变量。

// vue3 自定义指令。

function change(el,binding){

for(let [key,value] of Object.entries(binding.value)){

el.style.setProperty('--'+key, value);

}

}

app.directive(css, {

mounted(el,binding){

change(el,binding)

}

updated(el, binding) {

change(el,binding)

}

})

注意修改css变量使用 el.style['--color'] = 'red' 是无效的,必须得用 style.setProperty api设置。注册好指令后我们可以。

export default {

data(){

return {

a : 'blue',

b : 'pink'

}

},

methods: {

changeColor(){

this.a = this.a === 'blue' ? "red" : "blue"

this.b = this.b === 'pink' ? "yellow" : "pink"

}

}

}

.box {

width : 100px;

height : 100px;

background-color : var(--a);

}

.box:hover {

background-color : var(--b);

}

极大的方便了vue 对于 style 样式的操作。

我在此基础上进行了一些优化及扩展,开源了一个工具,已发布在 npm 上。地址www.npmjs.com/package/vue… 。欢迎大家多多下载体验,喜欢也可以 star 哦。

以上就是Vue如何使用CSS自定义变量的详细内容,更多关于Vue 使用CSS自定义变量的资料请关注脚本之家其它相关文章!

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

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

相关文章

【CodeForces - 260A】Adding Digits (思维构造)

题干: Vasya has got two number: a and b. However, Vasya finds number a too short. So he decided to repeat the operation of lengthening number a n times. One operation of lengthening a number means adding exactly one digit to the number (in the…

人工智能在fpga的具体应用_人工智能带动了FPGA的发展

未来几年,人工智能芯片的需求将急剧上升。联合市场研究公司(Allied Market Research)预估,未来5年,人工智能芯片的需求将以每年近50%的速度增长,因为该技术将在汽车、医疗保健等多个领域得到广泛应用。Xilinx深知其中存…

恐怖黎明稳定服务器,恐怖黎明新人联机图文教程 怎么联机-游侠网

恐怖黎明怎么联机?不少玩家想体验联机,但是不知道方法,小编这里给大家带来了新人联机图文教程,不会的萌新来学习下吧。联机图文教程:A1 联机:因为gd(grimdawn)没有自己的战网平台(就是专供联机玩的专职服务器 server)&#xff0c…

【CodeForces - 260B 】Ancient Prophesy (暴力匹配,BF算法,日期字符串)

题干: A recently found Ancient Prophesy is believed to contain the exact Apocalypse date. The prophesy is a string that only consists of digits and characters "-". Well say that some date is mentioned in the Prophesy if there is a su…

github 上传代码_leetcode爬虫:爬取代码;生成readme;上传github

Leetcode-Helper哪个程序员 不想一键下写过的代码,自动上传Github,并且还能生成好看的README呢?有用的话点个⭐吧,谢谢你。Leetcode-Helper传送门​github.com主要功能 模拟登陆力扣中国站(leetcode-cn)爬取每题提交的ac代码&…

绝地求生信号枪只能在服务器吗,绝地求生信号枪怎么用?信号枪刷新点及用法详解...

绝地求生信号枪怎么用?信号枪刷新点及用法详解2018-03-15 15:22:12来源:吃鸡小助手编辑:野狐禅评论(0)绝地求生近日更新中悄悄加入了信号枪,引得广大玩家热情满满的在游戏中寻找,信号枪到底怎么用呢?下面就…

spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...

一、前言基于spring-beans(4.1.4)的工具类org.springframework.beans.BeanUtils对注入spring对象按照Class实例化instantiateClass、class对象方法名称methodName查找findMethod、属性查找对于class类信息findPropertyType、对象属性复制copyProperties等常用操作,具…

【CodeForces - 260C】Balls and Boxes (思维模拟,有坑,时光倒流)

题干: Little Vasya had n boxes with balls in the room. The boxes stood in a row and were numbered with numbers from 1 to n from left to right. Once Vasya chose one of the boxes, lets assume that its number is i, took all balls out from it (it …

文件服务器共享文件夹访问权限,5对文件服务器中的共享文件夹进行访问权限控制...

对文件服务器中的共享文件夹进行访问权限控制1. 实训目的在Windows Server 2003环境下设置文件服务器的目的是要对多用户进行资源共享,这其中经常遇到不同用户应该分配不同权限的问题,通过这个实训希望读者了解Windows Server 2003中访问权限设置方法和具…

java生日正则表达式_java之正则表达式、日期操作

正则表达式和日期操作正则表达式简介正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的规…

渲染服务器位置,如何用服务器做渲染

如何用服务器做渲染 内容精选换一换����BoostKit ARMԭ��ʹ���׼������嵥�&#xfffd…

【HDU - 2376】Average distance (树,平均距离,算贡献)

题干: Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d 01 d 02 d 03 d 04 d 12 d 13 d 14 d 23 d 24 d 34)/10 (63799131510122)/10…

读取ppt并存入数据库_Java解析Excel文件并把数据存入数据库

前段时间做一个小项目,为了同时存储多条数据,其中有一个功能是解析Excel并把其中的数据存入对应数据库中。花了两天时间,不过一天多是因为用了"upload"关键字作为URL从而导致总报同一个错,最后在同学的帮助下顺利解决&a…

两台虚拟服务器如何级联,[教程] 利用open vswitch建立vxlan隧道实现不同主机上的虚拟交换机级联...

写在开头在某些环境下,需要实现两台物理机中的openvswitch交换机级联,以实现两台交换机中的设备互相通讯,这里使用vxlan隧道技术,将数据包封装在UDP中,通过以太网实现数据包传输。VXLAN是一种大二层的虚拟技术&#xf…

【POJ - 3041】Asteroids (二分图,最小点覆盖)

题干&#xff1a; Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 < N < 500). The grid contains K asteroids (1 < K < 10,000), which are conveniently located at the lattice points of the…

华为虚拟服务器lanip地址,2018软考网络工程师《华为基础实验》十九配置路由器为DHCPServer...

原标题&#xff1a;2018软考网络工程师《华为基础实验》十九配置路由器为DHCPServer实验要求:在R1上使能DHCP 功能。创建三个全局地址池&#xff0c;用于为三个不同部门的PC分配IP 地址。配置地址池的相关属性。在R1的接口下配置基于全局地址池的服务方式&#xff0c;实现DHCP …

电脑重启bootmgr_电脑系统启动:显示0xc0000428怎么办

错误代码&#xff1a;0xc0000428 一般都是驱动问题&#xff0c;只需要找到报错的路径驱动程序&#xff0c;删除再重启就基本上可以解决了。制作一个U盘启动&#xff0c;进入PE&#xff0c;然后删除”\Windoiws\System32\drivers\DsArk64.sys“文件&#xff0c;再重启就可以了。…

【 POJ - 2033 】Alphacode (dp,有坑)

题干&#xff1a; Alice and Bob need to send secret messages to each other and are discussing ways to encode their messages: Alice: "Lets just use a very simple code: Well assign A the code word 1, B will be 2, and so on down to Z being assigned 26.&…

两组的数据平均值合并_不要进入数据陷进

学习统计让我们不再被一些数据迷惑进入数据陷进&#xff08;例如平均工资&#xff09;从而做出正确的决策。描述性统计分析包括数据的分布、集中、波动的测度指标。平均值&#xff1a;一组数据的加和除以数据的个数&#xff08;容易随极端值变化&#xff09; 中位数&#xff1a…

【POJ - 3342】Party at Hali-Bula(树形dp,最大独立集,是否有唯一解)

题干&#xff1a; Dear Contestant, Im going to have a party at my villa at Hali-Bula to celebrate my retirement from BCM. I wish I could invite all my co-workers, but imagine how an employee can enjoy a party when he finds his boss among the guests! So, I…