React 表中的边框重绘不匹配
Border redraw mismatch in React tables
我是 React 的新手,CSS,所以我决定制作一个计算器网络应用程序。除边界外,一切都按预期工作。有时当我选中或取消选中操作时,行之间的边界不会跨列对齐。然后,他们可以在点击更多次后自行修复。更奇怪的是,我在 Firefox 中测试时没有 运行 解决这个问题。我在 CSS 文件中使用 border-collapse
。我在下面包含了 table 代码和样式的核心。感谢您的帮助!
index.css
#output {
font-size: 1.5em;
}
#result {
border:4px solid #000;
border-collapse: collapse;
}
#result td {
border:1px solid #000;
}
#result th {
border:1px solid #000;
border-bottom:2px solid #000;
padding: 10px;
}
#result tr td {
padding: 4px;
padding-left: 10px;
width: 0;
white-space: nowrap;
}
index.js
function Output(props) {
const tableData = [];
const n1 = parseInt(props.num1);
const n2 = parseInt(props.num2);
if (props.doAdd) tableData.push({key: 'addRow', op: 'Addition', num: add(n1, n2)});
if (props.doSub) tableData.push({key: 'subRow', op: 'Subtraction', num: subtract(n1, n2)});
if (props.doMul) tableData.push({key: 'mulRow', op: 'Multiplication', num: multiply(n1, n2)});
if (props.doDiv) tableData.push({key: 'divRow', op: 'Division', num: divide(n1, n2)});
return (
<div id='output'>
<ResultTable data={tableData} />
</div>
);
}
function ResultTable(props) {
let rows = props.data.map(row => {
return <ResultRow key={row.key} op={row.op} num={row.num} />
});
return (
<table id='result'>
<thead>{<ResultHead />}</thead>
<tbody>{rows}</tbody>
</table>
);
}
function ResultHead() {
return (
<tr>
<th>Operation</th>
<th>Result</th>
</tr>
);
}
function ResultRow(props) {
return (
<tr>
<td>{props.op}</td>
<td>{props.num}</td>
</tr>
);
}
您没有为每个 .
设置高度
在同一行的某个点,一列的高度为 38.5px,其他列的高度为 40px。这就是为什么您会看到边界之间不匹配的原因。
您可以通过添加最小高度轻松解决此问题
#result tr td {
min-height: 40px;
}
这会起作用
删除 border-collapse: collapse;
并添加 border-spacing: 0;
。
#result {
border:4px solid #000;
border-spacing: 0;
}
关于 stackblitz 的工作示例:https://stackblitz.com/edit/react-aqyy9r
我是 React 的新手,CSS,所以我决定制作一个计算器网络应用程序。除边界外,一切都按预期工作。有时当我选中或取消选中操作时,行之间的边界不会跨列对齐。然后,他们可以在点击更多次后自行修复。更奇怪的是,我在 Firefox 中测试时没有 运行 解决这个问题。我在 CSS 文件中使用 border-collapse
。我在下面包含了 table 代码和样式的核心。感谢您的帮助!
index.css
#output {
font-size: 1.5em;
}
#result {
border:4px solid #000;
border-collapse: collapse;
}
#result td {
border:1px solid #000;
}
#result th {
border:1px solid #000;
border-bottom:2px solid #000;
padding: 10px;
}
#result tr td {
padding: 4px;
padding-left: 10px;
width: 0;
white-space: nowrap;
}
index.js
function Output(props) {
const tableData = [];
const n1 = parseInt(props.num1);
const n2 = parseInt(props.num2);
if (props.doAdd) tableData.push({key: 'addRow', op: 'Addition', num: add(n1, n2)});
if (props.doSub) tableData.push({key: 'subRow', op: 'Subtraction', num: subtract(n1, n2)});
if (props.doMul) tableData.push({key: 'mulRow', op: 'Multiplication', num: multiply(n1, n2)});
if (props.doDiv) tableData.push({key: 'divRow', op: 'Division', num: divide(n1, n2)});
return (
<div id='output'>
<ResultTable data={tableData} />
</div>
);
}
function ResultTable(props) {
let rows = props.data.map(row => {
return <ResultRow key={row.key} op={row.op} num={row.num} />
});
return (
<table id='result'>
<thead>{<ResultHead />}</thead>
<tbody>{rows}</tbody>
</table>
);
}
function ResultHead() {
return (
<tr>
<th>Operation</th>
<th>Result</th>
</tr>
);
}
function ResultRow(props) {
return (
<tr>
<td>{props.op}</td>
<td>{props.num}</td>
</tr>
);
}
您没有为每个 .
设置高度在同一行的某个点,一列的高度为 38.5px,其他列的高度为 40px。这就是为什么您会看到边界之间不匹配的原因。
您可以通过添加最小高度轻松解决此问题
#result tr td {
min-height: 40px;
}
这会起作用
删除 border-collapse: collapse;
并添加 border-spacing: 0;
。
#result {
border:4px solid #000;
border-spacing: 0;
}
关于 stackblitz 的工作示例:https://stackblitz.com/edit/react-aqyy9r