Кнопка не центрируется в CSS - PullRequest
0 голосов
/ 09 января 2019

Я создал контейнер div, и внутри контейнера есть блок div. Внутри коробки у меня есть кнопка, которая должна быть центрирована внизу коробки.

Я обыскал все вокруг, и прежде чем кто-либо сделает «дубликат», я перепробовал все, что они сказали. Например, добавив «display: block;» в мой код и т. д. и все же он не центрирует кнопку в середине. Я возился со всем, что мог придумать, чтобы попытаться центрировать кнопку, но ничего не работает.

.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;
  margin: 0 auto;
  width: 40%;
  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>

Ответы [ 4 ]

0 голосов
/ 11 января 2019

Просто добавьте «left: 0; right: 0;» в # mainButton

.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;
  margin: 0 auto;
  width: 40%;
  margin-bottom: 15px !important;
  display: block;
  overflow: hidden;
  color: #fff;
  background-color: #000;
  border: 2px solid #fff;
  font-family: inherit;
  opacity: 0;
  transition: .5s;
  left:0px;
  right:0px;
}
.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>
0 голосов
/ 09 января 2019

Эти три значения, установленные на вашем 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>
0 голосов
/ 11 января 2019

Попробуйте с этим кодом, я думаю, это поможет вам в решении проблемы.

.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;
  padding: 5px;
  width: 60%;
  margin-bottom: 15px !important;
  display: block;
  overflow: hidden;
  color: #fff;
  background-color: #000;
  border: 2px solid #fff;
  font-family: inherit;
  opacity: 0;
  transition: .5s;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}

.box-1:hover #mainButton {
  opacity: 1;
  color: #fff;
  background-color: #000;
  border: 2px solid #fff;
  font-family: inherit;
  cursor: pointer;
}
0 голосов
/ 09 января 2019

Это потому, что родитель вашей кнопки является тегом ссылки. Ваша кнопка не является прямым потомком flexbox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...