Я использую ReactJS и CSS и пытаюсь создать форму с несколькими строками и кнопкой.
Я не могу понять CSS, которая заставит его работать. Я пытался сделать это с помощью flexbox, но это было слишком для управления входами и кнопкой.
Я считаю, что сетка - это решение, но мне пока не удалось найти правильный макет ...
Кстати, форма на иврите, поэтому я также пытаюсь ввести go справа налево. Если иврит странный для вас, попробуйте посмотреть на него как на символы:)
Я добавляю изображения с деталями и соответствующими фрагментами кода.
Заранее спасибо!
import React from "react";
import FormInput from "../FormInput/FormInput";
import {
ButtonContainer,
DetailsContainer,
StaticDetailsContainer,
FormContainer
} from "../Details/Details-styles";
import staticDetails from "../../assets/details-static.png";
class Details extends React.Component {
state = {
firstName: "",
lastName: "",
email: "",
phone: ""
};
handleSubmit = event => {
event.preventDefault();
console.log("handling submit");
const { email, phone, firstName, lastName } = this.state;
//submit to server
};
handleChange = event => {
const { value, name } = event.target;
this.setState({ [name]: value });
};
render() {
return (
<DetailsContainer>
<StaticDetailsContainer src={staticDetails} />
<FormContainer>
<form onSubmit={this.handleSubmit}>
<FormInput
name="lastName"
type={"text"}
placeholder="שם משפחה"
value={this.state.lastName}
handleChange={this.handleChange}
/>
<FormInput
name="firstName"
type="text"
placeholder={"שם פרטי"}
value={this.state.firstName}
handleChange={this.handleChange}
/>
<FormInput
name="phone"
type="phone"
placeholder={"טלפון"}
value={this.state.phone}
handleChange={this.handleChange}
/>
<FormInput
name="email"
type="email"
placeholder={'דוא"ל'}
value={this.state.email}
handleChange={this.handleChange}
/>
<ButtonContainer type="submit">תאם לי שיעור</ButtonContainer>
</form>
</FormContainer>
</DetailsContainer>
);
}
}
export default Details;
import styled from "styled-components";
export const DetailsContainer = styled.div`
display: flex;
justify-content: center;
flex-direction: column;
width: 50%;
@media screen and (max-width: 800px) {
width: 100%;
}
`;
export const StaticDetailsContainer = styled.img`
width: 100%;
`;
export const FormContainer = styled.div`
display: flex;
`;
export const ButtonContainer = styled.button`
width: 25%;
height: 5vh;
background-color: #2eaaa7;
margin: auto;
color: white;
font-family: arial, sans-serif;
font-size: 26px;
border: none;
@media screen and (max-width: 800px) {
font-size: 15px;
overflow: hidden;
}
`;
Вот как это должно быть: