İkonlar web aleminde kendi iyi bir yer bulmuş öğelerdir. Şimdiye kadar ikonları html sayfalarına resimler ile ekledik. İlk başta tek tek eklerken daha sonra css sprite metodu ile tek resim dosyası içine tüm ikonları ekleyip background-position yardımı ile kullandık. Bu yöntemlerin kendice avantajları olduğu kadar resim işleme ve düzenleme işlemleri bakımından her zaman bir sıkıntısı mevcut.

CSS3 ile birlikte gelen font-face özelliği yardımı ile istediğimiz yazı tiplerini kullanıcının bilgisayarına yükleyebiliyoruz artık. Yazı tipleri yazı karakterleri içerdiği gibi ikonlarıda içerebildiğini biliyoruz. dingbat yazı tipleri, sıklıkla kullandığımız bilinen fontların aksine harflerden ziyade simgelerden oluşan fontlara denilmektedir. Bunun en bilinen örneği ücretsiz Wingdings yazı tipidir. Benzer şekilde ikonlarımızı bir yazı tipi dosyası haline getirip sitelerimizde kullanabilme imkanımız var. Tabi birçok ücretsiz şekilli yazı tipi bulabiliriz internetten.

Burada sizlere bu yöntemi anlatmayı planlıyorum. Artılarından ve eksilerinide bahsedip son kararı sizin vermenizi isteyeceğim.

font-face kullanımını anlattığım makalemi okuyarak yazıları sitelere nasıl gömdüğümüzü öğrenebilirsiniz.

@font-face {
	font-family:'Graublau Web';
	src:local('Graublau Web Regular'), local('Graublau Web'), url(GraublauWeb.woff) format(woff), url(GraublauWeb.svg#GraublauWeb) format(svg), url(GraublauWeb.otf) format(opentype);
	font-weight:400;
	font-style:normal;
}

p {
	font-family:"Graublau Web", serif;
}

şeklinde genel kullanımı göstermiştik. Benzer bir şekilde bir şekilli yazı tipi ekleyip ikon ekleyebiliriz.

[http://webloti.org/20-modern-fontface-icon-seti/][] ve benzeri sitelerden ücretsiz web ikonlarını alalım.

 @font-face{
	font-family: 'ModernPictogramsNormal';
	font-style: normal;
	font-weight: normal;
	src: url('modernpics-webfont.eot');
	src: url('modernpics-webfont.eot?#iefix') format('embedded-opentype'),
url('modernpics-webfont.woff') format('woff'),
url('modernpics-webfont.ttf') format('truetype'),
url('modernpics-webfont.svg#ModernPictogramsNormal') format('svg');
}

kodu ile yazı tipini sayfamızda çağırmış olduk. Menü elemanlarının her biri için seçtiğimiz ikonları atamak için ilgili elemanın öncesine(:before) yazı tipinde ilgili ikonu ifade eden harfi ekliyoruz.

li#alisveris a:before{
	color: #f00;
	content: "i";
	font: 24px "ModernPictogramsNormal";
	padding-right: 5px;
}

Alışveriş için seçtiğimiz sepet ikonun “i” harfi ile ifade edildiği için “i” harfini ekledik. Kodu biraz daha düzenli yazarsak.

Örnek: /dokumanlar/fontface_ikon.html

Örnekte gördüğümüz gibi bir çok yerde ikonlarımızı CSS yardımı ile ekleyip boyutunu, rengini kolayca değiştirebiliriz.

Bir başka örnek: /dokumanlar/fontface/fontface_ikon_buton.html

Bu kullanımın avantajları ve dezavantajları var.

Avantajları

  • Vektörel çizimler olduğu için boyutu değiştirme esnekliği sağlıyor.
  • Renk değiştirme imkanı
  • Bir satır CSS kodu ile değiştirme imkanı.
  • Farklı tarayıcılar için uygun
  • Birçok resim yerine tek yazı tipi ekleyerek performans kazandırıyor.
  • HTTP istek sayısını azaltarak performansı arttırıyor.

Dezavantajları

  • png ve svg gibi ikonları revize etmek kolay değil
  • Bir veya daha fazla ikon için tüm yazı tiplerini eklemek performans açısından mantıklı değil. Yüksek yazı tipi dosya boyutları.
  • Çok renk seçimine olanak sağlamaması.

Yeni Türk Lirası ikonunu eklemek

Benzer bir şekilde yeni yayınlanan Türk Lirasınıda font-face yardımı ile ekleyebiliriz. TC Merkez bankasının yayınladığı yazı tipi olan AbakuTLSymSansRegular siteye ekleyerek kolay bir şekilde yeni Türk Lirası sembolünü web sitelerimize ekleyebiliriz.

Yazı tipinde sadece tl sembolünü kullanacağımız için diğer karakterleri silip sadece ikonu bırakarak yazı tipi dosya boyutunu küçültebiliriz.

/dokumanlar/fontface/abakutlsymsans.zip

Bağlantısından küçük dosyayı indirebilirsiniz.

@font-face{
	font-family: 'AbakuTLSymSansRegular';
	font-style: normal;
	font-weight: normal;
	src: url('abakutlsymsans.eot');
	src: url('abakutlsymsans.eot?#iefix')
format('embedded-opentype'), url('abakutlsymsans.woff') format('woff'),
url('abakutlsymsans.ttf') format('truetype'),
url('abakutlsymsans.svg#AbakuTLSymSansRegular') format('svg');
}

Şeklinde sayfaya ekledik. Sembol olunca rakamların başına konuyor. araya biraz da mesafe koyalım.(padding-right:5px bunun için)

p:before{
	content: "t";
	font-family: "AbakuTLSymSansRegular", serif;
	font-size: 24px;
	padding-right: 5px;
}

ile sayfamıza ekledik.

Örnek: /dokumanlar/fontface/tl_deneme.html

Kaynaklar

CSS kenar çizgileri kullanımı bir çoğumuz için çok basit bir iştir. Ancak yanına bir çizgi daha konduğu zaman kara kara düşünürüz ne yapalımda bu işin altında kalkalım diye. Resim kullanırız genelde sorunu halletmek için.

Burada basit bir yol ile bu işi nasıl yapacağımızı anlatacağım.

Çoklu kenar çizgisi uygulanacak eleman relative konumlandırılmalı ve padding değeri uygulanacak ikinci kenar çizgisi dikkate alınarak atanmalıdır.

#cokluKenarCizgisi{
	border: 5px solid #FF0000;
	padding: 20px;
	position: relative;
	z-index: 10;
}

Sözde elemanlar ile ikinci kenar çizgisini ekleyelim. z-index eksi değer vererek içeriğin arkasına atarız.

 #cokluKenarCizgisi:before{
	border: 5px solid #06F;
	bottom: 0;
	content: "";
	display: block;
	left: 0;
	position: absolute;
	right: 0;
	top: 0;
	z-index: -1;
}

Bu örnekte sadece iki kenar çizgisi için kod verildi, ancak yine sadece :before ve background-color ile üç kenar çizgisi ve hatta :before, background-color ve :after ile 4 ve daha fazla kenar çizgisi ekleyebiliyoruz.

Tek kenara çoklu çizgi genelde lazım olan bir kod olduğu için burada onuda paylaşıyorum.

#cokluKenarCizgisi{
	background: #F0F0F0;
	border-bottom: 2px solid #f00;
	color: #000000;
	padding: 10px 10px 11px;
	position: relative;
}

#cokluKenarCizgisi:before{
	background: #0FF;
	bottom: 0;
	content: "";
	display: block;
	height: 1px;
	left: 0;
	position: absolute;
	width: 100%;
}

Daha falza örnek için http://nicolasgallagher.com/multiple-backgrounds-and-borders-with-css2/demo/borders.html sayfasına bakınız.

Tarayıcı Desteği

Chrome explorer Firefox
4.0+ (-webkit) 8+ 3.5+ (-moz)

Mobil Tarayıcılar

Android Mobil Safari Chrome
2.1+ (-webkit) 3.2+ (-webkit) 36+

Burada önemli nokta ie7’nin :before ve :after desteğinin olmaması. Kullanım yüzdesi %6,46 olduğu göz önüne alınırsa göz ardı edilebilir. border-radius uygulanmış elemanlara bu metot kullanılabilir.

outline ile iki kenar çizgisi oluşturmak

İki kenar çizgisi oluşturmak için outline kullanılabilir.

#cokluKenarCizgisi{
	border: 5px solid #FF0000;
	outline: 5px solid blue;
	padding: 20px;
}

İkiden fazla kenar çigisi kullanamasakta iyi bir alternatif olarak kullanılabilir.

Tarayıcı Desteği

Chrome explorer Firefox
4.0+ (-webkit) 8+ 3.5+ (-moz)

Mobil Tarayıcılar

Android Mobil Safari Chrome
2.1+ (-webkit) 3.2+ (-webkit) 36+

ie7 yine sorun

box-shadow ile çoklu kenar çizgisi oluşturmak

#cokluKenarCizgisi{
	border: 5px solid #FF0000;
	padding: 10px;
	moz-box-shadow: 0 0 0 5px #06F;
	webkit-box-shadow: 0 0 0 5px #06F;
	box-shadow: 0 0 0 5px #06F;
}

Çoklu gölge kullanımı ile birdne fazla kenar çizgiside ekleyebiliriz.

#cokluKenarCizgisi{
	border: 5px solid #FF0000;
	padding: 10px;
	moz-box-shadow: 0 0 0 5px #06F, 0 0 0 10px #FF0;
	webkit-box-shadow: 0 0 0 5px #06F, 0 0 0 10px #FF0;
	box-shadow: 0 0 0 5px #06F, 0 0 0 10px #FF0;
}

Tarayıcı Desteği

Chrome explorer Firefox
4.0+ (-webkit) 9+ 3.5+ (-moz)

Mobil Tarayıcılar

Android Mobil Safari Chrome
2.1+ (-webkit) 3.2+ (-webkit) 36+

Burada destek konusundn daha büyük bir sorunumuz var ie7’in yanında box-shadow özelliğini ie8’de desteklemiyor.

Sonuç

Çoklu kenar çizgisi uygulamada yukarıda anlattığımız yöntemler çözüm olarak eterli bence. ancak ie6 ve ie7 desteği için ne yapacağız diye düşünüyorsanız eski fazladan katman ekleme ile veya resim kullanrak çözme yoluna gidilebilir. Benim düşünceme göre ie7 gözden çıkarılabilir ve :before veya outline yöntemi kullanılabilir.

Kalın sağlıcakla

Kaynaklar

İlk olarak Facebook’un popup ve lightbox olarak uyguladığı, en azından benim orada gördüğüm bir uygulama idi.

Benzer bir uygulamayı yapmak için kodları yazdım. Daha önce bahsettiğim rgba tanımı ile bu iş çok basit olacaktı.

 #popup{
	position: absolute;
	top: 90px;
	left: 40%;
	border: 10px solid rgba(0,0,0, 0.5);
	text-align: center;
	font-size: 24px;
	background-color: #FFFFFF;
	width: 350px;
	padding: 50px 0;
	border-radius: 10px;
	z-index: 100;
}

Ancak aşağıdaki gibi bir görüntü elde ettim.

Çözümü biraz araştırdım ancak pek bir şey bulamadım derken css-tricks’in çözümü bana ilaç gibi geldi. Çözüm background-clip özelliği tanımı ile sağlanıyor.

#popup{
	position: absolute;
	top: 90px;
	left: 40%;
	border: 10px solid rgba(0,0,0, 0.5);
	text-align: center;
	font-size: 24px;
	background-color: #FFFFFF;
	width: 350px;
	padding: 50px 0;
	border-radius: 10px;
	z-index: 100;
	moz-background-clip: padding;
	webkit-background-clip: padding;
	background-clip: padding-box;
}

Kaynak