当前位置: 首页 > 编程笔记 >

在React.js中样式化

景靖琪
2023-03-14
本文向大家介绍在React.js中样式化,包括了在React.js中样式化的使用技巧和注意事项,需要的朋友参考一下

React.js的样式可以通过以下两种方式完成

  • CSS样式表

  • 内联样式

首先来看CSS样式表

我们有App.js文件,如下所示-

import React, {Component} from 'react';
import './App.css';
class App extends Component {
   render(){
      return (
         <div className="App">
            <p className="myColoredText">Styling React Components</p>
            </div>
      );
   }
}
export default App;

在App.js文件中,我们导入了一个包含CSS类myColoredText的App.css文件

请注意

    list-paddingleft-2">
  • 我们在属性className的双引号中使用了CSS类的名称

  • JSX使用camelCase表示法在html元素上编写属性。

我们有如下的App.css-

.myColoredText{
   color:blue;
   background:yellow;
   margin:auto;
   width:20%;
   padding:20px;
}

用上述方法编写css类的问题是,一旦webpack构建了最终的css文件,css类便成为全局类。

然后,css类可以被具有相同css类的其他css文件覆盖。

避免CSS类全球化的解决方案

使用CSS模块可以防止这种情况的发生。CSS文件名应以module.css扩展名结尾。

此解决方案在工作流中创建唯一的CSS类,以防止它们被覆盖

CSS类将成为fileName_cssClassName__hashValue

按照这种逻辑,上面使用的App.css文件应重命名为App.module.css

我们可以在应用程序中使用global和module.css文件。

对于普通的CSS,我们可以不使用module.css扩展名来创建全局CSS文件。

让我们看看React组件的内联样式

内联样式是使用JavaScript对象(键值属性)创建的。

示例

import React, {Component} from 'react';
import './App.css';
class App extends Component {
   render(){
      let myInlineStyle={
         boxShadow:'0 2px 3px #ccc',
         border:'2px solid blue',
         marginTop:'50px'
      }
      return (
         <div className="App">
            <p className="myColoredText" style={myInlineStyle}>Styling React Components</p>
         </div>
      );
   }
}
export default App;

内联样式也存在问题。要使用鼠标悬停元素,需要第三方库(如镭)。

我们可以如下安装镭-

on the application directory, run the following command
npm install --save radium

在jsx文件中添加镭。

add import for radium
import Radium from 'radium';

安装后,将悬停对象添加到嵌入式样式对象中,如下所示:

let myInlineStyle={
   boxShadow:'0 2px 3px #ccc',
   border:'2px solid blue',
   marginTop:'50px',
   ':hover':{
      background:'white'
   }
}

使用镭,App.js文件如下所示:

import React, {Component} from 'react';
import './App.css';
import Radium from 'radium';
class App extends Component {
   render(){
      let myInlineStyle={
         boxShadow:'0 2px 3px #ccc',
         border:'2px solid blue',
         marginTop:'50px',
         ':hover':{
            background:'white'
         }
      }
      return (
         <div className="App">
            <p className="myColoredText" style={myInlineStyle}>Styling React Components</p>
         </div>
      );
   }
}
export default Radium(App);

重要的是我们必须像下面这样在Radium中包装或导出组件-

export default Radium(App);

现在,在悬停时它将背景显示为白色。这样我们就可以处理内联样式。它基本上是一个JavaScript对象。

 类似资料:
  • 问题内容: 我已经在React中构建了一个组件,该组件应该在窗口滚动时更新其自身的样式以创建视差效果。 组件方法如下所示: 这是行不通的,因为React不知道组件已更改,因此该组件不会重新渲染。 我试过在组件状态下存储的值,并在滚动回调中调用。但是,这使滚动无法使用,因为这非常慢。 关于如何做到这一点的任何建议? 问题答案: 您应该在中绑定侦听器,这样,侦听器仅创建一次。您应该能够将样式存储在状态

  • 问题内容: 我正在使用样式组件,并试图设置这样的背景图片 我也试过不加引号 在两种情况下,我都得到相同的结果 http:// localhost:3000 / assets / image.png 加载资源失败:服务器响应状态为404(未找到) 我正在使用Richard Kall的React Starter 该文件肯定在指定的位置。 我加载不正确吗? 我应该提一下,我对此非常陌生(React和样式

  • 问题内容: 我知道您可以在React类中指定样式,如下所示: 我是否应该以这种方式进行所有样式设置,并且在CSS文件中完全没有指定任何样式? 还是应该完全避免使用内联样式? 两者兼而有之,似乎很奇怪而且很乱-在调整样式时需要检查两个位置。 问题答案: 目前还没有很多“最佳实践”。我们中那些使用内联样式作为React组件的人仍在进行大量试验。 全部还是全部? 我们所称的“样式”实际上包括许多概念:

  • 问题内容: 我正在尝试使用带有剑道分离器的Reactjs。拆分器的样式属性如下 使用Reactjs,如果我正确理解了所有内容,则可以使用内联样式来实现 但是,我也使用Dustin Getz jsxutil尝试将内容拆分成更多部分并具有独立的html片段。到目前为止,我有以下html片段(splitter.html) 和splitter.js组件,该组件按如下方式引用此html 现在,当我运行此命令

  • 问题内容: 我一直在使用Pro JavaScript Techniques的John Resig 函数来获取元素的样式: 是否可以仅获取样式表指定的元素样式(如果样式未定义,则返回null)? 更新: 为什么我需要这样的野兽?我正在构建一个允许用户设置元素样式的小组件。一个可应用的样式是- ,, -使用无样式元素默认。这使得无法确定元素是居中还是因为用户希望居中,还是因为这是默认样式而居中。 问题

  • 问题内容: 我需要有关在Openpyxl中设置样式的建议。 我看到可以设置单元格的NumberFormat,但是我还需要设置字体颜色和属性(粗体等)。有一个style.py类,但是似乎我无法设置单元格的style属性,而且我真的不想开始修改openpyxl源代码。 有没有人找到解决方案? 问题答案: 从openpyxl版本1.5.7开始,我已成功应用以下工作表样式选项… 仅供参考,您可以在…中找到