css - 使用示例作为指南渲染布局
问题描述
我有这个呈现菜单的组件:
import React, { Component } from 'react'
import { BrowserRouter as Router, Route, NavLink } from 'react-router-dom'
import Intro from './Intro'
import Houses from './Houses'
import PortfolioPage from './PortfolioPage'
import Cronology from './Cronology'
var data = require('./db.json');
class PortfolioMenu extends Component {
constructor(props) {
super(props)
this.state = {
portfolioClass: "",
interiors: [],
furnitures: [],
studies: [],
houses: []
}
}
componentDidMount() {
this.setState({
interiors: data.interiors[0],
furnitures: data.furnitures[0],
studies: data.studies[0],
houses: data.houses
})
}
render() {
return (
<div>
<Router>
<div class="wrapper2">
<div class="wrapper-portfolio">
<Route exact path='/portfolio' render={() => <Intro />} />
<Route exact path='/portfolio/casas' render={() => <Houses data={this.state.houses}/>} />
<Route exact path='/portfolio/interiores' render={() => <PortfolioPage data={this.state.interiors}/>} />
<Route exact path='/portfolio/moveis' render={() => <PortfolioPage data={this.state.furnitures}/>} />
<Route exact path='/portfolio/estudos' render={() => <PortfolioPage data={this.state.studies}/>} />
<Route exact path='/portfolio/cronologia' render={() => <Cronology />} />
</div>
<nav>
<ul className={`portfolio-menu ${portfolioClass}`}>
<li><NavLink activeClassName="active" isActive={this.isActive} exact to="/portfolio">• introdução</NavLink></li>
<li><NavLink activeClassName="active" exact to="/portfolio/casas">• casas</NavLink></li>
<li><NavLink activeClassName="active" exact to="/portfolio/interiores">• interiores</NavLink></li>
<li><NavLink activeClassName="active" exact to="/portfolio/moveis">• móveis</NavLink></li>
<li><NavLink activeClassName="active" exact to="/portfolio/estudos">• estudos</NavLink></li>
<li><NavLink activeClassName="active" exact to="/portfolio/cronologia">• cronologia</NavLink></li>
</ul>
</nav>
</div>
</Router>
</div>
)
}
}
export default PortfolioMenu
我想做<li>
如下的例子:
我该如何解决?我想以这个例子中显示的这种精确方式进行渲染。做这个 li 元素的分布。我想在第一行做四个块,在第二行做两个。
解决方案
如果您必须使用纯 CSS(正如您在上面的评论中提到的),您将需要使用CSS 网格。
如果您愿意使用第三方 JavaScript 库,我建议您研究Material-UI。特别是他们的Grid组件。
您的问题使您看起来对前端开发比较陌生,所以我推荐第二种方法。Material-UI 包括许多在多个浏览器中经过良好测试的常用组件。这是创建一个不错的布局和设计的好方法,而不会让人头疼。
推荐阅读
- scala - scala中Union函数的求值顺序
- python - 使用tensordot无法重新创建具有“交错”输出索引的一行einsum函数?
- javafx - 尽管已链接,但 Anchor Pane 仍为空
- rust - 如何在 Petgraph 中获得确定性拓扑排序?
- django - Django ArrayField 在其中创建三个字符域?
- google-chrome-extension - 如何使用 declarativeNetRequest 动态规则附加到 requestHeaders
- typescript - 具有基于参数枚举的返回泛型类型的构造函数:TS2322
- python - Python 错误:递归超出最大深度 cmp
- apex - Apex 自定义异常并使用参数创建新异常
- python - django 搜索我当前项目中不存在的 url。为什么会这样?该项目曾经存在但不再存在