@Norum

Как сделать так, чтобы svg изображение при наведении меняло цвет на градиент?

Как сделать так, чтобы свг меняло цвет на градиент? У меня получилось добиться смены цвета с помощью псевдо-элемента, но вот как сделать смену именно на градиент... не знаю

<section class="download">
		<div class="wrapper">
			<div class="content">
				<h3>Download Giant App Now</h3>
				<div class="download-blocks">

					<a href="#" class="download-block">
						<div class="img">
							<i class="fab fa-apple foundation"></i>
							<i class="fab fa-apple overlay"></i>
						</div>
						<div class="text">
							<span class="title">Download</span>
							<span class="little">Download from app store</span>
						</div>
					</a>

					<a href="#" class="download-block">
						<div class="img">
							<img src="img/android-logo.png" alt="android">
						</div>
						<div class="text">
							<span class="title">Download</span>
							<span class="little">Download from app store</span>
						</div>
					</a>

					<a href="#" class="download-block">
						<div class="img">
							<i class="fab fa-windows"></i>
						</div>
						<div class="text">
							<span class="title">Download</span>
							<span class="little">Download from app store</span>
						</div>
					</a>
					
				</div>
				
			</div>
		</div>
		
	</section>

.download {
  background: linear-gradient(90deg, #fd712c 0%, #f21780 100%);
  text-align: center;
}
.download h3 {
  font-weight: 400;
  color: #ffff;
  margin-bottom: 80px !important;
}
.download-blocks {
  display: flex;
  justify-content: space-between;
}
.download-block {
  width: calc(33.33333333%);
  margin-right: 30px;
  display: flex;
  background-color: #ffffff;
  box-shadow: 0px 10px 30px 0px rgba(0, 0, 0, 0.07);
  border-radius: 3px;
}
.download-block .img {
  position: relative;
  background-color: #f7fafc;
  padding: 30px;
  border-radius: 3px;
}
.download-block .img img,
.download-block .img i.foundation {
  width: 56px;
  height: 56px;
  font-size: 56px;
  color: #777777;
}
.download-block .img i.overlay {
  position: absolute;
  left: 26%;
  width: 56px;
  height: 56px;
  font-size: 56px;
  color: blue;
  opacity: 0;
  transition: opacity 0.3s ease;
}
.download-block .text {
  display: flex;
  flex-direction: column;
  text-align: left;
  padding: 30px;
}
.download-block .text .title {
  font-size: 30px;
  font-weight: 600;
  color: #222222;
}
.download-block .text .little {
  color: #777777;
  font-size: 14px;
  font-weight: 300;
}
.download-block:hover i.overlay {
  opacity: 1;
}
.download-block:last-child {
  margin-right: 0 !important;
}


Весь код https://jsfiddle.net/c47jhmd3/

Сайт tempesv0.beget.tech

60b4199cbaa34365163216.jpeg
  • Вопрос задан
  • 352 просмотра
Решения вопроса 2
@lagudal
похожий вопрос
Поищите, еще раньше были еще такие вопросы.
Суть в 2 словах - если нужен плавный градиент по hover - то либо js, либо - слой поверх и по hover менять прозрачность. (opacity) + transition.
Ответ написан
Stalker_RED
@Stalker_RED
Добавляете слой с градиентом, как-то так.
Ставите ему прозрачность 100%, или сдвигаете его за пределы вьюпорта, смотря какой эффект появления вы хотите.
При наведении меняете прозрачность или сдвигаете этот слой.

.gradient-layer {
  opacity: 1;
  transition: opacity 2s ease-in-out;
}

svg:hover .gradient-layer {
  opacity: 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы