如何在SCSS中为React组件的headerContainer.listmode组合类设置样式?
问题:React动态类名对应的SCSS样式写法
我在React的.jsx组件中编写了如下代码,根据type是否等于'travellist',为div元素动态添加headerContainer类,或headerContainer与listmode的组合类:
<div className={type === "travellist" ? "headerContainer listmode" : "headerContainer"}>
现需在.scss文件中针对该组合类设置样式,请问正确的写法是怎样的?以下是我尝试的示例:
.headerContainer.listmode{ margin: 20px 0px 40px 0px; } or .headerContainer{ margin: 20px 0px 100px 0px; }
你尝试的第一种写法.headerContainer.listmode是完全正确的,这是CSS/SCSS中匹配「同时拥有两个类名的元素」的标准语法——两个类选择器直接连写(无空格),代表仅对同时包含headerContainer和listmode类的元素生效。
第二种写法只是单独为headerContainer类设置样式,若要实现「默认样式+组合类覆盖样式」的逻辑,建议按以下方式组织代码,保证样式优先级和覆盖关系清晰:
// 默认样式:仅拥有headerContainer类时生效 .headerContainer { margin: 20px 0 100px 0; } // 组合类样式:同时拥有两个类时生效,会覆盖默认margin .headerContainer.listmode { margin: 20px 0 40px 0; }
这样写完全匹配你React代码的逻辑:当type不等于travellist时,元素用默认margin;当type等于travellist时,组合类样式会覆盖默认值,应用新的margin设置。
内容的提问来源于stack exchange,提问作者user1306926
相关产品推荐
相关产品推荐

