Gunakan transisi CSS3 dengan latar belakang gradien

215

Saya mencoba untuk transisi di hover dengan css di atas thumbnail sehingga saat di hover, gradien latar belakang memudar. Transisi tidak berfungsi, tetapi jika saya hanya mengubahnya ke rgba()nilai, itu berfungsi dengan baik. Apakah gradien tidak didukung? Saya mencoba menggunakan gambar juga, itu tidak akan mengubah gambar juga.

Saya tahu itu mungkin, seperti di posting lain seseorang melakukannya, tetapi saya tidak tahu persis bagaimana. Any help> Inilah beberapa CSS untuk bekerja dengan:

#container div a {
  -webkit-transition: background 0.2s linear;
  -moz-transition: background 0.2s linear;
  -o-transition: background 0.2s linear;
  transition: background 0.2s linear;
  position: absolute;
  width: 200px;
  height: 150px;
  border: 1px #000 solid;
  margin: 30px;
  z-index: 2
}

#container div a:hover {
  background: -webkit-gradient(radial, 100 75, 100, 100 75, 0, from(rgba(0, 0, 0, .7)), to(rgba(0, 0, 0, .4)))
}
alt
sumber
5
IE10 mendukung transisi gradien sekarang - itu adalah kejutan yang menyenangkan!
sirmdawg
@mkprogramming, woha, benar-benar terlihat bagus! Inilah demo (berfungsi dengan IE10 +). Semoga browser lain mendapatkan dukungan untuk hal keren ini juga.
Qtax
Situs ini memiliki solusi terbaik, bekerja untuk saya: nimbupani.com/some-css-transition-hacks.html
Tom Hagen

Jawaban:

173

Gradien belum mendukung transisi (walaupun spec saat ini mengatakan mereka harus mendukung seperti gradien ke menyukai transisi gradien melalui interpolasi.).

Jika Anda ingin efek fade-in dengan gradien latar belakang, Anda harus mengatur opacity pada elemen kontainer dan 'transisi` opacity.

(Ada beberapa rilis browser yang mendukung transisi pada gradien (misalnya IE10. Saya menguji transisi gradien pada tahun 2016 di IE dan mereka tampaknya bekerja pada saat itu, tetapi kode pengujian saya tidak lagi berfungsi.)

Pembaruan: Oktober 2018 Transisi gradien dengan sintaks baru yang tidak diawali [misalnya radial-gradient (...)] sekarang dikonfirmasi untuk berfungsi (lagi?) Di Microsoft Edge 17.17134. Saya tidak tahu kapan ini ditambahkan. Masih tidak berfungsi pada Firefox & Chrome / Windows 10 terbaru.

Michael Mullany
sumber
1
Selain itu, spec gradient belum selesai dan pengembangan spec gradient saat ini sudah jauh dari implementasi -webkit-gradient saat ini.
c-smile
1
Tetapi tepi webkit browser sekarang mendukung spesifikasi gradien warisan mozilla-baru serta sintaks webkit yang lebih lama. Yang membingungkan, mereka berdua -webkit diawali
Michael Mullany
3
Bahwa IE10 sepenuhnya mendukung transisi gradien.
Niet the Dark Absol
2
Bisakah Anda menambahkan demonstrasi menggunakan transisi dengan gradien sekarang? Sepertinya saya tidak bisa memahaminya berdasarkan jawaban Anda (dan tidak dapat menemukan berita lain tentang itu). Terakhir saya dengar, Anda tidak bisa bertransisi antara dua gambar latar belakang, yang merupakan gradien.
Mackenzie McClane
98

Salah satu solusi untuk mengubah posisi latar belakang untuk memberikan efek bahwa gradien berubah: http://sapphion.com/2011/10/css3-gradient-transition-with-background-position/

Transisi gradien CSS3 dengan posisi latar belakang

Meskipun Anda tidak dapat secara langsung menganimasi gradien menggunakan properti transisi CSS, dimungkinkan untuk menganimasi properti posisi latar belakang untuk mencapai animasi gradien sederhana:

Kode untuk ini sangat sederhana:

#DemoGradient{  
    background: -webkit-linear-gradient(#C7D3DC,#5B798E);  
    background: -moz-linear-gradient(#C7D3DC,#5B798E);  
    background: -o-linear-gradient(#C7D3DC,#5B798E);  
    background: linear-gradient(#C7D3DC,#5B798E);  
  
    -webkit-transition: background 1s ease-out;  
    -moz-transition: background 1s ease-out;  
    -o-transition: background 1s ease-out;  
    transition: background 1s ease-out;  
  
    background-size:1px 200px;  
    border-radius: 10px;  
    border: 1px solid #839DB0;  
    cursor:pointer;  
    width: 150px;  
    height: 100px;  
}  
#DemoGradient:Hover{  
    background-position:100px;  
}  
<div id="DemoGradient"></div>  

Alan
sumber
31

Solusinya adalah menggunakan latar belakang-posisi untuk meniru transisi gradien. Solusi ini digunakan di Twitter Bootstrap beberapa bulan yang lalu.

Memperbarui

http://codersblock.blogspot.fr/2013/12/gradient-animation-trick.html?showComment=1390287622614

Ini adalah contoh cepat:

Status tautan

 .btn {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 12px;
  font-weight: 300;
  position: relative;
  display: inline-block;
  text-decoration: none;
  color: #fff;
  padding: 20px 40px;
  background-image: -moz-linear-gradient(top, #50abdf, #1f78aa);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#50abdf), to(#1f78aa));
  background-image: -webkit-linear-gradient(top, #50abdf, #1f78aa);
  background-image: -o-linear-gradient(top, #50abdf, #1f78aa);
  background-image: linear-gradient(to bottom, #50abdf, #1f78aa);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff50abdf', endColorstr='#ff1f78aa', GradientType=0);
  background-repeat: repeat-y;
  background-size: 100% 90px;
  background-position: 0 -30px;
  -webkit-transition: all 0.2s linear;
     -moz-transition: all 0.2s linear;
       -o-transition: all 0.2s linear;
          transition: all 0.2s linear;
}

Arahkan kursor

.btn:hover {
   background-position: 0 0;
}
vinzcelavi
sumber
1
Jawaban Anda sesuai sebelum Anda mengeditnya. Sekarang bukan jawaban sama sekali, tetapi hanya tautan ke situs web Anda. Saya mengembalikan jawaban Anda ke aslinya.
Andrew Barber
OK tidak masalah. Hanya perlu melakukan perubahan kecil.
vinzcelavi
2
Dan inilah biola untuk itu: jsfiddle.net/Volker_E/RksTV Kuncinya adalah properti background-size, yang Anda tidak bisa di IE8. caniuse.com/#search=background-size Selain itu, ini adalah solusi yang bagus.
Volker E.
11

Untuk apa nilainya, inilah Sass mixin:

Pemakaian:

@include gradientAnimation(red, blue, .6s);

Mixin:

@mixin gradientAnimation( $start, $end, $transTime ){
    background-size: 100%;
    background-image: linear-gradient($start, $end);
    position: relative;
    z-index: 100;
    &:before {
        background-image: linear-gradient($end, $start);
        content: "";
        display: block;
        height: 100%;
        position: absolute;
        top: 0; left: 0;
        opacity: 0;
        width: 100%;
        z-index: -100;
        transition: opacity $transTime;
    }
    &:hover {
        &:before {
            opacity: 1;
        }
    }
}

Diambil dari pos yang luar biasa ini pada Medium dari Dave Lunny: https://medium.com/@dave_lunny/animating-css-gradients-using-only-css-d2fd7671e759

Ricardo Zea
sumber
1
Posting di Medium itu sangat membantu, terima kasih telah menambahkannya
Gendrith
9

Saya tahu itu pertanyaan lama tapi seseorang mabye menikmati cara solusi saya dalam CSS murni. Gradien memudar dari kiri ke kanan.

.contener{
  background-image:url('http://www.imgbase.info/images/safe-wallpapers/digital_art/3d_landscape/9655_3d_landscape.jpg');   width:300px;
  height:200px;
  background-size:cover;
  border:solid 2px black;
}
.ed {
    width: 0px;
    height: 200px;
    background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.75));
    position: relative;
    opacity:0;
    transition:width 20s, opacity 0.6s;
}

.contener:hover .ed{
    width: 300px;
    background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.75));
    position: relative;
    opacity:1;
    transition:width 0.4s, opacity 1.1s;
    transition-delay: width 2s;
    
    animation-name: gradient-fade;
    animation-duration: 1.1s;   
    -webkit-animation-name: gradient-fade; /* Chrome, Safari, Opera */
    -webkit-animation-duration: 1.1s; /* Chrome, Safari, Opera */
}




/* ANIMATION */
@-webkit-keyframes gradient-fade {
    0%   {background:linear-gradient(to right, rgba(0,0,255,0), rgba(255,0,0,0));}
    2%  {background:linear-gradient(to right, rgba(0,0,255,0.01875), rgba(255,0,0,0));}
    4%  {background:linear-gradient(to right, rgba(0,0,255,0.0375), rgba(255,0,0,0.0));}
    6%  {background:linear-gradient(to right, rgba(0,0,255,0.05625), rgba(255,0,0,0.0));}
    8% {background:linear-gradient(to right, rgba(0,0,255,0.075), rgba(255,0,0,0));}
    10%  {background:linear-gradient(to right, rgba(0,0,255,0.09375), rgba(255,0,0,0));}
    12%   {background:linear-gradient(to right, rgba(0,0,255,0.1125), rgba(255,0,0,0));}
    14%  {background:linear-gradient(to right, rgba(0,0,255,0.13125), rgba(255,0,0,0));}
    16%  {background:linear-gradient(to right, rgba(0,0,255,0.15), rgba(255,0,0,0));}
    18%  {background:linear-gradient(to right, rgba(0,0,255,0.16875), rgba(255,0,0,0));}
    20% {background:linear-gradient(to right, rgba(0,0,255,0.1875), rgba(255,0,0,0));}
    22%  {background:linear-gradient(to right, rgba(0,0,255,0.20625), rgba(255,0,0,0.01875));}
    24%   {background:linear-gradient(to right, rgba(0,0,255,0.225), rgba(255,0,0,0.0375));}
    26%  {background:linear-gradient(to right, rgba(0,0,255,0.24375), rgba(255,0,0,0.05625));}
    28%  {background:linear-gradient(to right, rgba(0,0,255,0.2625), rgba(255,0,0,0.075));}
    30%  {background:linear-gradient(to right, rgba(0,0,255,0.28125), rgba(255,0,0,0.09375));}
    32% {background:linear-gradient(to right, rgba(0,0,255,0.3), rgba(255,0,0,0.1125));}
    34%  {background:linear-gradient(to right, rgba(0,0,255,0.31875), rgba(255,0,0,0.13125));}
    36%   {background:linear-gradient(to right, rgba(0,0,255,0.3375), rgba(255,0,0,0.15));}
    38%  {background:linear-gradient(to right, rgba(0,0,255,0.35625), rgba(255,0,0,0.16875));}
    40%  {background:linear-gradient(to right, rgba(0,0,255,0.375), rgba(255,0,0,0.1875));}
    42%  {background:linear-gradient(to right, rgba(0,0,255,0.39375), rgba(255,0,0,0.20625));}
    44% {background:linear-gradient(to right, rgba(0,0,255,0.4125), rgba(255,0,0,0.225));}
    46%  {background:linear-gradient(to right, rgba(0,0,255,0.43125),rgba(255,0,0,0.24375));}
    48%   {background:linear-gradient(to right, rgba(0,0,255,0.45), rgba(255,0,0,0.2625));}
    50%  {background:linear-gradient(to right, rgba(0,0,255,0.46875), rgba(255,0,0,0.28125));}
    52%  {background:linear-gradient(to right, rgba(0,0,255,0.4875), rgba(255,0,0,0.3));}
    54%   {background:linear-gradient(to right, rgba(0,0,255,0.50625), rgba(255,0,0,0.31875));}
    56%  {background:linear-gradient(to right, rgba(0,0,255,0.525), rgba(255,0,0,0.3375));}
    58%  {background:linear-gradient(to right, rgba(0,0,255,0.54375), rgba(255,0,0,0.35625));}
    60%  {background:linear-gradient(to right, rgba(0,0,255,0.5625), rgba(255,0,0,0.375));}
    62% {background:linear-gradient(to right, rgba(0,0,255,0.58125), rgba(255,0,0,0.39375));}
    64%  {background:linear-gradient(to right,rgba(0,0,255,0.6), rgba(255,0,0,0.4125));}
    66%   {background:linear-gradient(to right, rgba(0,0,255,0.61875), rgba(255,0,0,0.43125));}
    68%  {background:linear-gradient(to right, rgba(0,0,255,0.6375), rgba(255,0,0,0.45));}
    70%  {background:linear-gradient(to right, rgba(0,0,255,0.65625), rgba(255,0,0,0.46875));}
    72%  {background:linear-gradient(to right, rgba(0,0,255,0.675), rgba(255,0,0,0.4875));}
    74% {background:linear-gradient(to right, rgba(0,0,255,0.69375), rgba(255,0,0,0.50625));}
    76%  {background:linear-gradient(to right, rgba(0,0,255,0.7125), rgba(255,0,0,0.525));}
    78%   {background:linear-gradient(to right, rgba(0,0,255,0.73125),,rgba(255,0,0,0.54375));}
    80%  {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.5625));}
    82%  {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.58125));}
    84%  {background:linear-gradient(to right, rgba(0,0,255,0.75),rgba(255,0,0,0.6));}
    86% {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.61875));}
    88%  {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.6375));}
    90%   {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.65625));}
    92%  {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.675));}
    94%  {background:linear-gradient(to right, rgba(0,0,255,0.75),rgba(255,0,0,0.69375));}
    96%  {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.7125));}
    98% {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.73125),);}
    100%  {background:linear-gradient(to right, rgba(0,0,255,0.75), rgba(255,0,0,0.75));}
}
<div class="contener" style="">
  <div class="ed"></div>
</div>

Skylin R
sumber
3

Berikut ini, tag jangkar memiliki anak dan cucu. Cucu memiliki gradien latar belakang yang jauh. Anak di latar belakang dekat transparan, tetapi memiliki gradien untuk transisi ke. Saat digerakkan, kegelapan anak ditransisikan dari 0 ke 1, selama periode 1 detik.

Inilah CSS-nya:

.bkgrndfar {
  position:absolute;
  top:0;
  left:0;
  z-index:-2;
  height:100%;
  width:100%;
  background:linear-gradient(#eee, #aaa);
}

.bkgrndnear {
  position:absolute;
  top:0;
  left:0;
  height:100%;
  width:100%;
  background:radial-gradient(at 50% 50%, blue 1%, aqua 100%);
  opacity:0;
  transition: opacity 1s;
}

a.menulnk {
  position:relative;
  text-decoration:none;
  color:#333;
  padding: 0 20px;
  text-align:center;
  line-height:27px;
  float:left;
}

a.menulnk:hover {
  color:#eee;
  text-decoration:underline;
}

/* This transitions child opacity on parent hover */
a.menulnk:hover .bkgrndnear {
  opacity:1;
}

Dan ini adalah HTML:

<a href="#" class="menulnk">Transgradient
<div class="bkgrndfar">
  <div class="bkgrndnear">
  </div>
</div>
</a>

Di atas hanya diuji dalam versi Chrome terbaru. Berikut adalah gambar-gambar di-hover sebelum di-hover, di-tengah-tengah, dan ditransisikan sepenuhnya:

Sebelum Di tengah jalan Setelah

PaulQ
sumber
3

Solusi parsial untuk transisi gradien adalah dengan menggunakan bayangan kotak inset - Anda dapat mentransisikan bayangan kotak itu sendiri, atau warna latar belakang - misalnya jika Anda membuat bayangan kotak inset dengan warna yang sama dengan latar belakang dan daripada menggunakan transisi pada warna latar belakang, itu menciptakan ilusi bahwa latar belakang polos berubah menjadi gradien radial

.button SPAN {
    padding: 10px 30px; 
    border: 1px solid ##009CC5;

    -moz-box-shadow: inset 0 0 20px 1px #00a7d1;
    -webkit-box-shadow: inset 0 0 20px 1px#00a7d1;
    box-shadow: inset 0 0 20px 1px #00a7d1; 

    background-color: #00a7d1;
    -webkit-transition: background-color 0.5s linear;
    -moz-transition: background-color 0.5s linear;
    -o-transition: background-color 0.5s linear;
    transition: background-color 0.5s linear;
}

.button SPAN:hover {
    background-color: #00c5f7; 
}
Frantisek Apakah Bouska
sumber
1
solusi cerdas, inset shadow dapat membuat gradient illusion dengan sempurna
Aziz
2

Menemukan hack yang bagus pada codepen yang mengubah opacityproperti tetapi mencapai yang memudar dari satu gradien ke yang lain dengan memanfaatkan elemen semu. Apa yang dia lakukan adalah dia mengatur :aftersehingga ketika Anda mengubah opacity dari elemen aktual, :afterelemen muncul sehingga tampak seolah-olah itu memudar. Kupikir itu akan berguna untuk dibagikan.

Codepen asli: http://codepen.io/sashtown/pen/DfdHh

.button {
  display: inline-block;
  margin-top: 10%;
  padding: 1em 2em;
  font-size: 2em;
  color: #fff;
  font-family: arial, sans-serif;
  text-decoration: none;
  border-radius: 0.3em;
  position: relative;
  background-color: #ccc;
  background-image: linear-gradient(to top, #6d8aa0, #8ba2b4);
  -webkit-backface-visibility: hidden;
  z-index: 1;
}
.button:after {
  position: absolute;
  content: '';
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 0.3em;
  background-image: linear-gradient(to top, #ca5f5e, #d68584);
  transition: opacity 0.5s ease-out;
  z-index: 2;
  opacity: 0;
}
.button:hover:after {
  opacity: 1;
}
.button span {
  position: relative;
  z-index: 3;
}
body {
  text-align: center;
  background: #ddd;
}
<a class="button" href="#"><span>BUTTON</span></a>

agustus
sumber
2

Berdasarkan kode css dalam pertanyaan Anda, saya telah mencoba kode sebagai berikut dan berfungsi untuk saya (jalankan snipet kode), dan silakan coba sendiri:

#container div a {
  display: inline-block;
  margin-top: 10%;
  padding: 1em 2em;
  font-size: 2em;
  color: #fff;
  font-family: arial, sans-serif;
  text-decoration: none;
  border-radius: 0.3em;
  position: relative;
  background-color: #ccc;
  background-image: linear-gradient(to top, #C0357E, #EE5840);
  -webkit-backface-visibility: hidden;
  z-index: 1;
}
     
#container div a:after {
  position: absolute;
  content: '';
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 0.3em;
  background-image: linear-gradient(to top, #6d8aa0, #343436);
  transition: opacity 0.5s ease-out;
  z-index: 2;
  opacity: 0;
}
    
#container div a:hover:after {
  opacity: 1;
}
#container div a span {
  position: relative;
  z-index: 3;
}
<div id="container"><div><a href="#"><span>Press Me</span></a></div></div>

Berdasarkan kode css dalam pertanyaan Anda, saya telah mencoba kode sebagai berikut dan berfungsi untuk saya, dan silakan coba sendiri:

    #container div a {
  display: inline-block;
  margin-top: 10%;
  padding: 1em 2em;
  font-size: 2em;
  color: #fff;
  font-family: arial, sans-serif;
  text-decoration: none;
  border-radius: 0.3em;
  position: relative;
  background-color: #ccc;
  background-image: linear-gradient(to top, #C0357E, #EE5840);
  -webkit-backface-visibility: hidden;
  z-index: 1;
}

#container div a:after {
  position: absolute;
  content: '';
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 0.3em;
  background-image: linear-gradient(to top, #6d8aa0, #343436);
  transition: opacity 0.5s ease-out;
  z-index: 2;
  opacity: 0;
}

#container div a:hover:after {
  opacity: 1;
}
#container div a span {
  position: relative;
  z-index: 3;
}

Apakah ini berhasil untuk Anda? Ubah warna berdasarkan kebutuhan Anda :)

Raymond
sumber
1

Coba gunakan: sebelum dan: sesudah (ie9 +)

#wrapper{
    width:400px;
    height:400px;
    margin:0 auto;
    border: 1px #000 solid;
    position:relative;}
#wrapper:after,
#wrapper:before{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    content:'';
    background: #1e5799;
    background: -moz-linear-gradient(top, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#1e5799), color-stop(50%,#2989d8), color-stop(51%,#207cca), color-stop(100%,#7db9e8));
    background: -webkit-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
    background: -o-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
    background: -ms-linear-gradient(top, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
    background: linear-gradient(to bottom, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%);
    opacity:1;
    z-index:-1;
    -webkit-transition: all 2s ease-out;
    -moz-transition: all 2s ease-out;
    -ms-transition: all 2s ease-out;
    -o-transition: all 2s ease-out;
    transition: all 2s ease-out;
}
#wrapper:after{
    opacity:0;
    background: #87e0fd;
    background: -moz-linear-gradient(top, #87e0fd 0%, #53cbf1 40%, #05abe0 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#87e0fd), color-stop(40%,#53cbf1), color-stop(100%,#05abe0));
    background: -webkit-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%);
    background: -o-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%);
    background: -ms-linear-gradient(top, #87e0fd 0%,#53cbf1 40%,#05abe0 100%);
    background: linear-gradient(to bottom, #87e0fd 0%,#53cbf1 40%,#05abe0 100%);
}
#wrapper:hover:before{opacity:0;}
#wrapper:hover:after{opacity:1;}
Segera
sumber
1

Seperti yang dinyatakan. Gradien saat ini tidak didukung dengan Transisi CSS. Tapi Anda bisa mengatasinya dalam beberapa kasus dengan mengatur salah satu warna untuk transparan, sehingga warna latar-belakang dari beberapa elemen pembungkus lainnya bersinar, dan alih-alih memindahkannya.

Jens
sumber
1

Saya menggunakan ini di tempat kerja :) IE6 + https://gist.github.com/GrzegorzPerko/7183390

Jangan lupa <element class="ahover"><span>Text</span></a>jika Anda menggunakan elemen teks.

.ahover {
    display: block;
    /** text-indent: -999em; ** if u use only only img **/
    position: relative;
}
.ahover:after {
    content: "";
    height: 100%;
    left: 0;
    opacity: 0;
    position: absolute;
    top: 0;
    transition: all 0.5s ease 0s;
    width: 100%;
    z-index: 1;
}
.ahover:hover:after {
    opacity: 1;
}
.ahover span {
    display: block;
    position: relative;
    z-index: 2;
}
Davton
sumber
0

Tidak ada salahnya memposting pandangan lain karena masih belum ada cara resmi untuk melakukan ini. Menulis plugin jQuery ringan yang dengannya Anda dapat menentukan gradien radial latar belakang dan kecepatan transisi. Penggunaan dasar ini kemudian akan memudar, dioptimalkan dengan requestAnimationFrame (sangat halus):

$('#element').gradientFade({

    duration: 2000,
    from: '(20,20,20,1)',
    to: '(120,120,120,0)'
});

http://codepen.io/Shikkediel/pen/xbRaZz?editors=001

Menjaga latar belakang asli dan semua properti tetap utuh. Juga memiliki pelacakan sorot sebagai pengaturan:

http://codepen.io/Shikkediel/pen/VYRZZY?editors=001

Shikkediel
sumber
0

Saya ingin memiliki tampilan div seperti bola 3D dan transisi melalui warna. Saya menemukan bahwa warna latar belakang gradien tidak transisi (belum). Saya menempatkan latar belakang gradien radial di depan elemen (menggunakan z-index) dengan latar belakang solid transisi.

/* overlay */
z-index : 1;
background : radial-gradient( ellipse at 25% 25%, rgba( 255, 255, 255, 0 ) 0%, rgba( 0, 0, 0, 1 ) 100% );

lalu di div.ballbawahnya:

transition : all 1s cubic-bezier(0.25, 0.46, 0.45, 0.94);

kemudian mengubah warna latar belakang div.balldan voila!

https://codepen.io/keldon/pen/dzPxZP

rushkeldon
sumber