Bir resminize kenar çizgisi tanımı yapıp daha sonrada köşelerini ovalleştirmek istediğinizde köşelerdeki kenar çizgilerinde sorun yaşıyoruz.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>border-radius</title>
<style>
	img{ border:2px solid #999; -webkit-border-radius:8px; -moz-border-radius:8px; border-radius:8px;}
</style>
</head>
<body>
	<img src="gudi.jpg" width="75" height="75" />
</body>
</html>

Örneği görmek için tıklayınız.

Kırmızı ile işaretlediğim yere dikkat ederseniz sorunlu gözüken kısımalar var. Bu sorun tarayıcıların bir sorunu gibi duruyor. Eğer ie’nin sorunları ile bu kadar zaman kaybetmemiş olsa idik şimdi böyle güzel sorunlarla uğraşacaktık ve tarayıcılar bu sorunları düzletmek için uğraşacaktı.

Çözüm1:

Çözüm için dışa bir kapsayıcı div atayıp kenar çizgisi tanımını bu katmana yaparak çözebiliyoruz.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>css3</title>
<style>
	.resimKapsulu{border:2px solid #999; width:75px; height:75px; -webkit-border-radius:12px; -moz-border-radius:12px; border-radius:12px;}
	.resimKapsulu img{width:75px; height:75px; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius:10px;}
</style>
</head>
<body>
	<div class="resimKapsulu"><img src="gudi.jpg" width="75" height="75" /></div>
</body>
</html>

Örneği görmek için tıklayınız.

Kodunu aldığım sitede resim ve kapsayıcı katmana aynı border-radius değeri verilmiş, ancak ben öyle yapınca Chrome’da beyazlıklar ortaya çıktı bu nedenle bende kapsüle 12px verirken resme 10px border-radius verdim.

Örnek Safari ve Chrome’da çalışırken Firefox3.6 ve Opera11’de çalışmıyor.

Firefox4 ve yeni webkit tabanlı tarayıcılarda bu sorun ise kökten çözülmüş, tanımı direk resme verebileceğiz.

Çözüm2:

Firefox3.6 ve Opera için CSS3 Rounded Image With jQuery makalesindeki yöntemden yaralanabiliriz.

HTML kodumuzu şöyle değiştirelim

<div class="resimKapsulu" style="background: url(gudi.jpg) no-repeat center center; width: 75px; height: 75px;">
	<img src="gudi.jpg" width="75" height="75" style="opacity: 0;" />
</div>

Resme saydamlık verilip görünmez yapılıyor ve satır için css kodları tanımlanıyor, amaç buradaki kodları jquery yardımı ile bg olarak tanımlamak .

jQuery kodumuz

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>css3</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript">
 $(document).ready(function() {

	$(".resimKapsulu").load(function() {
		$(this).wrap(function(){
			return '<span class="' + $(this).attr('class') + '" style="background:url(' + $(this).attr('src') + ') no-repeat center center; width: ' + $(this).width() + 'px; height: ' + $(this).height() + 'px;" />';
		});
		$(this).css("opacity","0");
	});

 });
</script>
<style>
.resimKapsulu{border:2px solid #999; width:75px; height:75px; -webkit-border-radius:12px; -moz-border-radius:12px; border-radius:12px;}
.resimKapsulu img{width:75px; height:75px; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius:10px;}
</style>
</head>
<body>
<div class="resimKapsulu" style="background: url(gudi.jpg) no-repeat center center; width: 75px; height: 75px;">
	<img src="gudi.jpg" width="75" height="75" style="opacity: 0;" />
</div>
</body>
</html>

Örneği görmek için tıklayınız.

Ben bu çalışmayı iphone ve ipad için kod geliştirirken denk geldiğim için diğer tarayıcıların benim için pek önemi yoktu açıkçası. iphone ve ipad için ilk çözümü uygulayıp geçtim açıkçası, ama lazım olanlar için ikinci yöntem de kullanılabilir.

Kaynaklar

CSS kodu yazarken background tanımlarında bazı yerlerde tırnaklı tanım yapıldığını, bazı yerlerde ise tırnaksız tanım yapıldığını görmüşsünüzdür.

background("deneme.gif");

veya

background(deneme.gif);

Ben birkaç güne kadar arada bir farkın olmadığını düşünüyordum.(Aslında benim gibi özel durumlar hariç bir fark olmadığı hakkındaki düşüncem devam ediyor.)

Projede css’de kullanılan resimlerin ön belleğe alınmaması için background:url(denem.gif?v={VERSION}) diye bir yol izliyoruz versiyon kısmına her atılan versiyonun numarası yazıyor ve böylelikle tarayıcılar resimler önbelleğe almıyor özelliklede Chrome!

Tabi bu kullanım Dreamweaver’da css otomatik tamamlamasını ve bu tanımdan sonraki özelliklerin renklendirmesini bozuyor.

background(deneme.gif?v={VERSION});

Dün ise eğer bu tanımı tırnak içinde yazarsam Dreamweaver otomatik tamamlaması ve kod renklendirmesini bozmadığını gördüm ve sevindim.

background("deneme.gif?v={VERSION}");

Sağlıcakla kalın.

[LiveGO][]’ya zaman zaman dil desteği ekliyoruz. Son olarak Almanca ve Arapça dil desteğini ekledik. Almanca ve diğer latin alfabesi ile yazılan dillerde bazı ufak tefek sığmama sorunları dışında bir sorun yaşamadık, ancak Arapça dil desteğini vermeye karar verdiğimiz ve uygulamaya geçtiğimizde bazı sorunlarla karşılaştık. Bu sorunlar dilin latin alfabesi olmaması ve soldan sağa değil sağdan sola doğru akmasından kaynaklanıyor. Benzer yapıdaki diğer dillerde de aynı sorunlar yaşanabilir.

direction özelliği

Bu özellik uygulana eleman içindeki akışın yönünü belirler.

Yapısı : direction: (değer) Aldığı Değerler : ltr | rtl | inherit
Başlangıç değeri: ltr
Kalıtsallık: Var

Aldığı değerler

  • ltr : Soldan sağa (left to right)
  • rtl: Sağdan sola(right to left)

Yazı akışının soldan sağa doğru değilde sağdan sola doğru olmasını css’in bu özelliği ile sağlayabiliyoruz.

body{
	direction:rtl
}

body elemanına vererek tüm siteyi sağdan sola doğru akmasını sağlayabildiğimiz gibi, sadece bir eleman ve içeriğinide sağdan sola doğru akmasını sağlayabiliyoruz.

div#deneme{
	direction:rtl
}

Tarayıcı Desteği

Chrome explorer Firefox
2.0+ 5.5+ 1.0+

Biz LiveGOfda tüm html’in sağdan sola akmasını sağlayacak şekilde kodlamadık. Belli alanlarda sağdan sola akmasını sağladık geri kalan yerler, normaldeki gibi soldan sağa oldu.

Ben bizim siteyi kodlarken bazı makaleler okudum ve uygulamada bazı sorunlar yaşadım ve çözümlerini buldum. Bulduğum kadarı ile buraya tecrübelerimi aktarmak istedim.

Ayrıca yine bu konu ile ilgili unicode-bidi özelliğide mevcut ancak kafanızı karıştırmamak için bu özelliğe fazla değinmeyeceğim.

İpuçları

  • Karakter seti olarak utf-8 seçmeliyiz.
  • Metinleri değiştirirken resimlerdeki yazıları değiştirmeyi unutmamalıyız.
  • Akışı sağdan sola olarak değiştirdiğimizde float:left ve float:right kabullerimiz tam tersi oluyor. float:left’leri float:right; float:right’larıda float:left olarak değiştirmeliyiz.
  • Tüm dokümanın sağdan sola olması için body elementine direction:rtl değerini tanımlamamız yeterli.
  • Metinlerin hizalaması için kullandığınız değerleri tam tersi olarak değiştirmeliyiz. text-align:left ve text-align:right değerlerini tam tersi olarak değiştirmeliyiz.
  • Mesafe değerlerinide tersine çevirmeliyiz. padding, margin değerleri mesela
  • Yazı tipi boyutlarını arapça sitede biraz daha büyük seçmemiz daha iyi olacaktır.
  • Bir metni Phoshop’a taşıdığımızda ters çeviriyor ve bozuyor, bu durumu düzeltmek için http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=4107&fileID=3813 adresindeki şablondan yardım almamız gerekiyor. Faik‘e teşekkürler bu link için

Farklı diller için site yapmaktan çok farklı farklı Arapça, Farsça, İbranice gibi akışı sağdan sola olan ve latin alfabesi dışındaki diller için site yapmak çok farklı. Kafanızdaki kabulleri tersine çeviren bu durum sizi biraz zorlasada farklı bir yapı ile uğraşmak zevkli oluyor.

Ben yukarıda karşılaştığım sorunları ve bulabildiğim cevapları sıralamaya çalıştım, umarım sizede lazım olduğunda işinize yarar.

Kaynaklar