【问题标题】:Can't get buttons to wrap to new line instead of overflowing container无法让按钮换行而不是溢出容器
【发布时间】:2019-01-28 04:52:16
【问题描述】:

我无法让 JSFiddle 与 React 和其他一些依赖项一起正常工作,所以我希望这个 Github 存储库的链接足以证明这个问题:

https://github.com/ishraqiyun77/button-issues/

基本上,一组按钮被渲染,它们应该被自动加宽以填充空白并占据整行。这适用于 Chrome、Edge、Safari 和 Firefox。它看起来像这样:

这在 IE 中不会发生。我已经搞砸了几个小时,但没有取得太大进展:

这是代码,虽然可以克隆我上面发布的回购:

// component.jsx
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import {
    Button,
    Col,
    Modal,
    ModalBody,
    ModalHeader,
    Row
} from 'reactstrap';

import styles from '../assets/scss/app.scss';

class TestPrint extends Component {
    constructor(props) {
        super(props);
        this.state = {
            modal: false,
        }
        this.toggle = this.toggle.bind(this);
    }

    toggle() {
        this.setState({
            modal: !this.state.modal
        })
    }

    renderContent() {
        let buttons = [];
        for (let i = 1; i < 50; i++) {
            buttons.push(
                <Col key={i}>
                    <Button
                        key={i}
                        className='cuts-btn'
                    >
                        {i} - Test
                    </Button>
                </Col>
            );
        };
        return buttons;
    }

    render() {
        return (
            <div>
                <Button
                    style={
                        {
                            position: 'fixed',
                            top: '50%',
                            left: '50%',
                            transform: 'translate(-50%, -50%)'
                        }
                    }
                    onClick={this.toggle}
                >
                    Open Modal for Buttons
                </Button>
                <Modal
                    size='lg'
                    isOpen={this.state.modal}
                    toggle={this.toggle}
                    className='results-modal'
                >
                    <ModalHeader toggle={this.toggle}>
                        Button Issues
                    </ModalHeader>
                    <ModalBody>
                        <div className='results-bq-cuts'>
                            <Row>
                                {this.renderContent()}
                            </Row>
                        </div>
                    </ModalBody>
                </Modal>
            </div>
        )
    }
}

ReactDOM.render(<TestPrint />, document.getElementById('app'));

.results-modal {
    max-width: 1200px;

    .modal-content {

        .modal-body {
            margin-left: 13px;
            margin-right: 13px;

            .results-bq-cuts {
                width: 100%;

                .col {
                    padding:2px;
                }

                .cuts-btn {
                    font-size: 11px;
                    padding: 3px;
                    width: 100%;
                    box-shadow: none;
                }

                // .col {
                //     padding: 2px;
                //     display: table-cell;
                //     flex-basis: 100%;
                //     flex: 1;
                // }

                // .cuts-btn {
                //     font-size: 11px;
                //     padding: 3px;
                //     width: 100%;
                //     box-shadow: none;
                // }


            }
        }
    }
}

我将所有&lt;Button&gt; 包裹在&lt;Col&gt; 中,因为这应该是通过增加按钮的大小来填充空白的内容。

感谢您的帮助!

【问题讨论】:

    标签: css reactjs twitter-bootstrap button bootstrap-4


    【解决方案1】:

    IE11 不喜欢计算弹性项目的宽度。如果您将flex-basis: calc( 100% / 24 ); 添加到 .col 它可以工作:) 显然使用您想要的任何宽度,但我给出的内容复制了一行上的 21 个框。但本质上 flex-basis 需要一个定义的宽度才能工作。 ​

    或者为每个元素添加一个额外的类(例如 col-1 )这也可以实现相同的效果。

    【讨论】:

    • 嘿,他们确实工作得更好!使用flex-basis: calc( 100% / 24); 的结果更接近预期。现在的问题是它没有根据按钮的内容来加宽按钮。我将把它作为一个完全不同的问题来处理。
    猜你喜欢
    • 2011-05-18
    • 2018-09-16
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多