Anasayfa > Bilgisayar-İnternet

CSS Dersleri - Bilgisayar-İnternet


"Web Style Sheets" Kavramı ve  CSS (Cascading Style Sheets = Yığılmalı Stil Kağıtları):

CSS (ingilizce açılımı Cascading Style Sheets olan Türkçeye çevrildiğin de ise Yığılmalı Stil Kağıtları) bizi HTML'in kalıplaşmış olan stil etiketlerinden bir bakıma kurtarıyor.

CSS kod kümesi sayfamızın <head> </head> etiketleri arasına yazılıyor.

"Style Sheets" kavramı oldukça geniş bir teknolojik yaklaşımı ifade ediyor. Açıkçası CSS konusu bu teknolojinin sadece bir bölümünü oluşturmakta olup, Style Sheets teknolojisi çerçevesinde CSS'den başka XSL, XSLT, DSSL gibi biçimlendirme teknikleri ve dillerinden de söz etmek mümkündür.

Bir web sayfasının tasarım elemanları (stil öğeleri) denilince aklımıza şunlar geliyor;

  • ·         arka planlar,
  • ·         başlıklar, yazılar, fontlar,
  • ·         tablolar,
  • ·         listeler,
  • ·         renkler ve görsel biçimler,
  • ·         bağ renkleri, efektler,
  • ·         imaj, katman vb. nesneler ve bunların sayfa üzerindeki yerleşimleri vs.

"Web Style Sheets" kavramı; işte bu tasarım elemanları üzerinde tam denetim sağlamak ve web dökümanlarının görünümlerini tayin etme işinde tasarımcılara ekstra güç kazandırmak için geliştirilmiş bir teknolojik yaklaşımı ifade etmektedir.

"Style Sheets" teknolojisini kullanmak demek, stiller belirlemek suretiyle belge biçimlendirmek demektir. Burada web dökümanlarının nasıl görüneceğini tayin etmek üzere geliştirilmiş bir takım kurallar sözkonusudur.

 

W3C'nin sitesinde "Web Style Sheets" teknolojisi çerçevesinde CSS, CSS1, CSS2, CSS3, CSS-P, XSL, XSLT, XPath, DSSL gibi kavramlardan sözedilmekle birlikte temelde 2 "Style Sheet" dili olduğu ifade edilmektedir.

Bunlar;

1-    1-     CSS (Cascading Style Sheets),

2-    2-      XSL (eXtensible Style Language)

Kursumuzda CSS konusunu ele alacağız.

CSS (Cascading Style Sheets)

CSS; çok daha etkin web sayfası biçimlendirebilmek amacıyla HTML'ye destek olması için oluşturulmuş bir işaretleme dilidir.

CSS'ye, herhangi bir web dökümanındaki yazı, başlık, font, arkaplan (background), imaj, katman, tablo ve liste gibi tasarım elemanlarının (stil öğelerinin) HTML kodlamasındaki uygulanış ve belirtim kurallarını belirleyen bir "web style sheets" teknolojisidir. Bu teknolojinin geliştirilmesindeki en temel amaç, HTML'nin sayfa biçimlendirme işlevlerini ekstra katkılarla arttırmak ve tasarımcıya çok daha etkin sayfa yapma imkanları sağlamaktır.

HTML belgesi (web sayfası) tarayıcıya yüklendiğinde yaptığımız stil tanımlamaları deyim yerindeyse üst üste yığılarak (basamaklandırılarak) ele alınır ve stil tanımlamasındaki yönteme bağlı olarak değerlendirilir. Yani belgedeki stil tanımlamalarının nerede yapıldığına bakılarak komutlar bir nevi basamaklandırmak suretiyle kademe kademe işlenir ve sayfa ekranda öyle gösterilir. Burada CSS komutlarının tarayıcılar tarafından işletilmesinde bir basamaklandırma modeli sözkonusudur. Bu nedenle stiller belirlemek suretiyle belge biçimlendirme olayına "Cascading Style Sheets" adı verilmiştir.

CSS'nin belli başlı faydaları;

-   daha iyi sayfa kontrolu (tek dosya ile tüm sitenin kontrol edilebilmesi imkanları),

-          -          kolay renk yönetimi,

-          -          etkin kenar boşluğu denetimleri,

-          -          metin biçimlendirme, gölgeleme olanakları,

-          -          geçişler gibi görsel etkiler yaratabilme olanakları,

-          -          nesne konumlandırma kolaylıkları,

 

CSS Syntax Sözdizimi - Genel Kavramlar

CSS kodu oluşturmanın en basit yolu HTML kodlamasında olduğu gibi herhangi bir metin editöründe (NotePad vs.) elle kodlama yapmaktır. Çünkü harici CSS dosyaları (örneğin "style.css") da dahil olmak üzere CSS kodları da HTML dökümanları gibi ASCII (plain-text) formatındadırlar. Bu nedenle CSS kodlamasını basit text editörleri yardımıyla yapılabilir.

HTML ile web sayfası tasarımcılığında CSS kavramı önemli yer tutar. Bu nedenle iyi bir tasarımcı olmanın koşullarından birisi de CSS konusunu bütün yönleriyle iyice öğrenmektir.

Bir style sheet ifadesi, selektör ve bildirim olmak üzere 2 ana kısma ayrılır. Bildirim kısmı da yine aynı şekilde özellik ve değer olmak 2 bölümden oluşur. Bu söylediklerimizi aşağıda şematik olarak görebiliriz.

En yalın CSS kodlaması;

HTML'de yer alan ve stili belirlenebilen yani "selector" kimliği taşıyan etiketlerden herhangi birisini, örneğin H (Heading) etiketini baz alarak CSS kodlamasındaki en yalın hali ifade eden bir kod satırı yazalım. Aşağıda bildirim ve selectör kavramları gösterilmektedir. SELEKTÖR (selector) bir style sheet bildiriminin ilk öğesine verilen isimdir. Selektör CSS’lerde hangi etiket ile ilgili işlem yapacağımız seçmeye yarar.

 

 

 

 

 

Bildirim (decleration) kısmının da kendi içinde ÖZELLİK ve DEĞER olarak 2 temel bileşene ayrıldığını görmekteyiz.

 

 

Yukarıda belirttiğimiz CSS kod satırına (Style Sheet) dikkat ederseniz, temel bileşenlerin biraraya getirilmesinde kullandığımız { } ve : şeklindeki noktalama işaretlerinin de bu yalın haldeki kod satırının tamamlayıcı öğeleri olduğunu görürüz.

Burada birbir önemli husus da; <STYLE> ... </STYLE> etiketi arasındaki stil ifadelerinde, değer ataması yapmak için yazılan sözcükler " veya ' işaretleri ile sınırlandırılmaz. Örneğin aşağıdaki ifade yanlıştır. H1 {color: "blue"} CSS2 ile kurallaşan bu hususa özen göstermek gerekmektedir.

CSS kapsamında ayrıca tasarımcı tarafından oluşturulabilen ID (kimlik) ve CLASS (sınıf) türünde 2 tip selektör daha vardır.  

CSS kod satırlarını (style sheet belirtimlerini) gruplandırmak;

Aynı stil belirtiminde bulunacağımız selektör etiket sayısı birden çok ise, örneğin aşağıdaki kodlamada olduğu gibi;

 

 

Bu 3 satırlık kodlama biçimini GRUPLANDIRMAK suretiyle aşağıda görüldüğü gibi tek satır halinde daha kolay bir şekilde ifade etmek mümkündür.

 

Miras Kavramı (inheritance)

Miras kavramı; bir etikete atanan bir stil tanımının ilgili etiket kapsamı içinde kullanılan bir başka etiket tarafından aynen üstlenilmesi olayıdır. Örneğin;

Stil ifadesi;H1 {color: green} olsun,HTML kodu ise;

<H1>Bu cümlede H1'in stilini miras alan bir <EM>etiket</EM> var.</H1>
şeklinde olsun.

Burada kullandığımız <EM> etiketi <H1> etiketinin yeşil renk stil belirtimini aynen üstlenir. Yani miras devralır. Kodumuz yazarken miras kavramını göz önüne alarak yazmalıyız.

Bir stil ifadesine açıklama satırı koymak;

Stil ifadelerinde açıklama satırı kullanmak için /* ve */ işaretlerinden yararlanılır. Örnek kod aşağıda;

H1 {color: red}    /* H1'i kırmızı yap */  

Çok kullanılan bazı örnekler:

Örnek:

<html>

<head>

<style type="text/css">

 



<style> etiketlerine dikkat edelim

 
 

 

 

<!--

p {font-family: Verdana; font-size: 10px; color:#000000}

.bold {font-family: Verdana ;font size:10px; font-weight: bold;

color:#000000}

.yesilyazi {font-family: Verdana; font size:10px; color:

#00CC33}

.altinyazi {font-family: Verdana; font size: 10px; color:

#FF6633}

.maviyazi {font-family: Verdana; font size: 10px; color:

#006699}

.italik {font-family: Verdana; font size: 10px; color: #000000;

font-style: italic}

.alticizili {font-family: Verdana; font-size: 10px; color:#000000;

text-decoration: underline}

-->

</style>

<head>

<body>

<p> Galatasaray UEFA kupasını

<span class="bold">(2000 yılında) </span>

müzesine götürdü

<span class="yesilyazi”> Bütün Avrupanın takdirini kazandı.</span>

<span class="altinyazi"> Daha sonra Süper Kupaya sahip oldu</span>

<span class="alticizili"> (2001 yılında)

</span>

<span class="maviyazi"> Daha birçok başarıya imza  atacak</span>

<span class="italik">Herkes Galatasaraylı olacak</span>

</p>

</body>

</html>

 

CSS denen şeyin, sayfanın <head> </head> bölümde parantezler ile yaptığımız kodlamayı görüyoruz.Sayfamızda <p>(paragraf) ile kodladığımız kısımlar Font ailesinden Verdana, Size (genişliği) 10 px ve rengi de Siyah olmak üzere belirlendi. Ve sayfa da <p> kodlamasını yaptığımız da hep aynı şekilde görünecektir.

 

Örnek:

<a href="deneme.htm"> Dinamik CSS link denemesi </a>

 

<html>

<head>

<style type="text/css">

<!--

a { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; color:

#000000; text-decoration: none}

a:active { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; color:

#FF0000; text-decoration: none}

 

a:hover { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; color:

#FF0000; text-decoration: underline}

 

a:link { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 7pt; color:

#000000; text-decoration: none}

-->

</style>

</head>

<body>

<p> <a href="deneme.htm"> Dinamik CSS link denemesi </a> </p>

</body>

</html>

 

Selektörler (seçiciler):

Bir style sheet ifadesindeki ilk öğelere "selektör" adı verilir. Bu bir HTML etiketi olabileceği gibi, SINIF (class) veya KİMLİK (ID) niteliğinde tasarımcı tarafından tanımlanabilen selektörler de olabilir. Eğer ilk öğe bir HTML etiketi ise bu "HTML Selektörü" olarak adlandırılır. Şimdi bu selektörleri içeren style sheet ifadelerine bir bakalım; Bu stil ifadeleri harici bir .css dosyasında olabileceği gibi, <head> ..</head> etiketleri arasına da konabilir

Yukarıdaki stil ifadelerinde görüldüğü üzere;

. işareti ile başlayan selektörlere sınıf (class),

# ile başlayan selektörlere ise kimlik (ID) tipinde selektör adı verilir.

Buradaki örnek stil ifadelerinin bildirim (deklerasyon) kısımlarında ise CURSOR özelliğine birtakım değerler atanmaktadır. Bunların herhangi bir web dökümanı içerisinde uygulanmasına gelince, kod satırları şöyle olabilir;.

 

Yukarıdaki kod satırları web dökümanının <body> .. </body> etiketleri arasında yer almalıdır

<STYLE TYPE="text/css">

body { cursor: crosshair }

.yardim { cursor: help }

#bekle { cursor: wait }

</STYLE>

<body>

<P STYLE="color: #c0c0c0"><b>AÇIKLAMA: Mouse imlecini aşağıdaki cümlelerin üzerine götürünüz!. imleçteki değişimlerr dikkat ediniz</b></p>

<br>

<font size="5">

 <span class="yardim">Bu cümlede imleç değişir.</span>

<br><br>

  <P ID="bekle">Bu cümlede de imleç değişir.</p>

</body>

 

Bazı Özel Karakterler:

Yukarıda anlattığımız selektörler yerine * ve > olmak üzere 2 joker karakteri kullanabiliriz... Örneğin;

*{font-color: red}

Bu ifade sayfadaki bütün etiketlere "kırmızı font rengi" stilini uygular.

> karakteri ise çocuk selektörler tanımlar. Örneğin;

ul > li {list-style-type: decimal}

Bu ifade UL etiketini ebeveyn olarak kabul eder ve UL içindeki LI öğelerini çocuk selektör olarak görür. Böylece sadece UL listelerindeki LI öğelerine stil belirtimi uygulanmış olur.

Pseudo Classes – Sınıfımsılar

CSS’de kullandığımız kodlarda da bazı yetersizlikler vardır. Bunlar normal etiketlerle karşılanamayan durumlar için düşünülmüş kontrol elemanlarıdırlar. Bütün sınıfımsıların önünde : (iki nokta üst üste) işareti bulunur.

Örnek:

A:visited {color: maroon}

ifadesi sınıfımsı kullanımına dair bir örnek teşkil eder. CSS2 ile tanımlanmış sınıfımsıları (pseudo-classes) aşağıdaki tabloda görebiliriz;

 :first-child

Bir öğenin ilk çocuk öğesi

 :first-line

Bir paragrafın biçimlendirilen ilk satırı

 :first-letter

Bir paragrafın ilk harfi

 :link

Henüz ziyaret edilmemiş linkler

 :visited

Ziyaret edilmiş linkler

 :hover

İmlecin o anda üzerinde durduğu öğe

 :active

O anda etkin olan öğe

 :focus

Odakta olan öğe

 :lang

Geçerli dil tanımı

 :before

İçeriği bir öğeden önceye konumlandırır

 :after

İçeriği bir öğeden sonraya konumlandırır

Örnek:

<STYLE TYPE="text/css">

.ilksatirbuyuk:first-line{

font-size:310%;

font-weight:bold;

}

</STYLE>

Body bölümünde yer alacaktır.

<p align="justify" class="ilksatirbuyuk">

Cim Bom Galatasaray

</p>

<br>

<p align="justify">

Cim Bom Galatasaray! Dikkat edelim class ifadesi yok!

</p>

 

ÖZELLİKLER:

Bir web dökümanının tasarım elemanları (stil öğeleri) daha önce de ifade ettiğimiz gibi döküman gövdesi, arka planlar, başlıklar, yazılar, fontlar, tablolar, listeler, renkler ve görsel biçimler, bağlar, efektler, imaj, kutu modeli, katman vb. ile bunların sayfa üzerindeki yerleşimleri gibi birtakım nesnelerden oluşur. CSS içinde bu nesneleri kontrol edebilmek için belirli sayıda "PROPERTIES" (Özellik) tanımlanmıştır. Web sayfası oluştururken yapılan stil belirtimlerinde, yukarıda sözünü ettiğimiz tasarım elemanlarıyla ilişkilendirilebilen özellikler baz alınarak, bu özelliklere birtakım değerler (values) atanır. Örneğin FONT  (EN ÇOK KULLANILAN ÖZELLİK) öğesini ele alırsak, bu öğenin özellikleri ve bu özelliklere atanabilecek değerler şöyledir;

  

Font Özellikleri:

 

 font-family

arial, verdana, times, courier vs.
bold

 font-style

normal, italic, oblique, inherit

 font-size

xx-small, small, medium, large, x-large, xx-large, larger, smaller, inherit, geçerli yüzde, geçerli uzunluk

 font-variant

normal, small-caps, inherit

 font-weight

normal, bold, bolder, lighter, 100-900, inherit

 font-stretch

normal, wider, narrower, ultra-condensed, extra-condensed, condensed, semi-condenced, expanded, semi-expanded, extra-expanded, ultra-expanded, inherit

 font-size-adjust

none, geçerli sayı, inherit

 font

font-style, font-variant, font-weight, font-size, line-height, font-family, inherit

 

Style Sheet Kullanım Metotları:

Bir HTML dökümanında CSS kodlaması yapmanın, yani stil tanımlamasında bulunmanın 4 farklı metodu vardır. Bunlar Inline (İç), Embedded (Gömülü), External (Harici Bağlantı) ve Importing (İthal Etme) şeklinde isimlendirilmektedir. Tabii bu dört metodun hepsinin bir arada kullanıldığı bir beşinci metod'tan da sözetmek mümkün. Buna da "karma metod" adını verebiliriz.

  1. 1.            1.                 INLINE (İç) Metotu:

Bu yöntemle; bir HTML dökümanı içerisinde, stili belirlenebilen herhangi bir HTML etiketinin kendi içine stil tanımlaması yapılabilir. Bu metotta çift tırnak olamsına dikkat edilmelidir. <head>…</head> etiketleri içine yazılması gibi durum söz konusu değildir.

 
Örnek: 

<p style="color: blue"> ... </p>


Böyle birşey yaptığımızda, yani bir HTML etiketine stil ataması yaptığımızda tarayıcılar tarafından bu atama en büyük öncelikle dikkate alınır. Diğer stil belirtimleri geçersiz olur. Bu yöntemi kullanabilmek için ayrıca 2 etiketten yararlanılır. Bunlar <DIV> ve <SPAN> etiketleridir.

<div style="font-color: blue">

...

</div>

ve diğer etiket,

<span style="font-color: blue">

...

</span>

Bu iki etiket arasındaki fark şudur;

<div> etiketi blok düzeyinde işlev görür. Yani kapsadığı aralıktaki bütün öğeler bir blok mantığıyla ele alınır ve bu aralıkta bütün HTML öğeleri yer alabilir. Ayrıca <div> etiketi sonlandığında bir satır atlatır. <span> etiketinde böyle bir şey sözkonusu değildir. Bu yüzden <span> etiketini cümle içlerinde rahatlıkla kullanabiliriz.

2-   2-    EMBEDDED (Gömülü) Metot:

Bu yöntemde stil tanımlamaları <head>...</head> etiketleri arasında yer alacak şekilde yapılır. Ve bu amaçla <style> etiketinden yararlanılır. Örneğin;

<style type="text/css">

<!--

  body {       background: #c0c0c0;

                    background-attachment: fixed;  }

-->

</style>

Buradaki '<!--' ve '-->' ifadeleri stil kodlarını eski web tarayıcılardan saklamak için kullanılmaktadır. BODY ifadesi stil tanımlamasının selektörü, diğer ifadeler ise bu selektöre atanan stil bildirimleridir.

3-   3-    EXTERNAL (Linked - Harici Bağlı) Metot:

CSS kodları çok uzun olabilir. Bunun için CSS kodlarımızı ayrı bir not defteri sayfasında yazarız ve uzantısını .css yaparız. Daha sonra bunu sayfamıza bağlarız.

 

Sadece sayfamızın başına yazacağımız CSS etiketlerini Notdefterine yazmak ve uzantısını .html değil de .css yapmak.

 

“ali.css” dökümanını, bağlanacak olan “.html” dökümanlarınızın olduğu klasöre kopyalanır. Ve bu dosyanın sayfaya eklenmesi için aşağıdaki ifade yazılır;

 

<link rel="stylesheet" type="text/css" href="ali.css">

 

etiketini sayfanızın <head> </head> etiketleri arasına yazılması gerekir.Böylece .css uzantılı dosyayı sayfanıza link yolu ile eklenmiş olur.

Bu yöntemi kullandığımızda bütün bir siteyi stil tanımlamaları açısından denetim altına almış oluruz. Örneğin sitemizdeki tüm sayfaların arkaplan rengini değiştirmek istediğimizde "ali.css" dosyasındaki tek bir değişiklikle bunu gerçekleştirebiliriz. Aksi durumda sitedeki tüm sayfalar için bunu tek tek yapmak zorunda kalırdık.

4-   4-    IMPORTING (İthal Etme) Metotu:

Bu yöntemde ise kullanılmak istenen stil tanımlamaları ayrı bir dosyadan ithal edilir. Bu amaçla harici bir stil dosyasını ithal etmek için @ import komutu kullanılır. Örnek vermek gerekirse; web sayfasının <head>...</head> etiketleri arasına aşağıdaki gibi bir kod satırı yerleştirilir;

<STYLE TYPE="text/css">

<!-- @import url;

... stil kodları

-->

</STYLE>

NOT: Eğer bir web sayfasında yukarıda saydığımız bütün yöntemleri de birarada kullanırsak bunların tarayıcılar tarafından okunma sırası şu şekildedir;

Harici stil -> Gömülü stil -> İç stil

Ancak, okunan stil tanımlamalarının geçerlilik sırası ise tam tersidir;

İç stil -> Gömülü stil -> Harici stil

Yani CSS uyumlu bir tarayıcı herhangi bir web dökümanında bütün stil yöntemleri de uygulanmışsa ilk olarak harici dosyayı, sonra gömülü tanımlamaları ve daha sonra da iç stil tanımlamalarını okur. Ve iş sayfayı ekranda göstermeye gelince öncelikle "iç stil" tanımlamalarını geçerli kılar. Sonra gömülü stildeki tanımlamaları, son olarak ta harici dosyadaki tanımlamaları dikkate alır. Görüldüğü üzere burada iç stil gömülü stile baskın rol oynamaktadır. Aynı şekilde gömülü stil de harici stil üzerinde baskın olur. Böyle bir durumda, tanımladığımız stillerin değerlendirilmesi açısından, tarayıcı ile web sayfası arasındaki ilişkide bir nevi "basamaklama" olayı sözkonusudur. CSS'deki "Cascading" kelimesi de zaten buradan kaynaklanmaktadır.

CSS Standartları ve W3C:

CSS'nin gelişimi W3C tarafından kontrol edilmekte olup, şu ana kadar Cascading Style Sheets hakkındaki gelişmeler CSS1 ve CSS2 şeklinde iki versiyonda (level) toplanmıştır. CSS3 için ise konsorsiyumun çalışmaları halen sürmektedir. CSS hakkında herhangi bir hususta tereddüte düştüğünüzde ilk bakacağınız yer bu konsorsiyumun teknik belgeleri olmalıdır.

World Wide Web Konsorsiyumu için;

CSS: CSS Homepage - W3C (Cascading Style Sheets)

CSS1: http://www.w3.org/TR/REC-CSS1 (Cascading Style Sheets, level 1)

CSS2: http://www.w3.org/TR/REC-CSS2 (Cascading Style Sheets, level 2)

CSS3: http://www.w3.org/Style/CSS/current-work