在组件中使用 style 行内样式并封装样式对象|学习笔记

简介: 快速学习在组件中使用 style 行内样式并封装样式对象

开发者学堂课程【React 入门与实战在组件中使用 style 行内样式并封装样式对象】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/585/detail/8109


在组件中使用 style 行内样式并封装样式对象


内容介绍

一、美化页面

二、封装


一、美化页面

先美化大标题:

CmtList.jsx

render() {return <div>

<h1 style="colpr:red;">

这是评论列表组件</h1>

保存出现报错:

The styleprop expects a mapping from style

properties to values,not a string.For

example,style={{marginRight:spacing+’em’}}when using JSX.

JSX 中写 state 样式的不能直接写字符串。

外层 { }表示要写 js,里面()表示样式对象。

所以:

{/*注意:JSX中,如果想写行内样式了,不能为style设置字符串的值*/}

{/*而是应该这么写:style={ { color: 'red'}}*/}

{/* <h1 style="color:red; ">这是评论列表组件</h1>*/}

在行内样式中,如果是数值类型的样式,则可以不用引号包裹,如果是字符串类型的样式值必须使用引号包裹。

比如写入 zIndex3 执行不会出现报错。

<h1 style={ { color:I 'red ', fontsize:‘35px}}>    

//这是评论列表组件

</h1>

字体比模板粗并且居中所以加一个样式:

fontWeight200textAlign:‘center

接下来美化列表里:

在外层有虚线并且有距离,字体与虚线有距离,有阴影:

return <div style={{

border: '1px dashed #ccc ' ,

margin: '10px',

padding: '10px

boxShadow:'0 0 10px #ccc '}}>

接下来把文字变小:

<h1 style={{ fontSize: '14px’}}>评论人: {props.user}</h1>

<p style={{fontsize: '12px'}}>评论内容: {props.content}</p>

image.png


二、封装

这样写结构变得繁琐,对结构进行优化,内部的方法代表对象。

对象也可以直接写在外边:

const itemStyle : [ border: ‘1px dashed #ccc ' , margin: ‘10px', padding: ‘10px', boxShadow: '0 0 10px #ccc'

const userStyle = { fontSize: '14px’}

const contentstyle = { fontSize: '12px’}

export default function CmtItem(props) {

return <div style={itemStyle}>

<h1 style={userStyle}>评论人: {props.user}</h1>

<p style={contentStyle}>评论内容:{props.content}</p>

</div>

}

这是第一层封装,将样式对象和 UI 结构分离。

第二层封装合并成大的样式对象:

const styles = {

item: { border: '1px dashed #cce ' , margin: '10px', padding: '10px', boxShadow: '0 0 10px tc.c' ),

user: { fontSize: '14px’}

content: { fontSize: '12px’}

export default function CmtItem(props) {

return <div style={styles.item}>

<h1 style={styles.user}>评论人: {props.user}</h1>

<p style={styles.content}>评论内容:{props.content}</p>

</div>

把三个不相关的样式封装成一个大样式,JS 对象,还可以继续封装成 js 文件放到单独的模块中:

新建一个 styles.js 文件,

export default iconst styles ={

item: { border: '1px dashed #ccc ' , mangin: '10px', padding: '10px', boxShadow: '0 0 10px #ccc' },

user: { fontSize: '14px’}

content: { fontSize: '12px’}

让外界拿到这个对象:

import styles from '@/components/styles'

这是第三层封装,抽离为单独的样式表模块。

相关文章
|
6月前
|
前端开发 JavaScript
绑定内联样式
绑定内联样式
|
2月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
34 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
2月前
|
前端开发
定义CSS样式
定义CSS样式。
29 2
|
2月前
|
前端开发
行内样式表(style属性)
行内样式表(style属性)。
31 4
|
5月前
|
Web App开发 前端开发 Windows
CSS基础常用属性之字体属性(如果想知道CSS的字体属性知识点,那么只看这一篇就足够了!)
CSS基础常用属性之字体属性(如果想知道CSS的字体属性知识点,那么只看这一篇就足够了!)
|
4月前
|
JavaScript
文本,最简单的文本样式设计风格样式,让Element-UI盒子居中的写法
文本,最简单的文本样式设计风格样式,让Element-UI盒子居中的写法
|
6月前
|
前端开发 容器
CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)
CSS3属性详解(一)文本 盒模型中的 box-ssize 属性 处理兼容性问题:私有前缀 边框 背景属性 渐变 前端开发入门笔记(七)
83 2
|
6月前
|
前端开发
CSS元素隐藏的多种方式:让你轻松实现页面布局
CSS元素隐藏的多种方式:让你轻松实现页面布局
|
前端开发
【前端】【样式】CSS居中的三种方式
【前端】【样式】CSS居中的三种方式
91 1