javascript - 使用react+redux技术在页面实时编辑CSS代码,点击提交之后怎么能够使页面根据编写的CSS样式进行改变?
巴扎黑
巴扎黑 2017-04-11 11:46:37
[JavaScript讨论组]

有这么一个问题

提供一个编辑区域,能够随意编写CSS代码,然后提交之后能够更改这个页面的一些样式
比如:

p {
   border-color: red;
}

a {
   color: yellow; 
}

这样提交之后,页面上的p的边框都会变成红色,a标签文字变成黄色

使用的技术是利用react+redux更改其state来进行更改CSS样式

希望能够得到一些解决方案,谢谢啦

我自己的想法

componentDidMount的时候,使用document.queryselector()去循环处理CSS的样式对象,把添加的CSS样式用style加上去,不知道这样的方案是否合理?

巴扎黑
巴扎黑

全部回复(3)
高洛峰

很有趣的需求,有一个想法,不知道能不能行

  1. 放一个script组件在页面上

  2. style组件componentDidMount的时候,获取提交的样式,然后在render里面把样式放到里面

类似这样:

class CustomStyle extends Component {
  componentDidMount(){
    //... 获取style,并保存到state中
  }

  render(){
    return (
      <style>{this.state.styles}</style>
    )
  }
}

没有试过,你可以试试

巴扎黑

我理解你的意思:我在文本框输入border-color:#000 点击提交,下方页面显示的框就会显示黑色,是这样的嘛?
如果是这样,那你把文本框的信息提取输入,点击提交的时候,setState应该可以把

那么页面下方的这个p的样式就可以这样写了

<p style={ this.state.borderColor }>
    //.......
</p>
高洛峰

其实这个解决方案很简单,在提交之后:

// 获取输入框里面的文本内容
const styleContent = ...;
// 创建一个 <style> 标签元素
const styleElement = document.createElement('style');
// 添加样式内容
styleElement.innerHTML = styleContent;
// 放倒 head 里面
document.querySelector('head').appendChild(styleElement)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号