Если вы НЕ МОЖЕТЕ изменить структуру HTML, тогда у вас фиксированная ширина 500 пикселей, поэтому, конечно, вам понадобятся некоторые неприятные вычисления для ее размещения.
Если бы вы использовали проценты, было бы проще
Кроме того, у вас есть отступы (которые отличаются от ввода для кнопки)
Итак, во-первых, left
кнопки должно быть calc(500px + 1.4rem);
, где 500px
- ширина ввода, а 1.4rem
- от left/right padding
до 0.7rem
, которое имеет input
. Теперь кнопка расположена сразу после ввода. Теперь переместите его влево на 100% его ширины.
Во-вторых, нижняя часть должна быть bottom: 4.2rem
из-за form
заполнения top/bottom
из 4rem
и затем 0.2rem
, потому что заполнение ввода составляет 0.7rem
, а заполнение кнопки - 0.6rem
, поэтому 0.1 *2
меньше (по оси Y).
form {
padding: 4rem 0;
position: relative;
}
input[type=text] {
background: #fff;
width: 500px;
padding: 0.7rem;
border: 1px solid #cbcbce;
border-radius: 50px;
color: #3a3d4b;
}
button {
position: absolute;
background: #6fc754;
padding: 0.6rem 1rem;
border: none;
color: #fff;
border-radius: 25px;
left: calc(500px + 1.4rem);
bottom: 4.2rem;
transform: translateX(-100%)
}
<form>
<input type="text" placeholder="Enter text">
<button>Send Invite</button>
</form>