Solution 1 :

You can use the CSS positions to achieve this (https://developer.mozilla.org/en-US/docs/Web/CSS/position)

return (
  <div className="container">
        <div className="login">
          <img src={pacifyr} alt="logo"/>
          <div className="position-relative">
            <img className="position-absolute" src={Envelope} alt="username"/>
            <input placeholder='username' />
          </div>
          <div className="position-relative">
            <img className="position-absolute" src={Lock} alt="username"/>
            <input placeholder='password' />
          </div>
        </div>
  </div>
)
<style>
.position-relative{
  position: relative;
}

.position-relative input{
  padding: 10px 10px 10px 30px;
}

.position-absolute{
  position: absolute;
  top: 50%;
  left: 10px;
  transform: translateY(-50%);
}
</style>

Solution 2 :

* {
  box-sizing: border-box;
}

.row {
  margin: 10px 0;
  width: 100%;
  max-width: 300px;
  border: 1px solid #e0e0e0;
  display: flex;
  align-items: center;
  border-radius: 6px;
}

.row .icon {
  padding: 7px 10px;
  border-right: 1px solid #e0e0e0;
}

.row .icon img {
  width: 26px;
  height: auto;
  display: block;
}

.row input {
  border: none;
  outline: none;
  padding-left: 20px;
}
<div class="row">
  <div class="icon">
    <img src="https://www.iconninja.com/files/618/860/906/internet-google-message-gmail-computer-email-icon.svg" alt="">
  </div>
  <input type="text" placeholder="Email/Username">
</div>
<div class="row">
  <div class="icon">
    <img src="https://www.iconninja.com/files/618/860/906/internet-google-message-gmail-computer-email-icon.svg" alt="">
  </div>
  <input type="text" placeholder="Password">
</div>

Solution 3 :

You can use flexbox for layout

<div className="container">
    <div className="login">
    <div className="row">
        <img alt="logo"/>
    </div>
    <div className="row">
        <img className="icon" alt="username"/>
        <input placeholder="username" className="field"/>
    </div>
    <div className="row">
        <img className="icon" alt="password"/>
        <input placeholder="password" className="field"/>
    </div>
    </div>
</div>

And flexbox style need to be like below

.login {
    width: 300px;
    height: 300px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.row {
    margin: 10px;
    display: flex;
    flex-direction: row;
    height: 30px;
    justify-content: center;
}

.icon {
    width: 50px;
}

.field {
    flex: 1;
}

Problem :

I need to place mail icon and password icon inside the text box, how to align items properly

need like this

i got this

my js code is:

return (
        <div  className="container">
           <div className="login">
           <img src={pacifyr} alt="logo"/>
           <img src={Envelope} alt="username"/>
           <input placeholder='username' />
           <img src={Lock} alt="username"/>
           <input placeholder='password' />
           </div>
      </div>
    );

Comments

Comment posted by kyun

If your purpose is only to make like that, you can use

Comment posted by Tanner Dolby

If you want to center and align content inside a container. I would recommend you use CSS flex box. Either create inline-style inside react or import an

Comment posted by Sabrilogesh K

its partially ok but the line between icon and input box is missing

By