javascript - 情感 - 将样式对象传递给外部库
问题描述
我正在使用 reactjs-popup,其中一个道具是contentStyle
,它允许您传递 css-in-js 对象来设置库中的内部 div 样式。
但是,当我在其中传递带有 @media 的 css 对象时,库不会处理它。
我想知道是否有办法告诉情感“翻译”这个对象,或者以某种方式包装库元素,以便它可以根据需要处理 @media 查询。
这是一个演示代码:
/** @jsx jsx */
import { jsx } from '@emotion/core';
import ReactJsPopup from 'reactjs-popup';
import { FC, PropsWithChildren } from 'react';
const Modal: FC<{}> = props => {
const style = {
padding: 0,
minHeight: '100%',
'@media (min-width: 576px)': {
minHeight: 'auto' // <----------- Doesn't work
}
}
return (
<ReactJsPopup contentStyle={style}>
{(close): JSX.Element => (
<div>
BODY
</div>
)}
</ReactJsPopup>
);
};
export default Modal;
解决方案
内联样式对象目前不支持媒体查询。
这里可行的选择是使用className
道具来设置内容的样式。正如文档所述:
这个类名将与组件元素合并:ex className='foo' 表示 foo-arrow 为箭头样式, foo-overlay 为样式覆盖, foo-content 为样式弹出内容
使用情感时,您可以使用此属性确保选择器是唯一的。
import { css } from "emotion";
<ReactJsPopup
className={css`
&-content {
color: red;
}
`}
>
</ReactJsPopup>
注意:这&
是由情感添加的随机类名。其次content
是由库添加
推荐阅读
- frama-c - Frama-C:在命令行输出中显示调用堆栈
- c# - 以编程方式完成条件业务流程时抛出异常
- visual-studio-code - VS Code 触摸板滚动移动光标而不是页面
- android - RecycleView 宽度和 ConstraintLayout
- design-patterns - 这个伪代码用于什么设计模式?
- c# - C#:删除函数没有删除确切的索引
- computer-vision - 使用单个前置摄像头,如何过滤掉不在同一路径上、没有可见车道标记的汽车?
- mysql - 选择分组依据的最新记录
- c# - 如何使用 shim 和静态工厂方法进行单元测试?
- postgresql - 基于记录数的 PostgreSQL 表分区