【问题标题】:Why are the Margins within react not working correctly?为什么反应中的边距不能正常工作?
【发布时间】:2019-12-15 16:30:04
【问题描述】:

我正在尝试了解 React 中边距的一些功能,并且仍然是 React 的新手。目前,我有一个包含一些 JSX/HTML 的 render 方法。我正在尝试使用 CSS 来更好地设置样式,但对代码有一些疑问。

  1. 在 CSS 中,我使用 ButtonsMargin: auto; 将容器中的元素居中 NavBar 但它不起作用。但是当我在.NavBar 中有text-align 时,它可以工作。这是为什么?我认为它可以在 Buttons 中工作,因为它将相对于其父容器居中 -> NavBar

2.在.NavBar 中,例如当我有高度20% 时,除非我以像素为单位进行硬编码,否则它不会改变。由于 NavBar 是主 App.js 的子级,所以它不会相对于 App 文件起作用吗?

App.js:

import React from 'react';
import {NavBar} from './NavBar/NavBar';

function App() {

  return (
    <div className="AppMain">
      <NavBar/>
    </div>
  );
}

export default App;

App.css:

.AppMain{
    height: 100%;
}

NavBar.js:

import React from 'react';
import './NavBar.css';

export class NavBar extends React.Component{

    render(){
        return(
            <div className="NavBar">
                <button className="Buttons">About</button>
                <button className="Buttons">Contact</button>
                <button className="Buttons">Info</button>
                <button className="Buttons">Home</button>
            </div>
        )
    }
}

NavBar.css:

.NavBar{
    background-color: black;
    height: 20%;
}

.NavBar .Buttons{
    margin-right: 20px;
    margin-left: 20px;
    text-align: center;
    margin:auto;
}

【问题讨论】:

    标签: html css reactjs jsx


    【解决方案1】:

    margin: auto; 仅在指定宽度且元素为块级时才有效。看看this answer to understandmargin: auto; 居中的实际工作原理。

    高度不起作用,因为您已将 AppMain 的高度设置为 100%,该高度将在所有内容呈现到 DOM 后计算。您基本上是在尝试计算尚未计算的 100% 的 20%。尝试显式设置 AppMain 的高度,看看会发生什么。 Relevant answer link.

    【讨论】:

    • 哦,所以对于 App.js,它没有特定的高度,因此例如获得 100% 的 null 的东西,它不会做任何事情。听说使用 vh 不安全。有没有更好的方法,还是只是基于意见?
    • 为什么不在rempx 中指定高度?如果您打开控制台并检查某些网站如何定义导航高度,您就会知道。 Stackoverflow 将其显式设置为 50px。 css-tricks 为每个媒体查询定义了它。
    【解决方案2】:

    Button 的默认显示是 inline-block。如果你想使用margin: auto,你只需要将显示值改为block

    【讨论】:

      【解决方案3】:

      您需要添加一个&lt;div&gt; 将所有按钮包装在一起,然后将margin: auto; 放在div 上,然后您可以从按钮中删除margin:auto;

      希望对你有帮助

      【讨论】:

      • 我有NavBar
      • 但我假设您希望 NavBar 占据整个宽度,对吗?
      • 宽度是可以的,但即使使用%而不是像素来表示高度也不起作用。
      • 百分比高度仅适用于具有定义高度的元素(父高度可以以 px 或 % 定义,只要它的父具有定义的高度)除了最外面的元素通常是 @987654328 @ 元素可以在 % 中定义其高度,因为它的父级是具有定义高度的窗口。因此,就您而言,我通常将html, body,.App 等设置为 100% 高度,然后根据需要使用内部元素。
      • 对不起,长评论,希望一切都有意义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2019-01-04
      • 2020-09-03
      • 2016-10-10
      • 2016-10-24
      相关资源
      最近更新 更多