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?
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?
Yanıtlar:
Bunu başarmanın çok sayıda yöntemi vardır, bunları aşağıda birkaç örnekle detaylandıracağım.
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 .
Bu yaklaşım, bir görüntünün iki kopyasını gerektirir: biri gri tonlamalı, diğeri tam renkli. CSS ön :hover
seç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 .
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.
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>
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);
}
İçinde hem renkli hem de monokrom versiyonu olan bir hareketli grafik kullanabilirsiniz .
İşte bir demo. IE7'de bile çalışıyor:
http://james.padolsey.com/demos/grayscale/
ve
http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/