首页 > 其他分享 >React的行内样式与CSS

React的行内样式与CSS

时间:2023-04-06 09:33:47浏览次数:50  
标签:style 行内 样式 React CSS 属性

如何为组件添加 CSS 的 class?

传递一个字符串作为 className 属性:

render() {
  return <span className="menu navigation-menu">Menu</span>
}

CSS 的 class 依赖组件的 props 或 state 的情况很常见:

render() {
  let className = 'menu';
  if (this.props.isActive) {
    className += ' menu-active';
  }
  return <span className={className}>Menu</span>
}

style(行内样式 inline-style) 规范

注意:
在文档中,部分例子为了方便,直接使用了 style,但是通常不推荐将 style 属性作为设置元素样式的主要方式。在多数情况下,应使用 className 属性来引用外部 CSS 样式表中定义的 class。style 在 React 应用中多用于在渲染过程中添加动态计算的样式。

style 接受一个采用小驼峰命名属性的 JavaScript 对象,而不是 CSS 字符串。这与 DOM 中 style 的 JavaScript 属性是一致的,同时会更高效的,且能预防跨站脚本(XSS)的安全漏洞。例如:

const divStyle = {
  color: 'blue',
  backgroundImage: 'url(' + imgUrl + ')',
};

function HelloWorldComponent() {
  return <div style={divStyle}>Hello World!</div>;
}

注意:样式不会自动补齐前缀。如需支持旧版浏览器,请手动补充对应的样式属性:

const divStyle = {
  WebkitTransition: 'all', // note the capital 'W' here
  msTransition: 'all' // 'ms' is the only lowercase vendor prefix
};

function ComponentWithTransition() {
  return <div style={divStyle}>This should work cross-browser</div>;
}

Style 中的 key 采用小驼峰命名是为了与 JS 访问 DOM 节点的属性保持一致(例如:node.style.backgroundImage )。浏览器引擎前缀都应以大写字母开头,除了 ms。因此,WebkitTransition 首字母为 ”W”。

React 会自动添加 ”px” 后缀到内联样式为数字的属性后。如需使用 ”px” 以外的单位,请将此值设为数字与所需单位组成的字符串。例如:

// Result style: '10px'
<div style={{ height: 10 }}>
  Hello World!
</div>

// Result style: '10%'
<div style={{ height: '10%' }}>
  Hello World!
</div>

但并非所有样式属性都转换为像素字符串。有些样式属性是没有单位的(例如 zoom,order,flex)。无单位属性的完整列表在此处

行内样式不好吗?

从性能角度来说,CSS 的 class 通常比行内样式更好。

参考文献

标签:style,行内,样式,React,CSS,属性
From: https://www.cnblogs.com/gfhcg/p/17259036.html

相关文章

  • CSS笔记(待完善)
    CSS笔记css权重ID(100)>class(10)>element(1)css最高权重!important块元素(block)可以设置宽度和高度,独立成行。h1~h6、p、div、ul、li行内元素(内联元素、块级元素)(inline)不可以设置宽度和高度,不独立成行a、span行内块元素(inline-block)可以设置宽度和高度,不独立......
  • 浅谈React与SolidJS对于JSX的应用
    React将JSX这一概念深入人心。但,并非只有React利用了JSX,VUE、SolidJS等JS库或者框架都使用了JSX这一概念。网上已经有大量关于JSX的概念与形式的讲述文章,不在本文的讨论范围。前言实际上,JSX并不是合法有效的JS代码或HTML代码。目前为止也没有任何一家浏览器的引擎实现了对JSX的......
  • python-爬虫-css提取-写入csv-爬取猫眼电影榜单
    猫眼有一个电影榜单top100,我们将他的榜单电影数据(电影名、主演、上映时间、豆瓣评分)抓下来保存到本地的excle中本案例使用css方式提取页面数据,所以会用到以下库importtimeimportrequestsimportparsel#解析库,解析cssimportcsv#爬取的数据写入csv创建csv文件标头信息......
  • 前端开发-CSS
    三种CSS写法1.在标签内书写2.在head中书写3.在外部文件书写 各种选择器常用:类选择器,标签选择器,后代选择器少用:ID选择器,属性选择器    多个样式覆盖问题:1.样式不同时一起作用2.样式相同时,取style中排序后面的3.若要强制使用,则添加important,如color:red!imp......
  • 第一节:react简介和入门用法
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • js 修改当前的css
    CSSStyleSheet.insertRule()CSSStyleSheet.insertRule(".red::before{color:lightgray;content:"测试"}",0)CSSStyleSheet.addRule()已经移除废弃stylesheet.deleteRule(index)CSSStyleSheet.replace()详情见官网https://developer.mozilla.org/......
  • 怎么利用CSS实现HTML5响应式导航栏
    在html5中实现响应式导航栏的方法有很多种,如何利用纯CSS来现实这一功能,在这里小编就通过实例来和大家讲解,纯CSS实现的HTML5响应式导航栏的方法和技巧。目前响应试web页面已经逐渐开始盛行,除了将页面的内容以及布局结构实现响应试以外,剩下的重点就是实现导航栏的响应试,当然方法有很......
  • Chrome 112 发布,删除 Chrome Apps、支持 CSS 嵌套
    时隔一个月时间,Google正式发布了Chrome112版本,该版本删除了ChromeApps、支持CSS嵌套、改进了<dialog>等。ChromeApps过去,ChromeApps是一种被视为向用户提供轻量级网站体验的方式。然而,它们从未像浏览器扩展或标准网站那样大受欢迎。为了跟上时代的变化,改善用......
  • 黑马程序员前端-CSS:溢出的文字省略号显示
    按照HTML+CSS的学习顺序笔记已经更新了28篇内容了,因为篇幅问题,请看文末。目录一、单行文本溢出显示省略号二、多行文本溢出显示省略号(了解即可)三、往期合集今天来学溢出文字省略号显示。一、单行文本溢出显示省略号单行文本溢出显示省略号必须满足三个条件:/*1.先强制一行内显示文......
  • 黑马程序员前端-CSS盒子模型以及PS基础
    前端学习笔记教程不定期更新中,传送门:前端HTML第一天:什么是网页?什么是HTML?网页怎么形成?黑马程序员前端-CSS入门总结黑马程序员前端-CSS之emmet语法黑马程序员前端-CSS的复合选择器黑马程序员前端-CSS的显示模式黑马程序员前端-CSS背景黑马程序员前端-CSS三大特性:叠层性、继承性、优......