Bütünleşik Biçembentler, 2. Aşama | ||
---|---|---|
Önceki | Yukarı | Sonraki |
BBB'de örüntü eşleme kuralları, belge ağacındaki elemanlara hangi biçembent kurallarının uygulanacağını belirler. Basit eleman isimlerinden zengin bağlamsal örüntülere kadar uzanan bir aralığı kapsayan bu örüntülere seçiciler adı verilir. Eğer bir örüntüdeki koşullar belli bir eleman için doğruysa, seçici elemanla eşleşmiş demektir.
Seçicilerdeki belge dili eleman isimlerinin harf büyüklüğüne duyarlılığı belge diline bağlıdır. Örneğin, HTML'de eleman isimleri harf büyüklüğüne duyarlı değildir, fakat XML'de duyarlıdır.
Aşağıdaki tabloda BB2 seçici sözdizimi özetlenmiştir:
Örüntü | Anlamı | Açıklandığı bölüm |
---|---|---|
* | Her elemanla eşleşir. | Evrensel seçici |
E | E türündeki her elemanla eşleşir. | Tür seçicileri |
E F | E elemanlarının F astsalları ile eşleşir. | Astsal seçiciler |
E > F | Herhangi bir E elemanının F çocukları ile eşleşir. | Çocuk seçiciler |
E:first-child | Ebeveyninin ilk çocuğu olan E elemanları ile eşleşir. | :first-child sözde sınıfı |
E:link E:visited | Bir hiper bağ olarak henüz ziyaret edilmemiş (:link ) ve ziyaret edilmiş (:visited ) E elemanları ile eşleşirler. | Bağlantı sözde sınıfları: :link ve :visited |
E:active E:hover E:focus | Belli başlı kullanıcı eylemleri sırasında E elemanları ile eşleşirler. | Özdevimli sözde sınıflar: :hover, :active ve :focus |
E:lang(c) | (İnsan) Dili "c" olan E elemanları ile eşleşir (Dilin nasıl saptanacağını belge dili belirtir). | Dil sözde sınıfı: :lang |
E + F | E büyük kardeşi olan F elemanları ile eşleşir. | Yakın kardeş seçiciler |
E[foo] | 'foo' özniteliği belirtilmiş (değerinin önemi yoktur) E elemanları ile eşleşir. | Öznitelik seçiciler |
E[foo="dikkat"] | 'foo' özniteliğinin değeri "dikkat" olan E elemanları ile eşleşir. | Öznitelik seçiciler |
E[foo~="dikkat"] | 'foo' özniteliğinin değerinde "dikkat" ile başlayan boşluk ayraçlı değerler içeren E elemanları ile eşleşir. | Öznitelik seçiciler |
E[lang|="en"] | 'lang' özniteliğinin değerinde "en" ile başlayan tire ayraçlı değerler içeren E elemanları ile eşleşir. | Öznitelik seçiciler |
div.dikkat | HTML'ye özel. div[class~="dikkat"] ile aynıdır. | class seçicileri |
E#idim | ID türündeki özniteliğinin değeri "idim" olan E elemanları ile eşleşir. | ID seçiciler |
Bir basit seçici hemen ardından sıfır veya daha fazla sayıda ve herhangi bir sırada öznitelik seçicisi, ID seçicisi veya sözde sınıf gelen bir tür seçici veya bir evrensel seçicidir. Bütün bileşenleri eşleşen bir basit seçici eşleşmiş olur.
Bir seçici, bağdaştırıcılarla birbirlerinden ayrılmış bir veya daha fazla sayıda basit seçiciden oluşan bir zincirdir. Bir bağdaştırıcı boşluk karakterlerinden, ">" ve "+" karakterlerinden biri olabilir. Boşluk karakterleri ayrıca, bir basit seçici ile bağdaştırıcı arasında da yer alabilir.
Bir seçici ile eşleşen bir belge ağacının elemanlarına seçicinin konuları denir. Tek bir basit seçiciden oluşan bir seçici, gereksinimlerini karşılayan her elemanla eşleşir. Bir basit seçicinin ve bir bağdaştırıcının bir zincirin önüne eklenmesi ilave eşleşme koşulları anlamına gelir, böylece bir seçicinin konuları daima en sağdaki basit seçiciyle eşleşen elemanların bir alt kümesi olur.
Bir sözde eleman, biçem bilgisinin her konunun bir alt parçasına uygulandığı durumda, bir zincirdeki son basit seçicinin ardına eklenebilir.
Çeşitli seçiciler aynı bildirimleri paşlaştığı takdirde virgül ayraçlı bir liste olarak gruplanabilirler.
h1 { font-family: sans-serif } h2 { font-family: sans-serif } h3 { font-family: sans-serif }
ile bu kural eşdeğerdir:
h1, h2, h3 { font-family: sans-serif }
BB başka kısaltma mekanizmaları da içerir: çoklu bildirimler ve kestirme nitelikler.
Evrensel seçici "*" olarak yazılır ve her eleman türüyle eşleşir. Belge ağacındaki her elemanla tek tek eşleşir.
Eğer evrensel seçici bir basit seçicinin tek bileşeni değilse, "*" yoksayılabilir. Örnek:
*[LANG=fr]
ve [LANG=fr]
eşdeğerdir.*.warning
ve .warning
eşdeğerdir.*#myid
ve #myid
eşdeğerdir.Bir tür seçici bir belge dilindeki bir eleman türü ismi ile eşleşir. Bir tür seçici belge ağacındaki her eleman nesnelleştirimi ile eşleşir.
<h1>
elemanları ile eşleşir:h1 { font-family: sans-serif }
Zaman zaman yazarlar belge ağacında başka bir elemanın astsalı olan bir elemanla eşleşen seçiciler isteyebilirler (örneğin, bir <h1>
elemanının içeriğindeki bir <em>
elemanı ile eşleşmek). Astsal seçiciler bir örüntüde böyle ilişkileri ifade ederler. Bir astsal seçici boşluk karakterleri ile ayrılmış iki veya daha fazla sayıda seçiciden oluşur. "A B
" biçimindeki bir astsal seçici üstsel elemanı A olan B elemanları ile eşleşecektir veya başka bir deyişle A elemanlarının astsalları olan B elemanları ile eşleşecektir.
h1 { color: red } em { color: red }
Rengini değiştirdikten sonra bir de metnin bir bölümünü eğik yazıyla göstermek istersek, bu iki vurgudan biri anlamını yitirecektir. Örnek:
<h1>Bu başlık <em>çok</em> önemli</h1>
Ama <h1>
elemanın içeriğindeki <em>
elemanının rengini mavi yaparak iki vurgunun tekrar anlamlı olmasını sağlayabiliriz:
h1 { color: red } em { color: red } h1 em { color: blue }
Üçüncü kural böyle bir bölümle de eşleşecektir:
<h1>Bu <span class="myclass">başlık <em>çok</em> önemli</span></h1>
div * p
seçicisi bir <div>
elemanının torunları olan <p>
elemanları ile eşleşecektir. "*" seçicisinin etrafındaki boşlukların evrensel seçicinin parçaları olmadığına dikkat ediniz; boşluklar seçiciler arasındaki bağdaştırıcılar olup <div>
elemanının, <p>
elemanının üstsellerinin üstseli olması gerektiğini belirtirler.
<div>
üstselleri olan <p>
elemanlarının çocuklarından 'href' özniteliği belirtilmiş olanlar seçilmektedir:div p *[href]
Bir çocuk seçici bir elemanın çocuğu olan elemanlarla eşleşir. Bir çocuk seçici ">
" bağdaştırıcılarla birbirlerinden ayrılmış iki veya daha fazla sayıda seçiciden oluşur. ">
" bağdaştırıcının etrafındaki isteğe bağlı boşluklar yoksayılır.
<body>
elemanının çocukları olan tüm <p>
elemanlarında satır yüksekliğini ayarlamaktadır:body > p { line-height: 1.3em }
div ol > li p
Bu seçici, <div>
üstseli olan <ol>
ebeveynlere sahip <li>
'lerin astsalları olan <p>
elemanları ile eşleşir.
Bir elemanın ilk çocuğunun seçilmesi ile ilgili bilgi edinmek için, :first-child
sözde sınıfından bahsedilen bölüme (aşağıda) bakınız.
Yakın kardeş seçicilerin sözdizimi, E1 + E2
biçiminde olup seçicinin konusu E2
'dir. Eğer E1 ve E2 aynı ebeveynin çocukları iseler ve belge ağacındaki sıraya göre E1, E2'den hemen önceyse, bu seçici E2 ile eşleşir.
Bazı bağlamlarda, bitişik elemanlar gösterimin özdevinimli elde edilmesini sağlayan biçimleme nesneleri üretirler (yanyana çerçeveler arasında düşey kenar dış boşluklarının üstüste binmesi gibi). "+
" bağdaştırıcıları bitişik elemanlar için ek biçem belirtmeyi olanaklı kılar.
<math>
elemanından hemen sonra gelen <p>
elemanı girintilenmeyecektir:math + p { text-indent: 0 }
<h1>
ve <h2>
elemanları peşpeşe geldikleri takdirde aralarındaki boşluk azaltılacaktır:h1 + h2 { margin-top: -5mm }
<h1>
elemanına bir öznitelik seçicisi eklenmiştir. Bu durumda, sadece 'class="opener"' içeren bir <h1>
elemanından hemen sonra bir <h2>
elemanının varlığında ara boşluk azaltılacaktır:H1.opener + H2 { margin-top: -5mm }
BB2, kaynak belgede tanımlı özniteliklerle eşleşen kurallar belirtebilmeyi de mümkün kılmıştır.
Öznitelik seçiciler dört yolla eşleşebilir:
[özn]
[özn=değ]
[özn~=değ]
[özn|=değ]
Öznitelik değerleri betimleyici veya dizge olmalıdır. Öznitelik isimlerinde ve değerlerinde harf büyüklüğüne duyarlılık tamamen belge diline bağımlıdır.
<h1>
elemanları ile eşleşecektir:H1[title] { color: blue; }
<span>
elemanları ile eşleşecektir:span[class="example"] { color: blue; }
Bir elemanın çok sayıda özniteliği için çok sayıda öznitelik seçicisi kullanılabileceği gibi aynı öznitelik defalarca da belirtilebilir.
<span>
elemanları ile eşleşecektir:span[merhaba="Alanya"][elveda="Antalya"] { color: blue; }
a[rel~="copyright"] a[href="http://www.w3.org/"]
*[lang="fr"] { display : none }
*[LANG|="en"] { color : red }
DIALOGUE[character=romeo] { voice-family: "Lawrence Olivier", charles, male } DIALOGUE[character=juliet] { voice-family: "Vivien Leigh", victoria, female }
Eşleşmeler belge ağacındaki öznitelik değerlerinde yer alır. HTML dışındaki belge dilleri için, öntanımlı öznitelik değerleri bir DTD'de veya bir başka yerde tanımlanabilir. Biçembentler, öntanımlı değerler belge ağacında bulunmasa bile onlarla çalışacak şekilde tasarlanmalıdır.
<!ATTLIST MESELA belirtim (onluk,sekizlik) "onluk">
Biçembendimiz de şu kuralları içersin:
MESELA[belirtim=onluk] { /*... öntanımlı nitelik ayarları ...*/ } MESELA[belirtim=sekizlik] { /*... diğer ayarlamalar ...*/ }
Özniteliğin öntanımlı olduğu durumları yakalamak için açıkça yazmak yerine şu kural kullanılabilirdi:
MESELA { /*... öntanımlı nitelik ayarları ...*/ }
Bu seçici, bir öznitelik seçicisinden duruma daha az özgü olduğundan sadece öntanımlı durum için kullanılacaktır. Öntanımlı olarak aynı biçemi almayan diğer öznitelik değerlerinin ise açıkça ayrı olarak ele alınmasına dikkat edilmelidir.
class
seçicileriHTML ile kullanılan biçembentlerde 'class' özniteliğiyle eşleşme arandığı durumda "~=" gösterimi yerine yazarlar nokta (.) gösterimini kullanabilirler. Bu bakımdan, HTML için 'div.value' ile 'div[class~=value]' aynı anlamdadır. Özniteliğin değeri noktadan hemen sonra yazılmalıdır.
*.pastoral { color: green } /* class~=pastoral içeren tüm elemanlar */
veya daha temiz olarak,
.pastoral { color: green } /* class~=pastoral içeren tüm elemanlar */
Aşağıdaki kural sadece 'class~="pastoral' içeren <h1>
elemanları ile eşleşir:
h1.pastoral { color: green } /* class~=pastoral içeren h1 elemanları */
Bu kurallarla aşağıdaki belge parçasında ikinci <h1>
yeşil olurken birincisinin rengi değişmeyecektir:
<h1>Yeşil değil</h1> <H1 class="pastoral">Koyu yeşil</h1>
'class' özniteliğinin diğer değerleri ile eşleşme sağlamak için her değerin önüne nokta konmalıdır; değerlerin sırasının önemi yoktur.
<p>
elemanları ile eşleşme sağlanacaktır:P.pastoral.marine { color: green }
Bu kural 'class="pastoral blue aqua marine"' ile eşleşir fakat 'class="pastoral blue"' ile eşleşmez.
<div>
ve <span>
kullanarak) ve biçem bilgisini 'class' özniteliklerine yükleyerek "kendi belge dillerini" tasarlayabilirler. Bir belge dilinin yapısal elemanları daha çok tanındığından ve anlamları kabul gördüğünden ama yazarlarca tanımlanmış sınıflar bunu sağlayamayacağından yazarların bu yola başvurmaları önerilmez.Belge dilleri ID türünde bildirilmiş öznitelikler içerebilirler. ID türündeki özniteliklerin özelliği aynı değere sahip iki ID türünden özniteliğin aynı belge içinde bulunamayışıdır; belge dili ne olursa olsun, bir ID özniteliği elemanını eşsiz olarak kimliklendirmek için kullanılabilir. HTML'de tüm ID öznitelikleri 'id' ismini taşır; XML uygulamaları ID türünden öznitelikleri farklı isimlendirebilir ama aynı kurallar uygulanır.
Bir belge dilindeki bir ID özniteliği yazarlara belge ağacındaki bir eleman nesnesine bir betimleyici atama imkanı verir. BB ID seçicileri bir eleman nesnesini onun betimleyicisine dayanarak seçer. ID seçicileri bir "#" iminden hemen sonra ID değeri yazılarak oluşturulur.
<h1>
elemanı ile eşleşir:h1#chapter1 { text-align: center }
<p>
elemanı ile eşleşecektir:<head> <title>P eşleşir</title> <style type="text/css"> *#z98y { letter-spacing: 0.3em } </style> </head> <body> <h1>P eşleşir</h1> <P id=z98y>Upuzun metin</P> </body>
Sonraki örnekte, biçem kuralı bu kez ID değeri "z98y" olan <h1>
elemanı ile eşleşecektir. Bu örnekte <p>
elemanı ile eşleşme gerçekleşmeyecektir:
<head> <title>Sadece H1 eşleşir</title> <style type="text/css"> H1#z98y { letter-spacing: 0.5em } </style> </head> <body> <H1>Sadece H1 eşleşir</H1> <p id=z98y>Upuzun metin</p> </body>
ID seçicilerinin özgülüğü öznitelik seçicilerinden daha yüksektir. Örneğin, HTML'de #p123
seçicisi bütünleşme kuralları gereği [ID=p123]
seçicisinden daha duruma özgüdür.
#p371
yerine [name=p371]
kullanmak gibi). Öte yandan, normal öznitelik seçicileri ID seçicilerinden bütünleşme sırası bakımından da farklıdır. Bu bakımdan bildirimlere !important
öncelikleri eklemek gerekebilir ([name=p371] {color: red ! important}
gibi). Şüphesiz, XML 1.0 belgeler bir DTD olmaksızın bir ID'lere de sahip olamayacaktır.BB2'de normalde, biçem bir elemana belge ağacındaki yerine göre atanır. Bu basit model çoğu durumda yeterlidir, fakat bazı bildik yayıncılık senaryoları belge ağacının yapısından dolayı mümkün olmayabilir. Örneğin, HTML 4.0'da [HTML40] hiçbir eleman bir paragrafın ilk satırını gösteremez ve dolayısıyla ilk satırı gösteren basit bir BB seçicisi de yoktur.
BB, belge dışında kalan bilgilere dayalı biçimlemeye izin vermek için sözde elemanlar ve sözde sınıflar kavramlarını ortaya atmıştır.
Sözde elemanlar belge dili tarafından belirtilenler dışında belge ağacında soyutlamalar oluştururur. Örneğin, belge dilleri bir elemanın içeriğindeki ilk satıra veya ilk harfe erişim sağlayacak mekanizmalar sunmazlar. BB sözde elemanları biçembent tasarımcılarına başka türlü erişilemeyecek bilgilere erişimi mümkün kılar. Sözde elemanlar biçembent tasarımcılarına ayrıca kaynak belgede bulunmayan içeriğe biçem atama yolunu da açarlar (örneğin, :before
ve :after
sözde elemanları üretilen içeriğe erişim sağlarlar).
Sözde sınıflar, elemanları isim, öznitelik veya içeriklerinden farklı karakteristiklere göre sınıflandırırlar;ilke olarak bu karakteristikler belge ağacından elde edilemeyebilirler. Sözde sınıflar özdevimli olabilir, yani bir kullanıcı belge ile etkileşirken bir eleman bir sözde sınıfa erişim kazanabilir veya erişimi yitirebilir. İstisnası belge ağacından saptanabilen :first-child
sınıfıdır. :lang
()
sözde sınıfı da bazı durumlarda belge ağacında saptanabilir.
Ne sözde elemanlar ne de sözde sınıflar belge kaynağında veya belge ağacında yer alabilir.
Sözde sınıflara seçicilerde her yerde izin verildiği halde, sözde elemanlar sadece seçicinin konusu olduktan sonra bir seçicide yer alabilirler.
Sözde elemanlar ve sözde sınıfların isimleri harf büyüklüğüne duyarlı değildirler.
Bazı sözde sınıflar birbirlerinin etkilerini yokederler. Böyle çelişkili durumlarda normal bütünleşim sırası sorunu çözer.
Uyumlu tarayıcılar seçicilerde :first-line
veya :first-letter
elemanları geçen tüm kuralları yoksayabilirler veya bu sözde elemanların niteliklerinin bir alt kümesini desteklemekle yetinebilirler.
:first-child
sözde sınıfı
:first-child
sözde sınıfı, başka bir elemanın ilk çocuğu olan elemanla eşleşir.
<div>
elemanlarının ilk çocuğu olan <p>
elemanları ile eşleşecektir. Kural bir <div>
elemanının ilk paragrafının girintilenmesini önlemektedir:div > p:first-child { text-indent: 0 }
Bu seçici aşağıdaki belge parçasının <div>
elemanının içindeki <p>
elemanı ile eşleşecektir:
<p>Örnekten önceki son paragraf</p> <div class="misal"> <p>Örneğin içindeki ilk paragraf</p> </div>
Ama aşağıdaki <p>
elemanı ile eşleşmeyecektir:
<p>Örnekten önceki son paragraf</p> <div class="misal"> <h2>Örnek:</h2> <p>Örneğin içindeki ilk paragraf</p> </div>
<p>
elemanının ilk çocuğunun <em>
astsalının yazıtipini kalın yapacaktır:p:first-child em { font-weight : bold }
Anonim çerçeveler belge ağacının parçası olmadıklarından ilk çocuk bulunurken hesaba katılmayacaklarına dikkat ediniz.
<p>abc <em>öntanımlı</em></p>
Burada <em>
elemanı <p>
elemanının ilk çocuğudur.
Aşağıdaki iki seçici eşdeğerdir:
* > a:first-child /* Herhangi bir elemanın a çocuğunun ilk çocuğu */ a:first-child /* Aynı */
:link
ve :visited
Hemen hemen bütün kullanıcı arayüzleri ziyaret edilmemiş bağlantıları ziyaret edilenlerden farklı gösterirler. Bunları ayırdetmek için BB :link
ve :visited
sözde sınıflarını sağlar:
:link
sözde sınıfı henüz ziyaret edilmemiş bağlantılara uygulanır.
:visited
sözde sınıfı bağlantı kullanıcı tarafından ilk ziyaret edildiğinde uygulanır.
:link
) haline çevirebilirler.Bu iki durum aynı anda varolamaz.
Hangi elemanın hiper bağlantı elemanı olacağını belge dili belirler. Örneğin, HTML 4.0'da bağlantı sözde sınıfları 'href' özniteliğine sahip <a>
elemanlarına uygulanır. Bu bakımdan, aşağıdaki iki BB2 bildirimi aynı etkiye sahiptir:
a:link { color: red } :link { color: red }
<a class="harici" href="http://harici.taraf/">harici bağlantı</a>
bağlantısı ziyaret edildiğinde, bu kural:
a.external:visited { color: blue }
onu mavi yapacaktır.
:hover
, :active
ve :focus
Etkileşimle kullanıcı arayüzleri bazan kullanıcı eylemlerine verilen yanıtı değiştirirler. BB bildik durumlara uyan üç sözde sınıf sağlar:
:hover
sözde sınıfı kullanıcı bir eleman üzerinde gezinirken (bir işaretleme aygıtı ile) uygulanır ama elemanı etkinleştirmez. Örneğin, bir görsel tarayıcı fare imleci eleman tarafından üretilen çerçevenin üzerinden geçerken bu sözde sınıfın belirttiği kuralı uygulayacaktır. Etkileşimli ortamı desteklemeyen kullanıcı arayüzleri bu sözde sınıfı desteklemek zorunda değillerdir. Etkileşimli ortamı destekleyen bazı uyumlu kullanıcı arayüzleri (kalem aygıtı gibi) ise bu sözde sınıfı desteklemeyebilir.
:active
sözde sınıfı bir eleman kullanıcı tarafından etkinleştirildiğinde uygulanır. Örneğin, fare düğmesine kullanıcının basmasıyla bırakması arasındaki sürede).
:focus
sözde sınıfı bir elemana odaklanıldığında (eleman tuş girdilerini kabul etmeye başladığında veya başka türlü bir metin girdisinde) uygulanır.
Bu sözde sınıflar birbirlerini karşılıklı dışlamazlar. Bir eleman aynı anda bir kaçıyla eşleşebilir.
BB hangi elemanların yukarıdaki durumlarda olabileceğini veya durum değişikliklerine nasıl girip çıktıklarını tanımlamaz. Betiklerle elemanların kullanıcı olaylarına tepkileri değiştirilebilir; farklı aygıtlar ve kullanıcı arayüzleri onları farklı yollarla işaret edebilir yada etkinleştirebilir.
Kullanıcı arayüzlerinin o an gösterilmekte olan belgeyi sözde sınıf geçişlerinden dolayı yeniden oluşturması gerekmez. Örneğin, bir biçembent bir etkin (:active
) bağlantının yazıtipi yüksekliğini (font-size
) etkin olmayan halinden daha büyük belirtebilir, fakat bu, okuyucu bağlantıyı seçtiğinde harflerin yerlerinin değişmesine yol açabileceğinden bir kullanıcı arayüzü bu biçem kuralını yoksayabilir.
a:link { color: red } /* ziyaret edilmemiş bağlantı */ a:visited { color: blue } /* ziyaret edilmiş bağlantı */ a:hover { color: yellow } /* kullanıcı rastlarsa dikkatini çekmek için */ a:active { color: lime } /* etkin bağlantılar */
Bütünleşme kurallarının a:hover
kuralının color
niteliğini gizlememesi için a:hover
kuralı, a:link
ve a:visited
kurallarının sonrasına yerleştirilmelidir. Benzer şekilde, a:active
kuralı a:hover
kuralının sonrasına yerleştirildiğinden dolayı, etkin renk (yeşil) kullanıcı elemanın hem üzerinde olup hem de elemanı etkinleştirdiğinde uygulanacaktır.
a:focus { background: yellow } a:focus:hover { background: white }
Son seçici, :focus
ve :hover
sözde sınıflarına giren <a>
elemanları ile eşleşir.
Odak sınırlarının gösterimi hakkında daha ayrıntılı bilgi edinmek için Dynamic outlines: the outline property bölümüne bakınız.
:active
sözde sınıfı :link
ve :visited
sözde sınıflarıyla birbirlerini karşılıklı dışlarlardı. Bu artık geçerli değildir. Bir eleman hem :visited
hem de :active
(veya hem :link
hem de :active
) sözde sınıflarına sahip olabilir ve hangi niteliklerin uygulanacağını normal bütünleşim kuralları belirler.:lang
Belge dili bir elemanın insan dilinin nasıl saptanacağını belirtiyorsa, bir elemanın diliyle eşleşen seçiciler yazmak mümkündür. Örneğin, HTML'de [HTML40] dil <meta>
elemanının 'lang' özniteliği ile bir ihtimal protokoldeki bilginin (örn, HTTP başlıklarından) bir birleşimi olarak saptanır. XML, xml:lang özniteliğinde belirtir, diğer dillerde dili saptamak için kendilerine özgü yöntemler kullanılıyor olabilir.
:lang(c)
sözde sınıfı. dili c olan bir elemanla eşleşir. Burada c, [IANA-DİLKOD] ve [HTML40]'da belirtilen dil kodlarından biridir. Eşleşme |= işlecinin kullandığı eşleşme yöntemi ile bulunur.
html:lang(fr) { quotes: '« ' ' »' } html:lang(de) { quotes: '»' '«' '\2039' '\203A' } :lang(fr) > q { quotes: '« ' ' »' } :lang(de) > q { quotes: '»' '«' '\2039' '\203A' }
İkinci kural çifti <q>
elemanının quotes
niteliğine ebeveyninin dili ile ilgili atamaları yapar. Bunun böyle yapılmasının sebebi, tırnak imi seçiminin tırnak içindeki elemanın diline göre yapılması gereğidir.
:first-line
sözde elemanı
:first-line
sözde elemanı bir paragrafın ilk biçimli satırına özel bir biçem uygular.
p:first-line { text-transform: uppercase }
Bu kural, "her paragrafın ilk satırının bütün harflerini büyük harf yap" anlamına gelir. Bununla birlikte, p:first-line
seçicisi gerçek bir HTML elemanı ile eşleşmez. Bunun yerine, Uyumlu kullanıcı arayüzlerinin her paragrafın başlangıcına yerleştireceği bir sözde elemanla eşleşir.
İlk satırın uzunluğunun bazı etmenlere bağlı oluşuna dikkat ediniz; sayfanın genişliği, yazıtipi boyutu gibi. Aşağıdaki gibi sıradan bir HTML paragrafımız olsun:
<p>Bu, çok sayıda satıra bölünmüş uzunca bir paragraf olup ilk satır kurgusal bir etiketin içine alınıp geri kalan satırlar paragrafın diğer satırları olarak ele alınır.</p>
Satırlar şöyle oluşurdu:
BU, ÇOK SAYIDA SATIRA BÖLÜNMÜŞ UZUNCA BİR paragraf olup ilk satır kurgusal bir etiketin içine alınıp geri kalan satırlar paragrafın diğer satırları olarak ele alınır.
Bu çıktı ilk satır için kurgusal etiketlerle kullanıcı arayüzü tarafından yeniden yazılmış olabilir. Kurgusal etiketler miras alınan niteliklerin gösterilişine yardımcı olur.
<p><p:first-line>Bu, çok sayıda satıra bölünmüş uzunca </p:first-line> bir paragraf olup ilk satır kurgusal bir etiketin içine alınıp geri kalan satırlar paragrafın diğer satırları olarak ele alınır.</p>
Eğer sözde eleman yerine gerçek bir eleman kullansaydık, kurgusal etiketler açılıp kapanarak istenen etki yine sağlanırdı. O halde, paragrafı <span>
elemanı ile imleyelim:
<p><span class="dnm">Bu, çok sayıda satıra bölünmüş uzunca bir paragraf olup </span> ilk satır kurgusal bir etiketin içine alınıp geri kalan satırlar paragrafın diğer satırları olarak ele alınır.</p>
Kullanıcı arayüzü ilk satır için kurgusal etiketleri yerleştirirken <span>
elemanı için uygun başlangıç ve bitiş etiketlerini de yerleştirecektir:
<p><p:first-line><SPAN class="dnm">Bu, çok sayıda satıra bölünmüş uzunca bir </SPAN></P:first-line> <SPAN class="dnm"> paragraf olup </SPAN> ilk satır kurgusal bir etiketin içine alınıp geri kalan satırlar paragrafın diğer satırları olarak ele alınır.</p>
:first-line
sözde elemanı sadece blok seviyesinden elemanlar için kullanılabilir.
Bir ilk satırın blok seviyesinden, üstseli B
olan bir A
elemanının ilk satırı olduğu durumda, kurgusal etiketler şöyle oluşurdu:
<B>...<A>... <B:first-line> <A:first-line>Bu ilk satırdır</A:first-line> </B:first-line>
İlk satırla ilgili kurgusal etiketlerin tümü olası en küçük blok seviyesinden elemanın içinde olup kurgusal A:first-line
ve B:first-line
etiketlerinin iç içelik sırası A
ve B
elemanları ile aynıdır.
Bir blok seviyesinden elemanın "ilk biçimli satırı" eleman akımındaki ilk satırıdır; yani, yüzen elemanlar ve mutlak konumlu elemanlar yoksayılır. Örnek:
<div> <p style="float: left">Yüzen paragraf...</p> <p>İlk satır buradan başlıyor...</p> </div>
'div:first-line' seçicisi ikinci <p>
'nin ilk satırına uygulanır, çünkü ilk <p>
akımın dışında kalır.
:first-line
sözde elemanı satıriçi seviyeden bir eleman gibi olmakla birlikte bazı kısıtlamaları tabidir. Sadece şu niteliklere uygulanır: yazıtipi nitelikleri, renk nitelikleri, artalan nitelikleri, word-spacing
, letter-spacing
, text-decoration
, vertical-align
, text-transform
, line-height
, text-shadow
ve clear
.
:first-letter
sözde elemanı
:first-letter
sözde elemanı bir paragrafın baş harfinde bazı görsel etkiler oluşturmak için kullanılır. float
niteliği none olduğunda bir satıriçi elemana, aksi takdirde bir yüzen elemana benzer.
:first-letter
sözde elemanına şu nitelikler uygulanabilir: yazıtipi nitelikleri, renk nitelikleri, artalan nitelikleri,
text-decoration
, vertical-align
(sadece float
niteliği none iken), text-transform
, line-height
, dış kenar boşluğu (margin) nitelikleri, iç kenar boşluğu (padding) nitelikleri, kenar (border) nitelikleri, float
, text-shadow
ve clear
.
Aşağıdaki belgenin BB2 biçembendi paragrafın baş harfini paragrafın başında bir yuva içine (matbaacılık terimlerini bilmiyorum ama buna "yuvalı baş harf" denebilir; İngilizcesi "dropped initial caps" veya "drop caps") yerleştirmektedir:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Baş harfin büyütülmesi</title> <style type="text/css"> p { font-family: serif; font-size: 14pt; line-height: 12pt} p:first-letter { font-size: 42pt; font-style: italic; font-weight: bold; float: left } span { text-transform: uppercase } </style> </head> <body> <p><span>Açıklamalar</span> dizgecikler arasında her yerde bulunabilirler ve içerikleri yoksayılır. Açıklamalar iç içe olamazlar.</p> </body> </html>
Bu örnek şöyle biçimlenmiş olabilir:
<p> <span> <p:first-letter> A </p:first-letter>çıklamalar </span> dizgecikler arasında her yerde ...
:first-line
sözde elemanının başlangıç etiketi eklendiği elemanın başlangıç elemanından sonra yerleştirildiği halde, :first-letter
sözde elemanının etiketleri içeriğe (yani, ilk karaktere) bitişiktir.
Geleneksel ilk harfin büyütülmesi işlemi sırasında, kullanıcı arayüzleri örneğin karakter tabanlarını hizalamak için yazıtipi boyutlarında yaklaşımda bulunabilirler. Ayrıca karakterin dış boyutları biçimlemede hesaba katılmış olabilir.
Başharfi de içine alan bir noktalama (yani, [Unicode]'da atanmış olan Ps, Pe ve Po noktalama sınıflarından bir karakter) mevcutsa bu da baş harfle birlikte biçimlenmelidir:
:first-letter
sözde elemanları blok seviyesinden elemanlarla eşleşir.
Bazı diller bazı karakter birleşimleri ile ilgili özel kurallara sahiptir. Örneğin, Felemenkçede bir sözcüğün başında "ij" karakter birleşimi yer alıyorsa, bu iki karakter birlikte :first-letter
sözde elemanı için tek harf kabul edilmelidir.
<p>
elemanının ilk harfi yeşil ve 24pt'luk olacak, ilk biçimli satırın kalanı mavi olacak, paragrafın kalanı ise kırmızı renkte olacaktır.p { color: red; font-size: 12pt } p:first-letter { color: green; font-size: 200% } p:first-line { color: blue } <p>Bu metin örneğin hatrına en az iki satırlık olmalıdır.</p>
"en" sözcüğünden hemen önce ikinci satıra geçildiğini varsayalım. Bu durumda kurgusal etiketler şöyle oluşurdu:
<p> <P:first-line> <P:first-letter> B </P:first-letter>u metin örneğin hatrına </P:first-line> en az iki satırlık olmalıdır. </p>
:first-letter
elemanının :first-line
elemanının içinde kaldığına dikkat ediniz. :first-line
için nitelikler :first-letter
elemanından miras alınır, fakat aynı nitelik :first-letter
için de belirtilmişse sonuncusu geçerli olacaktır.
:before
ve :after
sözde elemanları
:before
ve :after
sözde elemanları bir elemanın içeriğinden önce veya sonra üretilmiş bir içeriği yerleştirmek için kullanılır. Bunlar Üretilen içerik, özdevinimli numaralama ve listeler bölümünde incelenmiştir.
H1:before {content: counter(chapno, upper-roman) ". "}
:first-letter
ve :first-line
sözde elemanları :before
ve :after
ile birlikte kullanıldıklarında yerleştirilen metnin ilk harfinde veya ilk satırında etkili olurlar.
p.special:before {content: "Special! "} p.special:first-letter {color: #ffd800}
Bu kural "Special!" dizgesinin "S" harfini altın rengi yapacaktır.
Önceki | Yukarı | Sonraki |
BB Sözdizimi ve Temel Veri Türleri | Bir Linux Kitaplığı Sayfası | Nitelik Değerlerinin Atanması, Bütünleşme ve Kalıtım |