Sakin Adam

Web Yazılım Günlüğü

Css Çakışması Sorunu

Web tasarımla uğraşan bir çok kişi, css dosyalarının çakışması sorunuyla karşılaşılmıştır. Aynı tag’a stil atanmış css dosyalarından dolayı sorun yaşanır. Bu büyük sorunun çok basit bir çözümü var aslında. “Scoped” metodu. Stillerin farklı olmasını istediğiniz divin içerisinde “style type=”text/css” scoped” tagları arasına css kodlarını yazıyorsunuz ya da harici css dosyanızı çağırıyorsunuz. Burda dikkat edilmesi gereken nokta ise şu : bu method ile cağırdığınız stiller içerisinde olduğu tag’da geçerli oluyor. Bu divin dışarısında ise diğer methodlarla yazılan/çağırılan cssler geçerli olacaktır. Örnek kodu aşağıda ekliyorum. Bu örnek kod Html5‘i destekleyen tarayıcılar için. Ardından tüm tarayıcılar için olan örneği de ekleyeceğim.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Css Çakışması Sorunu</title>
<style type="text/css">
  p { color:yellow; }
</style>
</head>

<body>
<div>
<p>Sarı</p>
</div>
<div>
<style type="text/css" scoped>
  p { color:blue; }
</style>
<p>Mavi</p>
</div>
</body>
</html>

Html5 tarayıcılarda sorunumuzu çözdük ama ya desteklemeyenler için. Geliştiriciler bunun için de bir çözüm bulmuşlar. “jQuery Scoped CSS”; jquery üzerine geliştirilmiş javascript kütüphanesi bu sorunu çözüyor. Kütüphaneyi bu adresten indirebilirsiniz. İndirdiğiniz dosyalarda bir örnek mevcut ancak ben yine de örnek kodu aşağıda paylaşıyorum.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Css Çakışması Sorunu</title>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style type="text/css">
  p { color:yellow; }
</style>
</head>

<body>
<div>
<p>Sarı</p>
</div>
<div>
<style type="text/css" scoped>
  p { color:blue; }
</style>
<p>Mavi</p>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="jquery.scoped.js"></script>
</body>
</html>

jQuery UI Nedir?

jQuery UI(User Interface-Kullanıcı Arayüzü) jQuery üzerine kurulmuş bir javascript kütüphanesidir. İsminden de anlaşılacağı gibi tasarım ağırlıklı bir kütüphanedir. Html elemanlarına efekt ve işlesellik katmak için kullanılır. En çok kullanılan fonksiyonları : sürükle-bırak, yeniden ölçülendirme, takvim, progressbar, slider, menü, açılan pencereler ve daha fazlasıdır. Statik ve durgun html tasarımlarından sıyrılıp, sayfalara hareket getirmek ve canlandırmak için birebir kütüphanedir. jQuery’de olduğu gibi jquery-ui’de de az kod – çok iş mantığı vardır.

jQuery UI kütüphanesine ve ilgili dökümanlara bu adresten ulaşabilirsiniz.

jQuery Nedir?

Yazımın hemen başında şunu belirtmeliyim. jQuery bir değil, bir javascript kütüphanesidir. Bir çok insana jQuery dediğiniz de size hemen bunu söylerler. Ben bu tarz şeylere pek takılmam ancak insanlar haklı. Ama bu tarz insanlara ben de biraz sinir oluyorum açıkcası.

jQuery 2006 yılında John Resig tarafından geliştirilmiş ve geliştiricilerin kullanımına sunulmuştur. Günümüzde (2013) en çok kullanılan javascript kütüphanesi ünvanına sahiptir. En büyük avantajlarından bir tanesi, hatta bana göre en önemlisi de budur. Çünkü bir dili/kütüphaneyi ne kadar çok kişi kullanıyorsa, onunla ilgili o kadar çok döküman vardır ve karşılan sorunlarla ilgli de o kadar çok döküman/çözüm vardır.

jQeury kütüphanesini resmi sitesinden indirerek kullanabilirsiniz. Yeni aynı sitedeki dökümantasyona da ulaşabilirsiniz. jQuery gerçekten muhteşem bir teknoloji. Ajax teknolojisinde insanlar gerçekten hayrete düşmüşlerdi ancak jQueryden sonra bizi hayrete düşürecek şey ne olacak çok merak ediyorum. Bu kütüphane sayesinde, farklı animasyonlar ve efektler kullanılabiliyor. Sliderlar genellikle jQuery kullanmakta. Animate özelliği sayesinde, elementleri hareket ettirebilir, tonlarıyla oynayabilirsiniz.

Ağırlıklı olarak tasarım odaklı olduğu söylenir. Ancak seçicileri,post,attributes gibi bir çok kütüphanesi ile web yazılım tarafıyla olan işlemlerinizde de büyük kolaylık sağlıyorsunuz. Örneğin post işleminde, ajax büyük bir kolaylık ve yalınlık getirmişti, ama jQuery bu işlemi bir adım öteye taşımış.

Daha burada yazamadığım bir çok özelliği ile jQuery gerçekten fark yaratmış bir kütüphane. Basit bir örnek vermek gerekirse, daha düne kadar javascript kütüphaneleri yazılırken, artık günümüzde jQuery kütüphanesi için kütüphaneler yazılmakta. Jquery UI buna en büyük örnektir.

Geleneği bozmuyorum ve aşağıda bir jQuery kodunun nasıl olması gerektiği ile ilgili örnek kod paylaşıyorum. Burada dikkat edilecek iki nokta bulunuyor. Birincisi jQuery kütüphanesini çağırmış olmanız, ikincisi ise kodları ‘//jquery kodları burada’ yazan kısma yazmanız. Diğer kalan js kodlarını, jQuery açılış ve kapanış tagları olarak görebilirsiniz.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(document).ready(function(){
	//jquery kodları burada
});
</script>
</head>

<body>
</body>
</html>

Html5 Nedir?

Html5, html işaretleme dilinin son ve güncel sürümüdür(2013). Bu sürümün en büyük özelliği; video, audio ve canvas etiketlerinin eklenmesidir. Bu etiketler sayesinde video ve ses oynatmak için kullanılan flash uygulamalarının hakimiyeti kırılmış oldu. Steve Jobs’ın Flash uygulamalarının aşırı batarya tüketimi gerçekleştirdiği gerekçesiyle Iphone ve Ipadlerde desteklenmeyeceğini açıklaması, ardından da Adobe firmasının artık mobil cihazlar için flash player’ı desteklemeyeceklerini açıklaması Html5’in yaygınlaşmasına en büyük katkıyı yaptı. Canvas etiketinin javascript yardımıyla flash animasyonlarının yerini alacak kapasiteye sahip olsa da henüz bu hakimiyeti yıkabilmiş değil. Adobe Edge Animate CC’nin geliştirilmesi ve yaygınlaşması ile bu hakimiyetin de yıkılacağını düşünmekteyim.

Şu an tarayıcılar Html5 desteği sağlasalar da bu oran %100 değil ve bazı küçük farklılılar gösterebiliyor. Örneğin audio etiketinde Chrome mp3 oynatabilirken, Firefox ogg formatını desteklemekte. Umarız zamanla farklılıklar en aza indirgenir ya da tamamen ortadan kalkar.

Html5 ile gelen bir özellik de, javascript’den az da olsa rol çaldığı. Benzer bir durumun css için de olduğunu okumuştum.

Html5 sayesinde bir çok uygulama için artık harici uygulamalar kullanma zorunluluğu ortadan kalktı. Tasarım kısmından pek bahsetmedik ancak html5 ile gelen yeni etiketler sayesinde tasarım yönüyle de daha güçlü olduğunu söylemek gerek.