ThatManK Mobile Article
todoList_1-实现基本样式
- 整体样式如下

- 新建 4 个组件, 目录如下
$ ls -R src/
src/:
App.css App.js components/ index.js
src/components:
Footer/ Header/ Item/ List/
src/components/Footer:
index.jsx
src/components/Header:
index.jsx
src/components/Item:
index.jsx
src/components/List:
index.jsx
- 单个组件内容, 例如 Footer => index.jsx
import React, { Component } from "react";
export default class Footer extends Component {
render() {
return <div>footer</div>;
}
}
- 基本样式实现 => App.css
* {
padding: 0;
margin: 0;
border: none;
box-sizing: border-box;
}
button {
position: absolute;
right: 0;
cursor: pointer;
padding: 4px 8px;
border-radius: 5px;
color: #fff;
background-color: red;
}
/* App样式 */
.App {
width: 400px;
margin: 20px;
border: 1px solid #eee;
padding: 0 10px;
border-radius: 5px;
font-size: 10px;
}
/* Header */
.header-input {
border: 1px solid #eee;
margin-top: 10px;
width: 100%;
padding: 10px;
border-radius: 3px;
}
/* Footer */
.footer {
position: relative;
display: flex;
align-items: center;
padding: 20px 0;
}
/* List */
.list {
margin-top: 5px;
border: 1px solid #eee;
padding: 0 10px;
}
/* Item */
li {
position: relative;
display: flex;
align-items: center;
padding: 10px 0;
border-bottom: 1px solid #eee;
}
li:last-child {
border-bottom: 0;
}
- App 内容,引入组件和样式 => App.js
import React, { Component } from "react";
import Header from "./components/Header";
import List from "./components/List";
import Footer from "./components/Footer";
import "./App.css";
export default class App extends Component {
render() {
return (
<div className="App">
<Header />
<List />
<Footer />
</div>
);
}
}
- Header 内容, 实现输入框 => index.jsx
import React, { Component } from "react";
export default class Header extends Component {
render() {
return (
<>
<input
className="header-input"
type="text"
placeholder="请输入任务名称, 摁回车键确认"
/>
</>
);
}
}
- Footer 内容, 实现底部布局 => index.jsx
import React, { Component } from "react";
export default class Footer extends Component {
render() {
return (
<div className="footer">
<label>
<input
type="checkbox"
style={{ verticalAlign: "middle", marginTop: 0 }}
/>
</label>
<span>
<span>已完成0</span> / 全部0
</span>
<button>清除已完成任务</button>
</div>
);
}
}
- List 内容, 包裹 Item => index.jsx
import React, { Component } from "react";
import Item from "../Item";
export default class List extends Component {
render() {
return (
<div className="list">
<Item />
<Item />
</div>
);
}
}
- Item 列表 => index.jsx
import React, { Component } from "react";
export default class Item extends Component {
render() {
return (
<>
<li>
<label style={{ display: "flex" }}>
<input
type="checkbox"
style={{ verticalAlign: "middle", marginTop: 0 }}
/>
<span>{123}</span>
</label>
<button style={{ display: "none" }}>删除</button>
</li>
</>
);
}
}