html - верстка кнопки

Доброй ночи, Господа. Возникла проблема с версткой кнопочки, которая должна быть оформлена как ссылка. Собственно после оборачивания контента ссылкой, все прыгнуло вверх и сломалось. Так же слышал про правило, что нельзя блок в ссылку заворачивать, но у меня почти весь контент из блоков. Прошу помощи!

введите сюда описание изображения

.buttons {
  box-shadow: 8px 14px 24px 0px #0a0e34;
  width: 312px;
  height: 70px;
  background-color: #5e42b0;
  border-radius: 32.0px;
  padding-left: 42px;
  display: flex;
  align-items: center;
}

.buttons__wrapper {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 210px;
  height: 40px;
}

.button {
  background-image: url(../images/apple.png);
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  width: 33px;
  height: 37px;
}

.buttons__inner {
  display: flex;
  flex-direction: column;
}

.buttons__text {
  font-size: 14px;
  line-height: 16px;
  font-weight: 200;
  letter-spacing: 0.05em;
  color: #ffffff;
  text-transform: uppercase;
  opacity: 0.7;
}

.buttons__subtext {
  font-size: 14px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #ffffff;
}

.buttons__link {
  display: block;
  height: 100%;
}
<div class="buttons">
  <a href="#" class="buttons__link">
    <div class="buttons__wrapper">
      <div class="buttons__icon button"></div>
      <div class="buttons__inner">
        <p class="buttons__text">download on the</p>
        <p class="buttons__subtext">app store</p>
      </div>
    </div>
  </a>
</div>


Ответы (2 шт):

Автор решения: Михаил Косюк

Нет никакого смысла в том что бы назначать ссылке блочный дисплей и высоту, это и ломает вам верстку, просто уберите весь стиль класса .buttons_link. Так же добавьте в css вот этот фрагмент. Это уберет стандартное подчеркивание ссылки, а так же выставит размеры всех элементов конкретно так как вы задаете их в css.

    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    a {
       text-decoration: none;          
    }

А для того что бы ссылка работала на всю площадь кнопки в случае вашей верстки нужно вынести тэг a над тэгом .buttons, таким образом ссылка будет работать на всю площадь.

   <a href="#" class="buttons__link">
      <div class="buttons">
                    <div class="buttons__wrapper">
                        <div class="buttons__icon button"></div>
                        <div class="buttons__inner">
                            <p class="buttons__text">download on the</p>
                            <p class="buttons__subtext">app store</p>
                        </div>
                    </div>
      </div>
    </a>
→ Ссылка
Автор решения: Aleksandr

.buttons {
  box-shadow: 8px 14px 24px 0px #0a0e34;
  width: 312px;
  height: 70px;
  background-color: #5e42b0;
  border-radius: 32.0px;
  padding-left: 42px;
  display: flex;
  align-items: center;
}

.buttons__wrapper {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 210px;
  height: 40px;
}

.button {
  background-image: url(../images/apple.png);
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  width: 33px;
  height: 37px;
}

.buttons__inner {
  display: flex;
  flex-direction: column;
}

.buttons__text {
  font-size: 14px;
  line-height: 16px;
  font-weight: 200;
  letter-spacing: 0.05em;
  color: #ffffff;
  text-transform: uppercase;
  opacity: 0.7;
}

.buttons__subtext {
  font-size: 14px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: #ffffff;
}

.buttons__link {
  display: block;
  height: 100%;
}
<div>
  <a href="#" class="buttons">
    <div class="buttons__wrapper">
      <div class="buttons__icon button"></div>
      <div class="buttons__inner">
        <p class="buttons__text">download on the</p>
        <p class="buttons__subtext">app store</p>
      </div>
    </div>
  </a>
</div>

→ Ссылка