Css 'eski' biriminin değeri nedir?


87

( Popüler bir .Net birim test kitaplığı olan Xunit ile karıştırılmamalıdır .)

Bugün can sıkıntısıyla Gmail'lerin DOM'unu incelemeye başladım (evet, çok sıkılmıştım).

Belirli öğelerin genişlikleri hakkında ilginç bir özellik fark edene kadar her şey oldukça basit görünüyordu. Ünlü Googlites, nadir bulunan 'eski' birimi kullanarak bir dizi tablo sütunu belirtmişti.

width: 22ex;

İlk başta şaşkına döndüm ("'eski' nedir?"), Sonra bana geri geldi: Yıllar öncesinden CSS hakkında ilk öğrendiğim zamandan bir şeyler hatırlıyorum. CSS3 spesifikasyonundan :

[ Eski birim ] ilk kullanılabilir yazı tipinin kullanılan x yüksekliğine eşittir . X-yüksekliği, genellikle küçük "x" harfinin yüksekliğine eşit olduğu için denir. Ancak, "x" içermeyen yazı tipleri için bile bir "ex" tanımlanır.

İyi ve güzel. Ama daha önce kullanıldığını hiç görmedim (kendim çok daha az kullandım). Ems'i oldukça yaygın kullanıyorum ve değerini anlıyorum, ama neden "eski"? Em'den çok daha az standart bir ölçüm ve çok daha az kullanışlı görünüyor.

Bu konuyu tartışırken bulduğum birkaç sayfadan biri Stephen Poley'in http://www.xs4all.nl/~sbpoley/webmatters/emex.html . Stephen iyi noktalara değiniyor, ancak tartışması bana sonuçsuz geliyor.

Öyleyse sorum şu: 'eski' birim web tasarımına ne değer veriyor?

(Bu soru öznel olarak etiketlenebilir, ancak bu kararı kendimden daha deneyimli SO'lara bırakacağım.)

Yanıtlar:


126

Metninizin küçük harflerinin yüksekliğine göre bir şeyi boyutlandırmak istediğinizde kullanışlıdır. Örneğin, böyle bir tasarım üzerinde çalıştığınızı hayal edin:

alternatif metin


Tasarımın tipografik boyutunda, harflerin yüksekliği diğer unsurlarla önemli uzamsal ilişkilere sahiptir. Yukarıdaki kaynak görüntüdeki satırlar, metnin x yüksekliğini göstermeye yardımcı olmayı amaçlamaktadır, ancak aynı zamanda, bu metin etrafında tasarım yaparken kılavuzların nerede olacağını da gösterirler.

Jonathan'ın yorumlarda belirttiği gibi, ex basitçe em'in yükseklik versiyonudur (genişlik).


31
Sadece eklemek, bu genişlik için 'em' birimi kullanarak yüksekliği eşdeğer
Jonathan Fingland

3
@Joel Belirli bir yazı tipi için m genişliği ile x yüksekliği arasındaki oran nedir? Sabit olsa bile, hesaplanması çok zor olabilir, çünkü her yazı tipinin m ve x arasında farklı ve keyfi bir oranı vardır. Dolayısıyla, türe göre olması gereken öğeleri tasarlarken, oranı kendiniz belirlemek zorunda kalmadan, her şeyi orantılı tutmak için x yüksekliğine güvenebilirsiniz.
Rex M

2
Oldukça ezoterik olan bir diğer nokta ise Mozilla Gecko'nun exes kullanarak ems kullananlara göre öğeleri biraz daha doğru ölçekleyebilmesidir. Bir em'in varsayılan "stilsiz" boyutu 10.06667 piksel iken, bir ex'in boyutu 6 pikseldir. Bu, ems ölçeklenirken Firefox'un kısmi pikselleri exes ölçeklendirirken olduğundan daha sık yuvarlaması gerektiği anlamına gelir.
benrifkah

1
Genel olarak doğru olmasa da, 2ex'in 1em ile yaklaşık aynı boyutta olduğunu hayal etmek geçerlidir (büyük harfin yüksekliği tipik olarak 1em'den biraz daha az olsa da). CSS spesifikasyonu, "x yüksekliğini belirlemenin imkansız veya pratik olmadığı durumlarda, 0,5em değerinin varsayılması gerektiğini" bile belirtir.
natevw

20
@JonathanFingland @RexM baskı tipografisinde aksine, CSS'deki, embirim yok değil bir genişlik ölçmek - bu önlemler yüksekliği yazı. 1 emhesaplanan font-sizedeğerdir ve font-size"istenen glif yüksekliğini" belirtir . Hem Yani emve exbir yüksekliğe ölçün. ( chancak genişliği ölçüyor.)
Rory O'Kane

20

Soruyu cevaplamak için üst simge ve alt simge kullanmaktır. Misal:

sup {
    font-size: 75%;
    height: 0;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
    bottom: 1ex;
}

1
Gerçi bunun "eski" nin ne olduğunu açıklamaya gerçekten yardımcı olduğunu sanmıyorum.
duskwuff -inaktif-

12
Soru şu: "Eski" birim web tasarımına ne kadar değer veriyor? ". "Eski birim nedir?" Değil Joel, orijinal soruda eski bir birimi tanımlama konusunda çok iyi bir iş çıkarıyor. Bir üst simgeyi konumlandırmak için nasıl kullanabileceğinize dair pratik bir örnek veriyorum.
jbs

1
Soruyu doğrudan yanıtlayan iyi pratik bir örnek. Aferin.
Basil Bourque

2

Burada dikkate alınması gereken bir diğer husus, bir kullanıcı yazı tipi boyutunu artırdığında veya düşürdüğünde (belki ctrl + fare tekerleğini (pencereler) kullanarak) sayfanızın nasıl ölçeklendiğidir.

Onları .. padding-left: 2 em; padding-right: 2 em;

ve dolgulu alt: 2 ex; padding-top: 2 ex;

Bu nedenle, dikey ölçekleme özelliği için dikey bir ölçü birimi ve yatay olarak ölçekleme özelliği için yatay bir ölçü birimi kullanılır.


5
Hem em hem de ex dikey birimlerdir, çünkü bunlar sırasıyla büyük harf "M" ve küçük harf "x" yüksekliği olarak tanımlanır . Hem dikey hem de yatay uzunluklar için kullanılabilirler.
JacquesB

Buna ek olarak ch, sıfır rakamın ("0") genişliğini ölçen yatay bir birimdir.
Matt F.

1

CSS spesifikasyonuna sahip olmanın değeri, gerçekten sorduğunuz şey buysa, em birimine sahip olmanın değeriyle tamamen aynıdır.

Yazı tiplerini göreceli boyutlara ayarlamanıza olanak tanır .

Temel yazı tipi boyutumun ne olduğunu bilmiyorsun. Bu nedenle, web tasarımı için iyi bir strateji, yazı tipi boyutlarını mutlak değil göreli olarak ayarlamaktır; "on piksel" gibi sabit bir boyut yerine "normal boyutunuzun iki katı" veya "normal boyutunuzdan biraz daha küçük" eşdeğeri.


Buna katılıyorum. Ancak em spec bunun için yeterli ve daha güvenilir değil mi?
Joel

@JoelPotter evet, ancak yalnızca genişlikler için; yükseklikler exiçin, eşdeğer gibi görünüyor.
ANeves, SE'nin kötü olduğunu düşünüyor

5
@ANeves Yanlış. CSS'de em, bir fontun yüksekliğidir (yaklaşık olarak), genişlik değil . Basılı tipografide, em fikri büyük harfin genişliğinden geldi M. Ancak CSS iyileştirildi em. Wikipedia'ya bakın .
Basil Bourque

2
Genişlik istiyorsanız, chbirimi başka bir cevapta belirtildiği gibi kullanın .
Basil Bourque

1

"Tek / çift satır aralığı" gibi terimlerin aslında em ile ölçülen iki bitişik çizgi arasındaki kayma anlamına geldiğini unutmayın . Yani "çift satır aralığı", her satırın 2 em yüksekliğe sahip olduğu anlamına gelir .

Bu nedenle, "çizgiler" ile orantılı dikey bir mesafe belirtmek istiyorsanız, em kullanın. Sadece küçük harf yüksekliğini istiyorsanız ex kullanın, ki bu çok daha nadir bir örnektir.

GÜNCELLEME: Web standardı, tarayıcının eski olarak 0.5em kullanmasına veya yazı tipinden türetmesine izin verir.

Ancak, herhangi bir "x-yükseklik" bilgisini bir yazı tipine (OpenType veya web yazı tipi) güvenli bir şekilde yerleştirmenin bir yolu yoktur.

Bu nedenle, ilk olasılık eski birimi gereksiz kılar ve ikincisi gerçekleşecek herhangi bir güvenilir araçtan yoksundur. Her ikisinin de mümkün olması gerçeği onu daha da az güvenilir kılar.

Bu yüzden eski birimin değer eksikliğini savunuyorum.


Bu soru özellikle anlamını değil değerini sorar.
Matt F.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.