React 和 Emotion:指定字体大小
React and Emotion: Specify font size
我正在使用 emotion
在我的 React 应用程序中设计和显示复利方程式。我的 render()
returns 这个:
<div css ={equation}>
<p>
P (1 +</p>
<p css={fraction}>
<span className="num">1</span>
<span className="symbol">/</span>
<span className="bottom">2</span>
</p>
)
<sup>(nt)</sup>
</div>
在我的组件之外我有:
const fraction = css`
display: inline-block;
position: relative;
vertical-align: middle;
letter-spacing: 0.0001em;
text-align: center;
.num {
display: block;
padding: 0;
height: 12px;
line-height: 12px;
}
.bottom {
border-top: thin solid black;
}
.symbol {
display: none;
}
`
const equation = css`
font-size: 100%;
.p{
font-size:large !important;
}
`;
分数的样式正确。但是,我无法更改 p
元素的字体。我得到它的唯一方法是将 p
元素切换为 h1
元素 - 但我不想那样做。我希望能够在我的情感 css 样式中指定字体大小。
我注意到您的代码中存在一些问题。
- 您在等式中传递了
.p { ...
,它不是 class 选择器,但应该是像 p { ...
这样的元素选择器
- 您的反应
div
必须使用 className
才能应用该效果
沙盒代码更改如下:https://codesandbox.io/s/emotion-xh53z?fontsize=14
复制到这里供大家参考:
import React from "react";
import { render } from "react-dom";
import { css } from "react-emotion";
const fraction = css`
display: inline-block;
position: relative;
vertical-align: middle;
letter-spacing: 0.0001em;
text-align: center;
.num {
display: block;
padding: 0;
height: 30px;
line-height: 12px;
}
.bottom {
border-top: thin solid black;
}
.symbol {
display: none;
}
`;
// Notice the p inside the equation
const equation = css`
p {
font-size: large !important;
}
`;
// Rather than css={}, you should be using className={}
const App = () => (
<div className={equation}>
<p>
P (1 +
<p className={fraction}>
<span className="num">1</span>
<span className="symbol">/</span>
<span className="bottom">2</span>
</p>
)<sup>(nt)</sup>
</p>
</div>
);
render(<App />, document.getElementById("root"));
我最后还移动了结束 </p>
标记,以确保它按照 inline-block
得到应用
更新 1:
这是最新更新的版本:https://codesandbox.io/s/emotion-1tjc7
根据他们最新的 blog,您应该使用:
import styled from '@emotion/styled'
import { css } from 'emotion'
而不是import styled, { css } from 'react-emotion'
更新二:
如果不能使用原版情感,可以考虑使用以下:
import styled from "@emotion/styled";
/** @jsx jsx */
import { css, jsx } from "@emotion/core";
根据他们documentation:
有两种方法可以开始使用 css 道具。
- Babel 预设(不能在 Create-React-App 或 CodeSandbox 中使用)
- JSX Pragma(这涉及将以上内容添加到代码行中)
我更新了相同的codesandbox:https://codesandbox.io/s/emotion-0z3vz
我正在使用 emotion
在我的 React 应用程序中设计和显示复利方程式。我的 render()
returns 这个:
<div css ={equation}>
<p>
P (1 +</p>
<p css={fraction}>
<span className="num">1</span>
<span className="symbol">/</span>
<span className="bottom">2</span>
</p>
)
<sup>(nt)</sup>
</div>
在我的组件之外我有:
const fraction = css`
display: inline-block;
position: relative;
vertical-align: middle;
letter-spacing: 0.0001em;
text-align: center;
.num {
display: block;
padding: 0;
height: 12px;
line-height: 12px;
}
.bottom {
border-top: thin solid black;
}
.symbol {
display: none;
}
`
const equation = css`
font-size: 100%;
.p{
font-size:large !important;
}
`;
分数的样式正确。但是,我无法更改 p
元素的字体。我得到它的唯一方法是将 p
元素切换为 h1
元素 - 但我不想那样做。我希望能够在我的情感 css 样式中指定字体大小。
我注意到您的代码中存在一些问题。
- 您在等式中传递了
.p { ...
,它不是 class 选择器,但应该是像p { ...
这样的元素选择器
- 您的反应
div
必须使用className
才能应用该效果
沙盒代码更改如下:https://codesandbox.io/s/emotion-xh53z?fontsize=14
复制到这里供大家参考:
import React from "react";
import { render } from "react-dom";
import { css } from "react-emotion";
const fraction = css`
display: inline-block;
position: relative;
vertical-align: middle;
letter-spacing: 0.0001em;
text-align: center;
.num {
display: block;
padding: 0;
height: 30px;
line-height: 12px;
}
.bottom {
border-top: thin solid black;
}
.symbol {
display: none;
}
`;
// Notice the p inside the equation
const equation = css`
p {
font-size: large !important;
}
`;
// Rather than css={}, you should be using className={}
const App = () => (
<div className={equation}>
<p>
P (1 +
<p className={fraction}>
<span className="num">1</span>
<span className="symbol">/</span>
<span className="bottom">2</span>
</p>
)<sup>(nt)</sup>
</p>
</div>
);
render(<App />, document.getElementById("root"));
我最后还移动了结束 </p>
标记,以确保它按照 inline-block
更新 1:
这是最新更新的版本:https://codesandbox.io/s/emotion-1tjc7
根据他们最新的 blog,您应该使用:
import styled from '@emotion/styled'
import { css } from 'emotion'
而不是import styled, { css } from 'react-emotion'
更新二:
如果不能使用原版情感,可以考虑使用以下:
import styled from "@emotion/styled";
/** @jsx jsx */
import { css, jsx } from "@emotion/core";
根据他们documentation:
有两种方法可以开始使用 css 道具。
- Babel 预设(不能在 Create-React-App 或 CodeSandbox 中使用)
- JSX Pragma(这涉及将以上内容添加到代码行中)
我更新了相同的codesandbox:https://codesandbox.io/s/emotion-0z3vz