Значок не отображается при наведении с помощью sass

Я использую scss и пытаюсь скрыть значок, и когда я навожу кнопку, я хочу, чтобы значок отображался. Я также хочу анимировать его, поэтому я не могу использовать display:none, поскольку я считаю, что вы не можете анимировать это. Поэтому я попытался использовать непрозрачность и видимость.

У меня 2 проблемы. Во-первых, текст в кнопке не центрирован, потому что значок находится в невидимом состоянии, но когда вы переходите к инструментам разработчика, вы все равно можете его там увидеть. Во-вторых, иконка не появляется при наведении.

.btn {
  text-transform: uppercase;
  text-decoration: none;
  padding: 1.5rem 4rem;
  display: inline-block;
  font-size: 1.6rem;
  box-shadow: 0 1rem 2rem rgba($color-black, .2);
  &--primary {
    background-color: $color-primary;
    color: $color-white;
    transition: all .2s;
    &__icon {
      visibility: hidden;
      opacity: 0;
    }
    &:hover {
      transform: translateY(-2px);
      &__icon {
        visibility: visible;
        opacity: 1;
      }
    }
  }
}
<a href = "#" class = "btn btn--primary">Discover More <i class = "btn--primary__icon icon-basic-clockwise"></i></a>

можешь сделать скрипку на jsfiddle.net

Chandra Shekhar 06.03.2019 09:13
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
1
167
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, проблема в том, что ваш значок отображается в строке с нулевым содержанием. Я думаю, вам может понадобиться изменить значок на display: inline-block; и придать ему некоторые размеры. Вы захотите установить размеры на 0px, когда значок не должен быть виден.

Я преобразовал ваш код из SCSS в CSS и заменил переменные $ фактическими цветами CSS, чтобы сделать рабочий фрагмент...

.btn {
  text-transform: uppercase;
  text-decoration: none;
  padding: 1.5rem 4rem;
  display: inline-block;
  font-size: 1.6rem;
  box-shadow: 0 1rem 2rem rgba(0,0,0, .2);
  width: 240px;
}
.btn--primary {
  background-color: red;
  color: white;
  transition: all .2s;
}
.btn--primary__icon {
  display: inline-block;
  width: 0px;
  height: 0px;
  visibility: hidden;
  opacity: 0;
}
.btn--primary:hover {
  transform: translateY(-2px);
}
.btn--primary:hover .btn--primary__icon {
  width: 20px;
  height: 20px;
  background-color: blue;
  visibility: visible;
  opacity: 1;
}
<a href = "#" class = "btn btn--primary">
  Discover More 
  <i class = "btn--primary__icon icon-basic-clockwise"></i>
</a>

Спасибо, а есть ли способ добавить значок без увеличения кнопки? Он тянется вправо

user10980228 06.03.2019 10:10

Возможно фиксированная ширина?

user10980228 06.03.2019 10:25

Другие вопросы по теме