为什么我的按钮在 Bootstrap 5 迁移后是全宽的?
Why are my buttons full width after a Bootstrap 5 migration?
我升级了我的依赖项,它导致了以下问题 - 这两个按钮过去是并排放置的,但现在它们堆叠在一起并占据了整个宽度:
import { Button as BootstrapButton, Row, Container, Table } from 'react-bootstrap';
<Container>
<Row>
<Button
data-testid="brazejob-start-sync-btn"
variant="primary"
size="sm"
disabled={isJobRunning()}
onClick={startSync}
>
<PlayFill />
Start New Sync
</Button>
<Button
data-testid="brazejob-cancel-sync-btn"
variant="warning"
size="sm"
disabled={!isJobRunning()}
onClick={cancelSync}
>
<StopFill />
Cancel
</Button>
</Row>
<Container>
我想 bootstrap 5 和 react-bootstrap 2 有很多变化所以我可能遗漏了一些非常简单的东西,但我在 react 的文档上找不到任何东西-bootstrap关于
Bootstrap 期望 只有 列位于行内。 Bootstrap 5 有 CSS 强制行中的所有子项(预期为列)增长到 100% 宽度。因此,由于 .row
.
上的 flex-wrap,您的按钮将增长到 100% 宽度并环绕
Bootstrap 4 人没有这个...
.row>* {
flex-shrink: 0;
width: 100%;
max-width: 100%;
padding-right: calc(var(--bs-gutter-x) * .5);
padding-left: calc(var(--bs-gutter-x) * .5);
margin-top: var(--bs-gutter-y);
}
因此,改为在行内使用 Col,并将按钮放在 Col 中。在 Col 上设置 d-flex
,这样按钮将水平放置,因为 flex-direction:row 是 flexbox 默认...
<Container className="App">
<Row>
<Col className="d-flex">
<Button
data-testid="brazejob-start-sync-btn"
variant="primary"
size="sm"
>
Start New Sync
</Button>
<Button
data-testid="brazejob-cancel-sync-btn"
variant="warning"
size="sm"
>
Cancel
</Button>
</Col>
</Row>
</Container>
要详细说明 Zim 的答案,请在每个按钮周围添加一个 Col 组件,或者删除 Row 组件并使用 flex 类。我不会两者都做,因为它有点多余。
<Container>
<Row>
<Col>
<Button />
</Col>
<Col>
<Button />
</Col>
</Row>
<Container>
<Container>
<div className="d-flex">
<Button />
<Button />
</div>
<Container>
我升级了我的依赖项,它导致了以下问题 - 这两个按钮过去是并排放置的,但现在它们堆叠在一起并占据了整个宽度:
import { Button as BootstrapButton, Row, Container, Table } from 'react-bootstrap';
<Container>
<Row>
<Button
data-testid="brazejob-start-sync-btn"
variant="primary"
size="sm"
disabled={isJobRunning()}
onClick={startSync}
>
<PlayFill />
Start New Sync
</Button>
<Button
data-testid="brazejob-cancel-sync-btn"
variant="warning"
size="sm"
disabled={!isJobRunning()}
onClick={cancelSync}
>
<StopFill />
Cancel
</Button>
</Row>
<Container>
我想 bootstrap 5 和 react-bootstrap 2 有很多变化所以我可能遗漏了一些非常简单的东西,但我在 react 的文档上找不到任何东西-bootstrap关于
Bootstrap 期望 只有 列位于行内。 Bootstrap 5 有 CSS 强制行中的所有子项(预期为列)增长到 100% 宽度。因此,由于 .row
.
Bootstrap 4 人没有这个...
.row>* {
flex-shrink: 0;
width: 100%;
max-width: 100%;
padding-right: calc(var(--bs-gutter-x) * .5);
padding-left: calc(var(--bs-gutter-x) * .5);
margin-top: var(--bs-gutter-y);
}
因此,改为在行内使用 Col,并将按钮放在 Col 中。在 Col 上设置 d-flex
,这样按钮将水平放置,因为 flex-direction:row 是 flexbox 默认...
<Container className="App">
<Row>
<Col className="d-flex">
<Button
data-testid="brazejob-start-sync-btn"
variant="primary"
size="sm"
>
Start New Sync
</Button>
<Button
data-testid="brazejob-cancel-sync-btn"
variant="warning"
size="sm"
>
Cancel
</Button>
</Col>
</Row>
</Container>
要详细说明 Zim 的答案,请在每个按钮周围添加一个 Col 组件,或者删除 Row 组件并使用 flex 类。我不会两者都做,因为它有点多余。
<Container>
<Row>
<Col>
<Button />
</Col>
<Col>
<Button />
</Col>
</Row>
<Container>
<Container>
<div className="d-flex">
<Button />
<Button />
</div>
<Container>