在React-Bootstrap的Form.Label中添加边距或填充

时间:2020-02-29 00:12:33

标签: css reactjs react-bootstrap

我正在尝试设置React-Bootstrap表单的样式,以使一些复选框列表具有适当突出的标题。我希望文本“前端”,“后端”,“数据库”等具有大约10-20像素的填充。

现在的样子:

How it looks now

这不是简单的HTML / CSS,但是我想做的事情等同于在标题“前端框架,前端,后端,数据库”中简单添加“ padding:10px”。

我尝试做的第一件事是使用className="formLabel"添加CSS样式表,.formLabel的样式为:padding: 10px。但这实际上并没有像常规CSS那样推挤其他元素。相反,我得到这个:

(添加了边框,可以更轻松地了解发生了什么情况) It doesn't work!

我也尝试过以this thread的样式添加style={{ paddingBottom: "10px" }}。我还阅读了React Bootstrap Forms docs page,但没有提到如何设置<Form.Label>元素的样式。

因此,假设您想复制我在这些图像中所做的操作,请参见下面的代码:

// this code should nicely generate a "Homepage" component to use in React
import React, { Component } from "react";


import { Form } from "react-bootstrap";

import "./home.css";

class Homepage extends Component {
    state = {
        checked: [
            { vue: false, category: "framework" },
            { angular: false, category: "framework" },
            { react: false, category: "framework" },
            { html: false, category: "frontend" },
            { css: false, category: "frontend" },
            { javascript: false, category: "frontend" },
            { python: false, category: "backend" },
            { SQLite: false, category: "database" }
        ]
    };


    render() {
        return (
               // will generate the "framework" and "frontend" checkboxes
               <Form>
                    <Form.Label className="formLabel">
                        Frontend Frameworks
                    </Form.Label>
                    {this.state.checked.map((obj, index) => {
                        let box = null;
                        if (obj.category === "framework") {
                            box = (
                                <Form.Check
                                    inline
                                    label={Object.keys(obj)[0]} // returns values like "vue"
                                    type={"checkbox"}
                                    id={index}
                                />
                            );
                        }
                        return box;
                    })}
                </Form>
                <Form>
                    <Form.Label className="formLabel">Frontend</Form.Label>
                    {this.state.checked.map((obj, index) => {
                        let box = null;
                        if (obj.category === "frontend") {
                            box = (
                                <Form.Check
                                    inline
                                    label={Object.keys(obj)[0]} // returns values like "vue", "react"
                                    type={"checkbox"}
                                    id={index}
                                />
                            );
                        }
                        return box;
                    })}
                </Form>
        )
    }

export default Homepage;

// home.css

.formLabel {
    font-size: 18px;
    margin-bottom: 15px;
}

.testLabel {
    font-size: 18px;
    padding: 10px;
    border: 1px solid black;
}

1 个答案:

答案 0 :(得分:1)

尝试在样式表中将“显示”添加到“ formLabel”。 应该是这样的:

.formLabel {
    font-size: 18px;
    margin-bottom: 15px;
    padding: 20px;
    display: inline-block;
}