Centering an Element correctly w/ :hover while it's expanding width

Issue

I would like to center an input perfectly in the middle when you focus or hover on it.

Therefore I want it to expand the width in the middle instead of the right or something that makes it looks like it.

The code:

.container {
   margin-top: 10px;
   margin-left: auto;
   margin-right: auto;
   width: 142px;
}

.textbox { 
   border: 1px solid #848484; 
   outline: 0; 
   height: 25px; 
   width: 125px; 
   padding: 2px 20px 2px 20px;
  }
  
input { 
   text-align: center;
   width: 100px;
   transition: ease-in-out, width .35s ease-in-out;
   margin-bottom: 3px;
   margin-top: 3px;
}

input:hover, input:focus { 
   width: 150px;
   margin-bottom: 3px;
   margin-top: 3px;
}
<div class="container">
   <input type="text" class="textbox" placeholder="Some text in here!">
</div>

Solution

The problem you are experiencing is caused by the fixed-width value of .container, which is less than the width you are applying to your input on :hover.

Eliminating the fixed width and applying a property of text-align: center (to center the input) results in the hover effect functioning as expected

.container {
	margin-top: 50px;
	margin-left: auto;
	margin-right: auto;
	text-align: center;
}

.textbox { 
   border: 1px solid #848484; 
   -moz-border-radius-topleft: 30px;
   -webkit-border-top-left-radius: 30px;
   border-top-left-radius: 30px;
   -moz-border-radius-topright: 30px;
   -webkit-border-top-right-radius: 30px;
   border-top-right-radius: 30px;
   outline: 0; 
   height: 25px; 
   width: 125px; 
   padding: 2px 20px 2px 20px;
  }
  
input { 
   text-align: center;
   width: 100px;
   transition: ease-in-out, width .35s ease-in-out;
   margin-bottom: 3px;
   margin-top: 3px;
}

input:focus { 
   width: 150px;
   margin-bottom: 3px;
   margin-top: 3px;
}

input:hover { 
   width: 150px;
   margin-bottom: 3px;
   margin-top: 3px;
}

/* Ignore this */

p {
  margin-top: 30px;
  color: #a6a6a6;
  text-align: center;
}
<!-- Thanks for helping :p !-->

<div class="container">
   <input type="text" class="textbox" placeholder="Some text in here!">
</div>

<!-- Ignore !-->
<p> So as you can see the width will expand to the right, how would I be able to center it while it's moving and keeping it centered?</p>

Answered By – Robert

Answer Checked By – Mildred Charles (AngularFixing Admin)

Leave a Reply

Your email address will not be published.