【问题标题】:Css grid - html form - I fail to direct my element in a vertical flowCss 网格 - html 表单 - 我无法在垂直流中引导我的元素
【发布时间】:2018-10-05 15:34:19
【问题描述】:

我无法用我的 flexbox 创建垂直方向。

Demo here

尽管我专门创建了一个网格来垂直引导它们。我无法弄清楚它为什么会失败。 我已经尝试使用方向属性使用 flexbox 基础,但它失败了。

这里是我的 react.js sn-p:

import React, { Component } from "react";
import ReactDOM from "react-dom";
import style from "./styles.css";

class App extends Component {
  state = {
    name: "",
    email: "",
    message: ""
  };

  onChange = e => {
    this.setState({ [e.target.name]: e.target.value });
  };

  sendForm = e => {
    e.preventDefault();
    console.log(
      "form sent: ",
      this.state.name,
      this.state.email,
      this.state.message
    );
  };

  render() {
    return (
      <div>
        <form className={style.mailform_container} onSubmit={this.sendForm}>
          <div>
            <input
              className={style.mailform_name}
              onChange={this.onChange}
              name="name"
              type="text"
              value={this.state.name}
              placeholder="name"
            />
            <input
              className={style.mailform_email}
              onChange={this.onChange}
              name="email"
              type="text"
              value={this.state.email}
              placeholder="email"
            />
            <textarea
              className={style.mailform_message}
              onChange={this.onChange}
              name="message"
              type="text"
              value={this.state.message}
              placeholder="message"
            >
              Enter text here...
            </textarea>
          </div>

          <button type="submit" className={style.mailform_confirm}>
            Envoyer
          </button>
        </form>
      </div>
    );
  }
}

const root = document.getElementById("root");
ReactDOM.render(<App />, root);

这里是我的 style.css sn-p:

.mailform_container {
  display: grid;
  grid-template-areas:
    "name"
    "email"
    "message"
    "confirm";
}

.mailform_name {
  grid-area: name;
}

.mailform_email {
  grid-area: email;
}

.mailform_message {
  grid-area: message;
}

.mailform_confirm {
  grid-area: confirm;
}

.nmailform_confirm:hover {
  cursor: pointer;
}

.nmailform_confirm:active {
  background-color: rgb(200, 198, 196);
}

任何提示都会很棒, 谢谢

【问题讨论】:

  • 您的任何样式都没有应用于演示中的元素,而让 div 包装所有元素可能是您问题的根源。
  • 阅读 Stevens 的回答,这就是在您的演示中为我解决的问题。

标签: css reactjs css-grid


【解决方案1】:

使用网格时,您希望被网格放置的所有元素都需要是网格的直接子级。在您的情况下,您有一个 &lt;div&gt; 元素作为包装所有其他表单元素的第一个子元素,因此表单元素不是网格的一部分。如果您删除 &lt;div&gt;,您的示例将起作用。

【讨论】:

  • 这就是解决方案,我刚刚在他的演示中进行了测试,并且成功了。
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多