• 技术文章 >web前端 >js教程

    react中样式冲突怎么解决

    藏色散人藏色散人2021-01-15 17:41:50原创916

    解决react中样式冲突的方法:首先打开相应的代码文件;然后将类名前加上模块名,如将整个组件的样式表CSS类名前加上组件名LoveVideo即可。

    本教程操作环境:windows7系统、react17.0.1版本、thinkpad t480电脑。

    推荐:《javascript基础教程

    解决react中样式冲突

    react在开发中很多有很多需要注意的地方,换句话说就是有很多小坑需要踩一踩,这里分享一下我遇到的一个小坑,就是样式冲突,这是一个值得注意的问题,首先看一下例子:

    有两个组件,一个叫做TestAComponent,另外一个叫做TestBComponent,在TestA组件中我写了一个背景色为蓝色的按钮,TestB中我写了一个背景色为红色的按钮。

    TestAComponent 组件A:

    class TestAComponent extends React.Component {
      render() {
        return (
          <div>
            <button className="box">背景为蓝色</button>
          </div>
        );
      }
    }

    TestA css,背景设置的为蓝色:

    .box{
      font-size: 20px;
      margin: 10px;
      padding: 20px;
      background-color: blue;
      border-radius: 10px;
    }

    TestB 组件B:

    class TestBComponent extends React.Component {
      render() {
        return (
          <div>
            <button className="box">背景为红色</button>
          </div>
        );
      }
    }

    TestB css,背景设置的为红色:

    .box{
      font-size: 20px;
      margin: 10px;
      padding: 20px;
      background-color: red;
      border-radius: 10px;
    }

    代码写好之后npm start一下,这是会发现浏览器里显示的效果是这样的:

    9ec423d02c02729b2c96c2dd6fe989f.png

    明明两个按钮设置了不同的背景色,为什么实际显示会这样呢?这是我们分析一下样式的设置,在标签中我们设置的class名为box,这是很多前端新人常用的命名方法,但是将不同组件的标签的class类名设置为相同的名字会造成样式冲突。

    解决此问题方法:

    将类名前加上模块名,如这个组件叫做LoveVideo,则整个组件的样式表CSS类名前加上组件名LoveVideo:

    <div>
        <button className="LoveVideobox">TestA 背景为蓝色</button>  
    </div>
    .LoveVideobox{
      font-size: 20px;
      margin: 10px;
      padding: 20px;
      background-color: blue;
      border-radius: 10px;
    }

    修改好之后刷新一下页面,你就会发现样式冲突的问题就会很好的解决:

    052a680857fe866d26377a67a1ff36f.png

    除了这样命名相同造成的冲突外,还有一种情况就是设置了一些全局的样式,比如:

    html{
      background-color: #fff;
      font-size: 14px;
    }
    *{
      margin: 0;
      padding: 0;
      background-color: #fff;
      font-size: 14px;
    }

    这样的全局通用的样式也切记不可设置的,因为使用react做一个单页应用只有一个页面,如果设置了全局样式则整个页面都会加载出此样式。

    总结

    1、单个组件类名加上组件名前缀,如组件名为LoveVideo,则所有的样式名前加上此前缀

    2、不要设置html{}、*{}之类的全局通用样式

    以上就是react中样式冲突怎么解决的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:react
    上一篇:jQuery获取元素到顶部距离的方法 下一篇:react中怎么获取input的值
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• react如何控制显示与隐藏• React中函数组件与类组件的区别是什么?• redux和react有啥区别• react向数组中追加数据的方法• react可以引入css吗?
    1/1

    PHP中文网