Эти три значения, установленные на вашем mainButton CSS, должны решить вашу проблему:
width: 40%;
left:50%;
margin-left:-20%;
Его ключ, чтобы отметить, что расчет здесь. Свойство left центрирует элемент на 50% страницы, а отрицательное поле left смещает позицию элементов в соответствии с ее шириной. Поскольку его ширина составляет 40%, отрицательная разница должна составлять половину от этого, то есть 20%. Имея это в виду, вы можете отрегулировать ширину и смещение, если ваш дизайн изменится, еще лучше, используя переменные css и calc (), что означает, что вы можете установить только ширину, и поле будет рассчитываться само.
Как пример:
left:50%;
--buttonWidth: 40%;
width: var(--buttonWidth);
margin-left:calc( var(--buttonWidth) / -2);
.container{
max-width: 80%;
margin: auto;
overflow: hidden;
background-color: #fff000;
}
.box-1{
background-image: url();
background-position: center;
background-size: cover;
background-repeat: no-repeat;
border: solid #000 1px;
margin: 10px;
padding: 10px;
width: 30%;
height: 260px;
transition: transform .5s;
overflow: hidden;
position: relative;
}
#mainButton{
position: absolute;
bottom: 0;
padding: 7px 5px;
width: 40%;
left:50%;
margin-left:-20%;
margin-bottom: 15px !important;
display: block;
overflow: hidden;
color: #fff;
background-color: #000;
border: 2px solid #fff;
font-family: inherit;
opacity: 0;
transition: .5s;
}
.box-1:hover #mainButton{
opacity: 1;
color: #fff;
background-color: #000;
border: 2px solid #fff;
font-family: inherit;
cursor: pointer;
}
<div class="container">
<div class="box-1">
<a href="http://www.google.co.uk">
<button type="button" id="mainButton"> Go To Website</button>
</a>
</div>
</div>