react内联样式的css伪代码“li::before”

IT技术 reactjs inline-styles
2021-05-05 14:12:06

我有一个名为“ExplanationLists”的 React 组件,我想li使用 css 伪代码将动态内联样式添加到html 元素中li::after,这样我就可以更好地使用图形来设置项目符号的样式。例如,

li::before {
    content: dynamic_content;
}

但是,我无法真正做到这一点。任何建议将不胜感激。

下面是我写的代码。

class ExplanationLists extends Component{
    populateHtml(){
        // asign lists data into variable "items"
        var items = this.props.items; 

        // loop though items and pass dynamic style into li element
        const html = items.map(function(item){
            var divStyle = {
                display: "list-item",
                listStyleImage: 
                    'url(' +  
                    '/images/icons/batchfield_fotograf_rosenheim_icon_' + 
                    item.icon +
                    '.png' +
                    ')'   
            };  

            // html templating 
            return (
                 <li style={divStyle}>
                   <h3 >{item.title}</h3>
                   <p>{item.desc}</p>
                 </li>
            );
        });

        // return html
        return html;
    }

    render(){
        return (
            <ul>
                {this.populateHtml()}
            </ul>
        )
    }
}
4个回答

请参阅此链接

  1. "&::before": { ...react style here }
  2. 你必须有属性 content: `''`

例子:


        content: {
            display: "flex",
            margin: 10,
            "&::before": {
                content: `''`,
                position: 'absolute',
                left: '-50px',
                top: '50px',
                width: '0',
                height: '0',
                border: '50px solid transparent',
                borderTopColor: 'red',
            }
        },

希望这可以帮助!

在您的特定情况下,您可以使用data属性。

li::before {
  content: attr(data-content);
}
render = () => <li data-content={this.props.content}>{this.props.children}</li>

不,这不可能。Reactstyle属性style底层使用 HTML属性,因此它内部不能有选择器。就像这个关于内联样式的答案中所述

style 属性的值必须匹配 CSS 声明块内容的语法(不包括定界大括号),其形式语法在下面的 CSS 核心语法的术语和约定中给出:

declaration-list
  : S* declaration? [ ';' S* declaration? ]*
  ;

您可以在react中以编程方式更改 ::before、::after 等伪元素的值。

试试这个解决方案,https://stackoverflow.com/a/65690431/7657952