CSS ile Gri Tonlamalı Görüntü ve fareyle üzerine gelindiğinde yeniden renklendirme?


87

Renkli (ve bir bağlantı olacak) bir simge alıp kullanıcı faresini simgenin üzerine getirene kadar (daha sonra görüntüyü renklendireceği) gri tonlamalı hale getirmek istiyorum.

Bunu yapmak mümkün mü ve bir şekilde IE & Firefox destekli mi?


2
Neredeyse yineleniyor ... stackoverflow.com/q/609273/670377
Tom Sarduy

Tersini yapsaydın daha ilginç bir etki olmaz mıydı? fare imlecinin karanlık bir dünyaya renk getiren sihirli bir değnek gibi olmasına izin verin?
X10D

Yanıtlar:


245

Bunu başarmanın çok sayıda yöntemi vardır, bunları aşağıda birkaç örnekle detaylandıracağım.

Saf CSS (yalnızca bir renkli görüntü kullanarak)

img.grayscale {
  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
  filter: gray; /* IE6-9 */
  -webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}

img.grayscale:hover {
  filter: none;
  -webkit-filter: grayscale(0%);
}

Sen bulabilirsiniz Burada bu teknikle ilgili bir makale .

Saf CSS (gri tonlamalı ve renkli görüntüler kullanarak)

Bu yaklaşım, bir görüntünün iki kopyasını gerektirir: biri gri tonlamalı, diğeri tam renkli. CSS ön :hoverseçiciyi kullanarak, ikisi arasında geçiş yapmak için öğenizin arka planını güncelleyebilirsiniz:

#yourimage { 
    background: url(../grayscale-image.png);
}
#yourImage:hover { 
    background: url(../color-image.png};
}

Bu hover(), aynı şekilde jQuery'nin işlevi gibi Javascript tabanlı bir fareyle üzerine gelme efekti kullanılarak da gerçekleştirilebilir .

Bir Üçüncü Taraf Kitaplığı düşünün

Desaturate kütüphane kolayca belirli bir elementin veya görüntünün bir gri tonlama sürümü ve tam renkli sürümü arasında geçiş sağlayan genel bir kütüphanedir.


Söz konusu resimlerin başka bir web sitesine bağlanması gerekiyorsa, resimler arka plan olarak ayarlanmışsa bu nasıl yapılabilir?
Meta

1
Aynı şekilde çalışacaktır, 1. bölüm altındaki gösteriye göz atın. Başka sorularınız varsa yardımcı olmaktan memnuniyet duyarım.
Rion Williams

1
Beyler, bunun safaride işe yaramadığını fark eden oldu mu? Bu sorunu yeni kontrol ettim ve buldum, çözmenin herhangi bir yolu var mı?
Gajen

13

Burada cevaplandı: Bir resmi HTML / CSS'de gri tonlamaya dönüştürün

Ağrı veya görüntü işleme kitaplığına benzeyen iki görüntü kullanmanıza bile gerek yok, bunu çapraz tarayıcı desteği (mevcut sürümler) ile yapabilir ve sadece CSS kullanabilirsiniz. Bu, eski tarayıcılardaki renkli sürümlere geri dönen aşamalı bir geliştirme yaklaşımıdır:

img {
  filter: url(filters.svg#grayscale);
  /* Firefox 3.5+ */
  filter: gray;
  /* IE6-9 */
  -webkit-filter: grayscale(1);
  /* Google Chrome & Safari 6+ */
}
img:hover {
  filter: none;
  -webkit-filter: none;
}

ve filters.svg dosyası şöyle:

<svg xmlns="http://www.w3.org/2000/svg">
  <filter id="grayscale">
    <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0" />
  </filter>
</svg>

6

Http://www.diagnomics.com/ adresinde aşağıdaki kodu kullanıyorum

Büyütme efekti (ölçek) ile siyah beyazdan renkliye yumuşak geçiş

    img.color_flip {
      filter: url(filters.svg#grayscale); /* Firefox 3.5+ */
      filter: gray; /* IE5+ */
      -webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */
      -webkit-transition: all .5s ease-in-out;
    }

    img.color_flip:hover {
      filter: none;
      -webkit-filter: grayscale(0);
      -webkit-transform: scale(1.1);
    }

Webkit tarayıcılarında harika çalışıyor! Kodunuz benim için Firefox tarayıcısında çalışmıyor ama yine de, bunun bir SVG dosyasıyla bir ilgisi olduğunu düşünüyorum ve bu kemanla bir bit eşlem kullanıyorum jsfiddle.net/coolwebs/num04rya/10 Yine de garip bir şey - geçiş Safari'deki etki, görüntüyü rollover sırasında 'sarsıyor' yapıyor ....
Ryan Coolwebs


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.