【问题标题】:How can I prevent elements breaking to a new line because of margin?如何防止元素因为边距而换行?
【发布时间】:2020-10-06 05:10:08
【问题描述】:

我试图将所有元素排成一行。我想让这个动态,所以我使用的宽度是百分比。发生的事情是一些元素正在打破一个新的行。我知道这是因为边距而发生的,并且宽度在计算中不包括边距。我能做什么?

这是我的代码:

import React, { useState, useEffect } from 'react';

const randomIntFromInterval = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1) + min);
}

const Dummy2 = () => {
    const [arr, setArr] = useState([]);
    const [length, setLength] = useState(10);

    useEffect(() => {
        generateArray();
    }, [length]);

    const generateArray = () => {
        const temp = [];
        for(let i = 0; i < length; i++) {
            temp.push(randomIntFromInterval(7, 107));
        }
        setArr(temp);
    }

    const handleLength = (e) => {
        setLength(e.target.value);
    }

    const maxVal = Math.max(...arr);

    return (
        <div>
            <div className="array-container" style={{height: '50%'}}>
                {arr.map((value, idx) => (
                    <div className="array-element"
                         key={idx}
                         style={{height: `${(value * 100 / maxVal).toFixed()}%`,
                                 width: `${100 / length}%`,
                                 margin: '0 1px',
                                 display: 'inline-block',
                                 backgroundColor: 'black'}}
                    ></div>))
                }
            </div>
            <div>
                <button onClick={() => generateArray()}>New array</button>
            </div>
            <div className="slider-container">
                1
                <input type="range" 
                       min="1" 
                       max="100" 
                       onChange={(e) => handleLength(e)} 
                       className="slider" 
                       id="myRange" 
                />
                100
            </div>
            {length}
        </div>
    );
}

export default Dummy2;

【问题讨论】:

    标签: javascript css reactjs margin


    【解决方案1】:

    您是否尝试过使用calc() CSS 函数来计算宽度?它允许组合 px 和百分比,因此您可以从元素的宽度中减去边距。

    【讨论】:

    • 谢谢,我用width: calc(${100 / arr.length}% - 2px)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 2015-03-23
    • 1970-01-01
    • 2021-03-14
    • 2013-08-22
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多