首页 > 解决方案 > 垂直居中单选按钮 - React 和 Bootstrap

问题描述

我有一个容器,左侧有一个单选按钮,右侧有其他按钮。出于某种原因,我无法将单选按钮与右侧的按钮对齐。请告诉我解决此问题的方法。

这是我到目前为止所拥有的:

在此处输入图像描述

代码:

import React, { Component } from "react";
import { Box, Flex } from "@rebass/grid";
import cx from "classnames";
import styled from "styled-components/macro";
import {
  Button,
  ButtonGroup,
  Classes,
  Colors,
  Divider,
  Icon,
  Radio,
  RadioGroup
} from "@blueprintjs/core";
import { IconNames } from "@blueprintjs/icons";
import "normalize.css/normalize.css";
import "@blueprintjs/core/lib/css/blueprint.css";
import "@blueprintjs/icons/lib/css/blueprint-icons.css";
import "@blueprintjs/select/lib/css/blueprint-select.css";
import "bootstrap/dist/css/bootstrap.css";

const ScenarioIcon = styled(Button)`
  transition: all 0.2s ease;
}
`;

class App extends Component {
  constructor() {
    super();
    this.state = {
      name: "React"
    };
  }

  render() {
    return (
      <Flex>
        <Box width={"100%"}>
          <div
            style={{
              padding: "20px",
              backgroundColor: "red"
            }}
            className={cx("bp3-card bp3-interactive")}
          >
            <Flex alignItems="center" style={{ backgroundColor: "green" }}>
              <RadioGroup onChange={() => {}} selectedValue={1}>
                <Radio
                  style={{ backgroundColor: "yellow" }}
                  className={cx(Classes.TEXT_LARGE)}
                  label={"Sample"}
                  value={1}
                />
              </RadioGroup>
              <Box flex="auto" />
              <ButtonGroup>
                <ScenarioIcon
                  className="utility-button"
                  icon={<Icon icon={IconNames.EDIT} color={Colors.WHITE} />}
                  minimal={true}
                  title="Edit"
                />
                <ScenarioIcon
                  className="utility-button"
                  icon={
                    <Icon icon={IconNames.DUPLICATE} color={Colors.WHITE} />
                  }
                  minimal={true}
                  title="Copy"
                />
                <ScenarioIcon
                  className="utility-button"
                  icon={
                    <Icon
                      icon={IconNames.DOCUMENT_SHARE}
                      color={Colors.WHITE}
                    />
                  }
                  minimal={true}
                  title={"Archive"}
                />
                <ScenarioIcon
                  className="utility-button"
                  icon={
                    <Icon
                      icon={IconNames.TRASH}
                      color={Colors.RED1}
                      color={Colors.WHITE}
                    />
                  }
                  minimal={true}
                  title="Delete"
                />
                <Divider />
              </ButtonGroup>
              <Icon
                icon={IconNames.CHEVRON_RIGHT}
                color={Colors.WHITE}
                className="align-self-center"
                iconSize={20}
              />
            </Flex>
          </div>
        </Box>
      </Flex>
    );
  }
}

export default App;

CodeSandbox 链接:链接

PS:我也愿意使用引导程序进行对齐。

标签: cssreactjstwitter-bootstrapbootstrap-4flexbox

解决方案


据我所知,Radio 有一些底部边距。如果您在“收音机”上使用以下样式,则效果很好。

style={{ backgroundColor: "yellow", marginBottom: "0" }}

推荐阅读