Genel Tanım
CSS anlık geçişleri bünyesinde barındırıyordu. Birçok uygulamamızda bir bağlantının üzerine geldiğinde bağlantının rengi değiştiriyor, düğmemizin ardalan rengini değiştiriyorduk.
CSS3 ile birlikte ani geçişlere artı olarak yeni merhale merhale geçişler eklenmiştir. Geçişler yavaş yavaş olduğu gibi uzun uzadıya geçişlerde mevcuttur. Durumu daha iyi anlayabilmek için yukarıda bahsettiğimiz gibi bir fare imlecinin bağlantı üzerine geldiğinde renk değişmesini anlık değil merhale merhale değiştirelim.
Renk geçişi belli bir zaman aralığına yayılacaktır ve iki renk arasındaki geçişte ara renkler görünecektir. Bu geçişe bazı efektlerde ekleyebiliyoruz. Geçişin merhale merhale olması göze daha hoş gelecektir.
Bu işleri daha önce flash veya javascript yapıyorken artık CSS3 yardımı ile yapabilecek olmamız çok güzel bir gelişme. Basit tek satır kod(farklı tarayıcılar için yazılan önekler zamanla teke inecektir.) ile bu işi yapmak ayrı bir kolaylık tabi.
Transtion Özellikleri
Geçiş efektlerini uygulamak için aşağıdaki özelliklerden yararlanacağız.
- transition-property
- transition-duration
- transition-delay
- transition-timing-function
- transition
Şimdi bu özellikleri tek tek inceleyelim.
Geçiş Efekti Hangi Özellik İle Yapılacağını Belirleme(transition-property)
Uygulanan geçiş efektinin elemanın hangi özelliği üzerinden yapılacağını belirlemek için transition-property özelliğini kullanırız.
Yapısı: transition-property: none | all | [ <IDENT> ] [ ‘,’ <IDENT>]*
Aldığı Değerler: none | all | [ <IDENT> ] [ ‘,’ <IDENT> ]*
Başlangıç değeri: all
Uygulanabilen elementler: tüm elementler ve :before ve :after elementlerine
Kalıtsallık: Yok
Örneğin color değeri geçiş uygulanacak elemanın başlangıç ve son rengi arasında bir geçiş olacağını gösterir.
all değeri tüm tanımlarda geçiş yapılacağı anlamındadır.
Geçiş Efekti Uzunluğunu Belirleme (transition-duration)
Geçiş efektlerini uygularken verdiğimiz efektin ne kadar süre ile devam edeceğini ayarlayabiliyoruz. Bu ayarlamayı transition-duration özelliği yapıyoruz.
Yapısı : transition-duration: <zaman> [, <zaman>]*
Aldığı Değerler : <zaman> [, <zaman>]*
Başlangıç değeri: 0
Uygulanabilen elementler: tüm elementler ve :before ve :after elementlerine
Kalıtsallık: Yok
0 değeri geçişin hemen olacağı anlamına gelir. Eksi değerler 0 olarak yorumlanır.
transition-delay
Uygulanan geçiş efektinin ne kadar zaman sonra başlayacağını belirler. Belirlenen zamana kadar animasyonu durdurur ve sonra animasyon başlar.
Animasyonumuz 0.5 saniye sonra başlayacaktır.
transition-timing-function
Oluşturacağımız geçişlere daha estetik geçişler sağlamak için kullanılan fonksiyonlardır. CSS3 ile birlikte gelen transition efekti başlangıç tanımı doğrusal bir geçiştir. Biz bu özelliğe ease, ease-in, ease-out, ease-in-out ve cubic-bezier değerlerini tanımlayabiliyoruz. cubic-bezier tanımı ise geçişleri kendimize göre tanımlama imkanı veriyor. Kendi zaman çizgimizi hazırlamak(cubic-bezier) biraz zor olsa da internet üzerindeki bazı araçlar yardımı ile bu işte kolaylaştırılmıştır.
Daha önce sizlerle paylaştığım bu araçlar
- http://matthewlein.com/ceaser/
- http://easings.net/
- jeremyckahn.github.com/stylie/
ile transition-timing-function özelliğini kullanmak bir zevk haline geliyor.
transition kısayolu
Yukarıda tek tek ayrı ayrı her özelliği tanımlayabildiğimiz gibi teek bir tannımlama ile bunları kısa bir şekilde tanımlamak da mümkün.
Yukarıdaki son örnekte geçiş tanımlarımız 4 adet idi. Biz burada bunları tek bir tanımda toplayalım.
Görüldüğü gibi kodumuz daha kısa bir hal aldı. bundan sonra bu şekilde kullanmayı tercih edeceğim.
Çoklu Geçiş Kullanımı
Yukarıda yaptığımız gibi tek bir özellik üzerinden geçiş efekti uygulayabildiğimiz gibi virgül ile ayırmak kaydı ile birden fazla geçiş efekti de uygulayabiliriz.
Son örneğimizde arama alanına odaklandığımızda genişliğini ve ardalan rengini geçiş efekti ile değiştirdi.
Geçiş Efektini Tetiklemek
Geçiş efektlerini tetiklemek için genelde :hover sözde sınıfı kullanılsa da :active, :target, :focus gibi sözde sınıfları da kullanılabilir.
Ayrıca javascript ile DOM’a yapılan müdahaleler de buna eklenebilir.
Javascript ilede bu bağlantıya tetikle diye bir sınıf tanımlayalım.
Javascript ile Geçişin Bittiğinin Kontrolü
Javascript ile geçiş efektinin bittiğini kontrol etmek çok basit.
Geçiş efekti tamamlandığında transitionend foksiyonunu tetkilyecektir.
Tarayıcı Uyumu
CSS3 ile gelen bir çok özellik gibi geçiş efekti özelliklerinin de önek ve internet explorer sorunları mevcuttur.
Tarayıcı Desteği
1.0+ (-webkit) | 10+ | 4.0+ (-moz) |
Mobil Tarayıcılar
2.1+ (-webkit) | 3.2+ (-webkit) | 36+ |
İnternet Explorer 10 ile gelen geçiş efekti desteğini öneksiz eklemiştir. Şu an aktif olarak kullanılan ie8 ve ie9 sürümlerinde bu özelliğin olmaması mevcut sitelerimizde bu özellikleri kullanmamız önündeki en büyük engeldir.
Kaynaklar
- http://www.w3.org/TR/css3-transitions/
- http://www.alistapart.com/articles/understanding-css3-transitions/
- developer.mozilla.org/en-US/CSS/CSS_transitions
- http://24ways.org/2009/going-nuts-with-css-transitions
- http://www.impressivewebs.com/css3-transitions-without-hover/
- http://www.css3.info/preview/css3-transitions/
- http://samuli.hakoniemi.net/css3-transitions-are-we-there-yet/
- http://css3.bradshawenterprises.com/transitions/
- http://www.joelambert.co.uk/morf/ (araç)
- http://cubic-bezier.com/ (araç)
- http://www.roblaplaca.com/examples/bezierBuilder/ (araç)
- http://www.netzgesta.de/dev/cubic-bezier-timing-function.html (araç)
- http://www.kirupa.com/html5/looking_at_css3_transitions.htm
- http://bavotasan.com/2011/a-simple-fade-with-css3/
- http://tympanus.net/codrops/2011/10/19/blur-menu-with-css3-transitions/ (örnek)
- http://caniuse.com/css-transitions (tarayıcı desteği)
- http://www.opera.com/docs/specs/presto23/css/transitions/
- adobe.com/devnet/html5/articles/using-css3-transitions-a-comprehensive-guide.html
- http://smashinghub.com/css3-transitions-and-animations.htm (örnekler)
- http://msdn.microsoft.com/en-us/library/ie/hh673535(v=vs.85).aspx
- tv.adobe.com/watch/learn-dreamweaver-cs6/using-the-css-transitions-panel/?go=13279
- http://www.phpkodlari.com/css-dersleri/css3-transitions-ozelligi/
- blogs.msdn.com/b/ie/archive/2011/11/21/adding-personality-with-css3-transitions-and-animations.aspx
- http://www.inserthtml.com/2012/01/definitive-guide-css-animations-transitions/#transitions
- http://vimeo.com/49879139 (video)
- http://ricostacruz.com/jquery.transit/ (jquery ile tüm tarayıcılar için)
- http://www.netmagazine.com/tutorials/more-efficient-css3-transitions
- http://proto.io/freebies/onoff/ (örnek)
- http://geebart.com/blog/easy-css3-transitions-tutorial
- http://webdesigncrowd.com/animated-navigation-css3-transitions-transforms/
- http://davidwalsh.name/css-transitions
- http://css3.bradshawenterprises.com/transitions/
- http://www.webdesignerdepot.com/2012/12/how-to-use-the-css3-transition-property/
- problogdesign.com/coding/get-started-with-css3-transitions-today
- http://code.tutsplus.com/tutorials/css-fundamentals-css3-transitions–pre-10922