vue或react中修改组件样式的方法

news2024/11/25 3:45:25

vue或react中修改组件样式的方法

  • 从组件库中引入的组件
    • 深度选择器:deep和:global
    • 深度选择器在scss中的使用
    • 关键点
  • 常规的组件样式修改
    • vue中的样式修改
    • react中的样式修改

从组件库中引入的组件

深度选择器:deep和:global

在 Vue 和 SCSS 中,:deep:global 是用于控制样式作用范围的关键词。

⭐⭐⭐在 Vue 中,:deep 用于深度作用选择器,可以让样式穿透到子组件中。而 :global 则用于全局作用选择器,可以使样式不受组件的限制。

例,在一个父组件中使用了一个子组件,并且需要修改子组件内部某个元素的样式:

<template>
  <div class="parent">
    <MyComponent></MyComponent>
  </div>
</template>

<style scoped>
.parent /deep/ .child {
  color: red;
}
</style>

在上面的例子中,通过 /deep/ 关键词让 .child 样式穿透到了子组件中。如果不加 /deep/ 的话,.child 样式只会对父组件生效,不会影响到子组件。

⭐⭐⭐而如果要定义一个全局样式,在 Vue 中可以使用 :global() 包裹样式内容来实现:

<template>
  <div class="parent">
    <MyComponent></MyComponent>
  </div>
</template>

<style scoped>
.parent {
  :global(.my-global-style) {
    color: red;
  }
}
</style>

这里将 .my-global-style 样式设置为全局样式,并通过 :global() 包裹起来使其可以应用到整个项目中。


深度选择器在scss中的使用

⭐在 SCSS 中,同样可以使用 :global 关键词来定义全局样式,例:

:global(.my-global-style) {
  color: red;
}

这样就可以在整个 SCSS 文件中使用 .my-global-style 样式了。同时,:deep 在 SCSS 中也有类似的用法,例:

.parent {
  &:deep(.child) {
    color: red;
  }
}

这里通过 &:deep().child 样式穿透到了父组件中。注意,在使用 :deep 的时候需要确保选择器是合法的,否则编译会报错。


关键点

在这里插入图片描述

在使用 :deep 和 :global 时,需要注意以下几点:

1.在 Vue 中,:deep 只有在样式作用域为 scoped 的情况下才会生效,否则可以直接使用普通的选择器。

2.在 SCSS 中,:global 关键词只能用于单个选择器的定义中,并且不能与其他选择器组合使用。例如,:global(.my-global-style) 是合法的写法,但是div:global(.my-global-style) 就是不合法的。

3.使用 :deep:global 可能会导致样式污染和命名空间冲突问题。因此,在使用这些关键词时需要确保命名规范清晰、避免重复等问题。

4.需要慎重使用全局样式,因为全局样式可能会影响到整个项目中的元素,甚至可能会与其他组件产生冲突。如果必须要使用全局样式,请尽量将其定义在专门的全局样式文件中,并通过特定的命名约定来避免命名冲突。

5.在使用 :deep:global 时需要注意浏览器兼容性问题。目前大多数现代浏览器都支持这些关键词,但是一些老旧版本的浏览器可能无法正确解析它们。

6.权重问题,因为这种选择器的使用,具有穿透性,即使是引入的组件,通过f12找到元素类名,可以通过这样的方式修改其样式,但要注意,这边修改一个样式,其他地方有的样式也可能会变,这就一定要选择class的唯一值。否则,多个元素共用一个class名,那么一改全变!


常规的组件样式修改

vue中的样式修改

⭐⭐使用内联样式:在组件模板中使用 style 属性来设置样式。

<template>
  <div :style="{ color: textColor, fontSize: textSize + 'px' }">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      textColor: 'red',
      textSize: 20
    }
  }
}
</script>

⭐⭐使用 class 属性和全局 CSS 样式表:在组件模板中使用 class 属性来设置类名,然后在全局 CSS 样式表中定义对应的样式。

<template>
  <div class="my-component">Hello World</div>
</template>

<style scoped>
.my-component {
  color: red;
  font-size: 20px;
}
</style>


⭐⭐使用 class 属性和局部 CSS 样式表:在组件模板中使用 class 属性来设置类名,然后在组件内部定义对应的样式。

<template>
  <div class="my-component">Hello World</div>
</template>

<style lang="scss">
.my-component {
  color: red;
  font-size: 20px;
}
</style>


⭐⭐使用动态绑定的 class 和 style:通过计算属性或方法返回需要设置的类名和样式对象,并将它们与 class 和 style 绑定起来。这种方式更加灵活,可以根据组件的状态动态改变样式。

<template>
  <div :class="myClass" :style="myStyle">Hello World</div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true
    }
  },
  computed: {
    myClass() {
      return this.isActive ? 'active' : ''
    },
    myStyle() {
      return { color: this.textColor, fontSize: this.textSize + 'px' }
    }
  }
}
</script>



react中的样式修改

⭐⭐使用内联样式:在组件模板中使用 style 属性来设置样式对象。

import React from 'react';

function MyComponent(props) {
  const styles = { color: props.color, fontSize: props.fontSize + 'px' };
  return (
    <div style={styles}>Hello World</div>
  );
}

export default MyComponent;

⭐⭐使用 className 和全局 CSS 样式表:在组件模板中使用 className 属性来设置类名,然后在全局 CSS 样式表中定义对应的样式。

import React from 'react';
import './MyComponent.css';

function MyComponent(props) {
  return (
    <div className="my-component">Hello World</div>
  );
}

export default MyComponent;


⭐⭐使用 className 和内联 CSS 样式表:在组件模板中使用 className 属性来设置类名,然后在组件内部定义对应的样式。

import React from 'react';

function MyComponent(props) {
  const styles = { color: props.color, fontSize: props.fontSize + 'px' };
  return (
    <div className="my-component" style={styles}>Hello World</div>
  );
}

export default MyComponent;


⭐⭐使用动态绑定的 className 和 style:通过计算属性或方法返回需要设置的类名和样式对象,并将它们与 className 和 style 绑定起来。这种方式更加灵活,可以根据组件的状态动态改变样式。

import React from 'react';

function MyComponent(props) {
  const styles = { color: props.textColor, fontSize: props.textSize + 'px' };
  const classNames = ['my-component', props.isActive ? 'active' : ''].join(' ');
  return (
    <div className={classNames} style={styles}>Hello World</div>
  );
}

export default MyComponent;


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

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

相关文章

Python 算法交易实验63 关于回测

说明 项目结束了&#xff0c;这几天把量化第一版搭起来&#xff0c;量化很重要&#xff0c;现在可以迈出第一步了。首先要关注的是回测&#xff0c;和前不久写的这篇文章呼应&#xff0c;测试的确是一个相对独立&#xff0c;又非常重要的部件。过去比较少关注在方面上&#xf…

数据分析案例-航空公司满意度数据可视化

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【瑞萨RA_FSP】ADC——电压采集

文章目录 一、ADC简介二、ADC的结构框图1. 电压输入范围2. 工作模式3. 转换过程顺序4. 触发源5. ADC转换时间6. 数据寄存器7. 电压转换 一、ADC简介 ADC即模拟数字转换器&#xff0c;ADC英文全称&#xff08;Analog-to-digital converter&#xff09;&#xff0c; 是一种用于将…

Delphi XE10 dxLayoutControl 控件应用指南

Delphi XE10 dxLayoutControl 控件应用指南 DevExpress VCL套件是一套非常强大的界面控件&#xff0c;可惜关于Delphi开发方面的说明太少&#xff0c;有些控件使用起来一头雾水&#xff0c;不知从何下手。本节详细介绍在Delphi Xe10 Seattle中如何利用dxLayoutControl 控件来做…

MMENGINE.LOGGING

MMENGINE.LOGGING 文章目录 MMENGINE.LOGGING[Print_log](https://mmengine.readthedocs.io/zh_CN/latest/api/generated/mmengine.logging.print_log.html "Print_log")[MMENGINE.LOGGING.LOGGER 源代码](https://mmengine.readthedocs.io/zh_CN/latest/_modules/mm…

Rust每日一练(Leetday0030) 合并有序数组、格雷编码、子集II

目录 88. 合并两个有序数组 Merge Sorted Array &#x1f31f;  89. 格雷编码 Gray Code &#x1f31f;&#x1f31f; 90. 子集 II Subsets II &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Py…

计算机网络-网络体系结构

目录 计算机网络的基本概念计算机网络的定义组成与功能计算机网络的分类按照网络的作用范围进行分类按照网络的使用者进行分类 计算机网络主要性能指标 计算机网络体系结构计算机网络协议、接口、服务等概念ISO/OSI 参考模型和 TCP/IP 模型OSI七层模型TCP/IP 模型封装与分用 计…

[Hadoop之Hive安装配置 第二篇 ]

前言: 记录一下Hive笔记 目录 前言: Hive的基本简介,使用场景介绍 安装地址: 官网的Hive文档地址: 官网 Hive 的教程地址 Hive安装涉及到的应用介绍 Hive安装步骤: 1.解压hive压缩包, tar -zxvf 压缩包,然后进入module目录 查看压缩的文件 ,并改名为hive 2. pwd查看当…

Paper | CenterPoint

CenterPoint paper 文章目录 CenterPoint paper摘要IntroductionRelated WorkCenterPointTwo-Stage CenterPoint Reference 论文链接&#xff1a;https://arxiv.org/pdf/2006.11275.pdf 代码链接&#xff1a;https://github.com/tianweiy/CenterPoint 摘要 该文章是Center-ba…

SpringBoot--日志

日志的作用&#xff1f; 记录用户登陆日志&#xff0c;方便分析用户是正常登陆还是恶意破解用户记录系统的操作日志&#xff0c;方便数据恢复和定位操作人记录程序的执行时间&#xff0c;方便为以后优化程序提供数据支持 日志是程序的重要组成部分&#xff0c;最重要的用途是…

Leetcode | 40 组合总和II

40 组合总和II 文章目录 40 组合总和II题目官方解法&#xff1a;回溯思路与算法 codeReference 题目 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能…

【哈佛积极心理学笔记】第12讲 写日记

第12讲 写日记 preparationincubation (take a break, need some rest time)evaluationelaboration JP Morgan’s quote, I can do a year’s work in 9 months but not in 12" a simple technique of intervation: journaling Postive emotions and painful emotions…

CSS基础学习--12 分组 和 嵌套 选择器

一、分组选择器 在样式表中有很多具有相同样式的元素 h1 {color:green; } h2 {color:green; } p {color:green; } 为了尽量减少代码&#xff0c;你可以使用分组选择器。 每个选择器用逗号分隔。 在下面的例子中&#xff0c;我们对以上代码使用分组选择器&#xff1a; <!DO…

windows下cmake的小白级入门使用教程(hello world)

想学习cmake&#xff0c;基于惯性思维&#xff0c;想先跑通一个“hello world”的例子&#xff0c;奈何网上教程一大把&#xff0c;有用的教程破费功夫寻找。大部分教程都没有从新电脑(重装系统后的电脑)的角度讲述步骤。 为了得到干净的电脑环境&#xff0c;研究了一段时间VMw…

【图像任务】Transformer系列.3

本文介绍3篇改进Transformer以实现不同图像任务的工作&#xff1a;少样本医学图像分割CAT-Net&#xff08;arXiv2023&#xff09;&#xff0c;高效图像重建等任务GRL&#xff08;CVPR2023&#xff09;&#xff0c;轻量视觉Transformer中的局部信息思考CloFormer&#xff08;arX…

根据指定条件和规则逐一判断两个数组中对应元素是否接近 numpy.isclose()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 根据指定条件和规则逐一判断 两个数组中对应元素是否接近 numpy.isclose() [太阳]选择题 请问关于以下代码的表述错误的是&#xff1f; import numpy as np a np.array([2, 7, np.nan]) b …

【RabbitMQ教程】前言 —— 消息队列介绍

&#x1f4a7; 【 R a b b i t M Q 教程】前言——消息队列介绍 \color{#FF1493}{【RabbitMQ教程】前言 —— 消息队列介绍} 【RabbitMQ教程】前言——消息队列介绍&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风…

力扣题库刷题笔记3--无重复字符的最长子串

1、题目如下&#xff1a; 2、个人Python代码实现如下&#xff1a; 代码如下&#xff1a; class Solution: def lengthOfLongestSubstring(self, s: str) -> int: temp "" #临时变量&#xff0c;记录当前连续不重复子串 out_put …

MEC | 条款1 仔细区别pointers和references

More Effective C&#xff08;MEC&#xff09; 文章目录 More Effective C&#xff08;MEC&#xff09;条款1 仔细区别pointers和references结论 本章描述 pointers 和 references 的差异&#xff0c;并告诉你它们适当使用时机。 条款1 仔细区别pointers和references pointers…

cxgrid显示海量数据

在默认情况下&#xff0c;cxgrid显示几万条以上的数据会很慢。怎么办&#xff1f; 交下面的属性设为TRUE以后&#xff0c;速度飞快。 但速度是快了&#xff0c;自动计算列的合计值这些功能却失效了&#xff0c;正所谓有得必有失&#xff01;