javascript - 如何在不改变该元素 sibling 位置的情况下显示子 div?

标签 javascript html css

我有一个来自登录表单的 div html 标记,该表单内有一个显示错误的 div。错误 div 位于父 div 的顶部。当错误被触发时,我希望错误 div 位于表单 div 内,而表单不会下降,但事实并非如此。我已经在子 div 中使用了 position: absolute,但它位于父 div 的左上角。我也使用了 z-index,因此子 div 位于父 div 之上,但父 div 总是下降一个像素高度,该像素高度与子 div 的大小相同。让我向您展示示例:

<div id='formulario'  style={{height: 400px}}>
    {this.props.auth.error && <div id='erro'  style={{height:'15px'}}>Nao foi possivel fazer o login!</div>}
    <div id='login'>
    ...
   </div>
</div>

this.props.auth.error为真时,出现错误,表单id大小变为415px。出现错误时,如何保留 #formulatrio 大小为 400px 的 div 和 #login div?

最佳答案

增加top CSS属性将登录div下移到某个位置, 为可视化添加了背景。

class MaintainPosition extends React.Component {
  render() {
    return (
      <div
        id="formulario"
        style={{ height: "400px", backgroundColor: "lightblue" }}
      >
        {this.props.auth.error && (
          <div id="erro" style={{ height: "15px", color: "red" }}>
            Nao foi possivel fazer o login!
          </div>
        )}
        <div id="login">
            scroll down to toggle error
        </div>
      </div>
    );
  }
}

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      error: true
    };
  }
  render() {
    return (
      <div className="App">
        <MaintainPosition auth={{ error: this.state.error }} />
        <button onClick={() => this.setState({ error: !this.state.error })}>
          toggle error
        </button>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
#err {
  
}

#formulario {
  position: relative;
}

#login {
  position: absolute;
  width: 100%;
  top: 20px;
  background-color: gray;
}

#root {text-align: center}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>


	<div id="root"></div>

关于javascript - 如何在不改变该元素 sibling 位置的情况下显示子 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332608/

相关文章:

c# - 使标签助手查看水平而不是垂直

javascript - 如何将状态放入字符串中?

javascript - 带有 FrameSet 的 Tinymce 不工作?

javascript - 使用表格宽度 : 100% set in css 使表格内容适合宽度

html - CSS join form input, select and submit elements into a single box

html - 如果图像太大,请调整 div 大小

css - :hover not working 的不透明度过渡

javascript - 我想用 document.ready() 分配 div 的宽度但无法这样做?

javascript - 通过从下拉列表中选择来获取 iframe 中的特定网页内容

javascript - jQuery 无法从另一个按钮单击触发按钮单击