CSS Kullanıcı Arayüzü
Optional Advanced az önce bir fotoğrafa şablon koydu. Bu oturum başka bir alet çantası: kullanıcı arayüzü. İmleci, caret’i ve yerel widget kromunu değiştirirsiniz. Kahraman görsele delik açmazsınız, yazıyı gazete sütunlarına da bölmezsiniz.
Doğrudan yanıt
CSS kullanıcı arayüzü özellikleri etkileşime işaret eder. cursor fare şeklini seçer (pointer, wait, help, not-allowed…). resize bir köşeyi sürükletir — genelde textarea üzerinde. outline ve outline-offset yer kaplamayan bir odak halkası çizer (kutu modelindeki outline’ı biliyorsunuz; burada klavye alışkanlığıdır). user-select yanlışlıkla seçimi kısıtlar. caret-color yanıp sönen çubuğu boyar. appearance (ve -webkit-appearance) yerel deriyi soyup denetimi yeniden stillendirmenizi sağlar. Odağı görünür tutun. Tüm sayfayı seçilemez afişe çevirmeyin.
Bu neden maske veya sütun değil
Maske bir kutunun hangi piksellerinin görüneceğine karar verir. Çoklu sütun bir metin akışını parçalar. UI özellikleri ikisini de yapmaz. Genişlik ve yükseklik resize devreye girene dek aynı kalır. Filtreler ve mask-image hâlâ sanattır. Soru şudur: «Tıklanabilir görünüyor mu? Yazabilir miyim? Kutuyu büyütebilir miyim? Klavye kullanıcısı neredeyim görüyor mu?»
cursor — doğruyu söyleyin
cursor bir sözdür. pointer «buna tıklanır» demektir. Gerçek düğme ve bağlantılara koyun. Hiçbir iş yapmayan başlığa el koymayın.
a.nav-link,
button.save {
cursor: pointer;
}
button[disabled] {
cursor: not-allowed;
}
.help-hint {
cursor: help;
}
.busy-panel {
cursor: wait;
}
default oktur. text seçilebilir metindeki I çubuğudur. grab / grabbing sürükleme tutacaklarına uyar. Özel url(...) imleçleri küçük tutun ve her zaman yedek anahtar kelime yazın. Yalan söyleyen imleç hiç olmamasından kötüdür: slogan tıklanır, hiçbir şey olmaz.
resize — kutuyu büyütün, düzeni değil
resize taşması olan kutularda çalışır. Günlük kullanım not alanı:
textarea.notes {
min-height: 6rem;
min-width: 16rem;
max-width: 100%;
resize: vertical;
overflow: auto;
}
Değerler: none, both, horizontal, vertical. visible dışında overflow ekleyin yoksa tutacak görünmeyebilir. Her karta resize: both serpmeyin. min-height / max-width alanı çökmekten veya patlamaktan korur.
Odak halkası olarak outline
Kutu modelinde outline kenarın dışında durur ve yer kaplamaz. UI çantasında aynı halkayı klavye odağı için tutarsınız — çoğu zaman :focus-visible ile, fare her tıklamada kutu çizmesin:
button.save:focus-visible {
outline: 3px solid #2563eb;
outline-offset: 3px;
}
button.save:focus:not(:focus-visible) {
outline: none;
}
Her denetimin eşit görünür bir yedeği yoksa küresel *:focus { outline: none; } göndermeyin. outline-offset halkayı komşuları büyütmeden kenardan uzaklaştırır. Bu border değildir (boyutu değiştirir) ve düğme etiketinde maske solması da değildir.
user-select — yanlışlıkla seçimi azaltın
Seçim bir özelliktir. Yalnızca çift tıklamanın mavi boyamaması gereken yerde kısın — araç çubuğu etiketi, sürükleme yongası — yazıda değil.
.toolbar-label {
user-select: none;
}
article.body {
user-select: text;
}
none vurgulamayı kapatır. text okunaklı varsayılandır. all bir tıklamada tüm öğeyi seçer. Eski WebKit’te önekler (-webkit-user-select) hâlâ çıkar. Yasal metin, fiyat veya hata iletisinde kopyalamayı kapatmayın.
caret-color — yazma çubuğunu boyayın
Caret alandaki yanıp sönen çubuktur. Markaya uydurun ama gizlemeyin:
input.email,
textarea.notes {
caret-color: #0f766e;
color: #0f172a;
}
caret-color: auto metin rengini izler. caret-color: transparent «temiz görünüm» için tuzaktır. Bu tüm sayfanın color’ı değildir, glifte mask-image de değildir.
appearance — yerel widget’ı yeniden giydirin
Tarayıcılar onay kutusu ve arama alanını yerel krom ile boyar. appearance: none (gerekirse -webkit-appearance: none) o deriyi soyar:
input.search {
appearance: none;
-webkit-appearance: none;
border: 1px solid #94a3b8;
border-radius: 0.5rem;
padding: 0.5rem 0.75rem;
}
input[type="checkbox"].tick {
appearance: none;
-webkit-appearance: none;
width: 1.15rem;
height: 1.15rem;
border: 2px solid #334155;
border-radius: 0.25rem;
}
none’dan sonra siz kenar, işaretli durum ve odak halkası borçlusunuz. Görünmez onay kutusu özel denetim değildir. Destek türe göre değişir; gerçek widget’ı deneyin. appearance maskeyi onarmaz, sütunları da değiştirmez.
UI, maske, sütun ve kutu outline’ı
📊 UI vs mask vs columns vs outline
| Tool | Job | Poor fit |
|---|---|---|
cursor / resize / caret-color / appearance |
Interaction chrome on controls | Stenciling a photo; newspaper columns |
user-select |
Limit highlight on chrome, not articles | Hiding copy people must paste |
outline + :focus-visible |
Keyboard focus ring (no layout space) | Replacing border math; fading labels with a mask |
mask-image |
Soft holes on one element’s pixels | Pointer shape; growing a textarea |
Multi-column (column-*) |
Fragment flowing text | Cursors, carets, native widget skin |
Optional Advanced sütunu nesir, maskeyi görsel için kullandı. Kullanıcı arayüzü denetim katmanıdır. Ayar formuna column-count veya gönder düğmesine mask-image formu «daha UI» yapmaz.
Neyi silmeyin
Tüm yerel ipuçlarını kaldırmayın. Kaydırma çubukları, caret ve odak halkaları ihtiyaç içindir. Denetim disabled ise gerçek disabled özniteliğiyle cursor: not-allowed, etiketi gizleyen maskeden daha sakindir.
.ok-ui {
cursor: pointer;
outline-offset: 2px;
}
.not-a-stencil {
/* don't: mask-image on the submit label to “soften” the click */
}
.not-a-newspaper {
/* don't: column-count on a login form to look advanced */
}
Sorun fotoğraf kenarıysa maskeye dönün. Uzun yazıysa sütunlara veya sıradan blok akışına. «Tıklanabilir hissetmiyor» ise süs filtresinden değil cursor ve gerçek denetimden başlayın.
Kendiniz deneyin
- Gerçek
<button>üzerinecursor: pointer,[disabled]üzerinenot-allowed. textarea’yaresize: vertical,min-height,overflow: autoverin.:focus-visibleoutline +outline-offset— Tab ile gidin.user-select: noneyalnız araç çubuğu yongasında; yazı seçilebilir kalsın.- Input’ta
caret-colorboyayın. Alanı maskelemeyin,column-countkoymayın.
Sık hatalar
- Bağlantı veya düğme olmayan metinde
cursor: pointer - Düzen kartları ve gezinti çubuğunda
resize: both :focus-visibleyedeği olmadan küreseloutline: none- Tüm sayfa, fiyat veya hatalarda
user-select: none - «Temiz görünüm» için
caret-color: transparent appearance: nonesonra kenar, işaret stili, odak halkası yok- Maske veya çoklu sütunu arayüz cilası sanmak
Özet
- Kullanıcı arayüzü CSS etkileşime işaret eder: imleç, resize, caret, yerel krom
cursordoğru söylemeli;resizealanındır, sayfa kabuğunun değil- Görünür odak halkası tutun;
user-selectvecaret-colorhafif dokunuş appearance: noneyalnızca widget’ı baştan stillendirirken- Ne maske şablonu ne gazete sütunu
- Optional Advanced sonra: 3D dönüşümler (
transforms-3d)
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek