基础网格系统不起作用

时间:2017-07-21 10:11:17

标签: css reactjs webpack sass zurb-foundation

为什么基础网格系统不会影响我的div:

  render: function(){
    var {todos,showCompleted,searchText} = this.state;
    var filteredTodos = TodoAPI.filterTodos(todos,showCompleted,searchText);
    return (
      <div>
        <h1 className="page-title">Todo App</h1>

        <div className="row">
          <div className="column small-centered small-5 medium-6 large-5">
            <div className="container">
              <TodoSearch onSearch = {this.handleSearch} />
              <TodoList todos ={filteredTodos} onToggle ={this.handleToggle}/>
              <AddTodo onAddTodo ={this.handleAddTodo}/>
            </div>
         </div>
       </div>
      </div>
    );
  }

我使用firebug来调试样式: 并且无法找到:

.large-5 {
    width: 33.3333%;
}

该项目的回购是here

2 个答案:

答案 0 :(得分:2)

正在使用React + Foundation

我不认为你是如何使用网格系统的。

对于你的情况可能是这样的:

<div className="grid-basics-example">
  <Row className="display">
    <Column small={5} medium={6} large={5}>
       <TodoSearch onSearch = {this.handleSearch} />
       <TodoList todos ={filteredTodos} onToggle ={this.handleToggle}/>
       <AddTodo onAddTodo ={this.handleAddTodo}/>
    </Column>
  </Row>
</div>

参考:https://react.foundation/

答案 1 :(得分:2)

您应该将基础导入为

@import '~foundation-sites/scss/foundation';

由于您已在webpack.config

中安装了includedPath

调试一段时间后,我发现问题是基础 - 一切 mixin默认包含另一种网格样式

@mixin foundation-everything(
  $flex: true, //You can test this by modifying it directly in your node_modules, set it to false
  $prototype: false
) {
  @if $flex {
    $global-flexbox: true !global;
  }

  @include foundation-global-styles;
  @if not $flex {
    @include foundation-grid;
  }
  @else {
    @if $xy-grid {
      @include foundation-xy-grid-classes;
    }
    @else {
      @include foundation-flex-grid;
    }
  }
  //more scss here
)

这就是为什么你的类不应用预期的样式的原因,因为根据基础 - 所有 mixin生成不同的类(特别是生成XY网格而不是你期望,基础网格)。

您可以通过不同的方式处理此问题,具体取决于您的应用。

1)您可以在项目中包含所需的基本样式集。 (我的推荐)

2)以某种方式改变mixin(我不认为动态导入是一件事吗?(https://github.com/sass/sass/issues/279

可能还有其他选项,例如:生成一次css并直接将其包含在您的应用中或使用react-foundation package。再次,这取决于您的需求。