JSX设置CSS样式详解

1. 使用className设置样式(CSS的其他选择器也是同理)

(1)定义一个CSS文件style.css,和普通CSS一样定义class选择器

.sty1{//和普通CSS一样定义class选择器
background-color: red;
color: white;
font-size: 40px;
}

(2)在JSX中导入编写好的CSS文件

import ‘./style.css’;

(3)JSX的调用

看背景颜色和文字颜色

说明:id选择器也是同理,由于React使用ES6编写代码,而ES6又有class的概念,所以为了不混淆class选择器在React中写成了className

可能你在看别人的代码的时候可能看到以下代码,这个是通过CSS Modules的写法

(1)定义一个CSS文件styleother.css,和普通CSS一样定义class选择器

    .sty2{
background-color: red;
color: white;
font-size: 40px;
}

(2)在JSX中导入编写好的CSS文件

import StyleOther from  './styleother.css';

(3)JSX的调用

<div className={StyleOther.sty2}>看背景颜色和文字颜色</div>

说明:使用这种方式也是可以的,只是你需要修改你的webpack的config文件,将loader: “style!css”修改为loader: “style!css?modules”,在css后面加一个modules,不过这两种方式是不能同时存在的,因为加了modules,

详细资料:点击打开链接

2. 使用React的行内样式样式设置样式

(1)在JSX文件中定义样式变量,和定义普通的对象变量一样

    let backAndTextColor = {
backgroundColor:'red',
color:'white',
fontSize:40
};

(2)JSX的调用

<div style={backAndTextColor}>看背景颜色和文字颜色</div>

当然你也可以不定义一个变量,直接写到JSX中,如下代码所示:

<div style={{backgroundColor:'red',color:'white',fontSize:40}}>看背景颜色和文字颜色</div>

分析:style={},这里的{}里面放的是对象,不管你是定义一个对象然后使用,还是直接在里面写对象都是可以的,甚至可以写成下面的样子

    style={this.getInputStyles()}
getInputStyles方法根据不同的状态返回不同的样式
getInputStyles() {
let styleObj;
if (this.state.focused == true) {
styleObj = {outlineStyle: 'none'};
}
return styleObj;
}

3. JSX行内样式扩展

在 React 中,行内样式并不是以字符串的形式出现,而是通过一个特定的样式对象来指定。在这个对象中,key 值是用驼峰形式表示的样式名,而其对应的值则是样式值,通常来说这个值是个字符串,如果是数字就不是字符串,不需要引号。

    var divStyle = {
color: 'white',
backgroundImage: 'url(' + imgUrl + ')',
WebkitTransition: 'all', // 注意这里的首字母'W'是大写
msTransition: 'all' // 'ms'是唯一一个首字母需要小写的浏览器前缀
};

另外浏览器前缀除了ms以外首字母应该大写,所以这里的WebkitTransition的W是大写的。

当为内联样式指定一个像素值得时候, React 会在你的数字后面自动加上 “px” , 所以下面这样的写法是有效的:

    let backAndTextColor = {
backgroundColor:'red',
color:'white',
fontSize:40
};

有时候你的确需要保持你的CSS属性的独立性。下面是不会自动加 “px” 后缀的 css 属性列表:

columnCount
fillOpacity
flex
flexGrow
flexShrink
fontWeight
lineClamp
lineHeight
opacity
order
orphans
strokeOpacity
widows
zIndex
zoom

最新文章

  1. iOS UIPageViewController
  2. 启用数据库的 Service Broker
  3. tcpproxy:基于 Swoole 实现的 TCP 数据包转发工具的方法
  4. Django 1.6 最佳实践: django项目的服务器自动化部署(转)
  5. python自省指南
  6. Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
  7. Javascript:getElementsByClassName
  8. Bother
  9. HTTP第一篇
  10. Linux入门之常用命令(12) mount
  11. Haproxy_haproxy.cfg
  12. jenkins插件findbugs+pmd+checkstyle结合sonar与maven(java环境代码质量和代码规范管理)
  13. 一文让你熟练掌握Linux的ncat(nc)命令
  14. hadoop Mahout中相似度计算方法介绍(转)
  15. Unity透明Shader
  16. Django Ajax登录 防止CSRF
  17. 屏幕录像专家exe视频批量翻录成视频avi格式
  18. xmlhttp.readyState==4 &amp;&amp; xmlhttp.status==200的探究
  19. 【转载】用Pwnage + Redsnow 制作完美越狱固件
  20. JavaScript数据结构-15.二叉树

热门文章

  1. Loadrunner11.0 录制手机App脚本的方法一
  2. 配置webpack loader vue 报错:Module build failed: TypeError: this._init is not a function
  3. C# 不使用递归遍历目录树中的文件和文件夹
  4. 根据ip地址获得国家和城市(C#)
  5. django linux环境部署
  6. 连接Oracle时报错ORA-12541: TNS: 无监听程序
  7. java解析html的table
  8. ExceptionLess的webAPI调用
  9. MVC Filter
  10. BZOJ 4282(慎二的随机数列