Açık kullanıcı arayüzü girişiminin amacı, geliştiricilerin mükemmel kullanıcı deneyimleri oluşturmasını kolaylaştırmaktır. Bunun için geliştiricilerin karşılaştığı daha sorunlu kalıplarla mücadele etmeye çalışıyoruz. Bunu, daha iyi platform yerleşik API'ler ve bileşenler sağlayarak başarabiliriz.
Bu tür sorun alanlarından biri, Open UI'de "Pop-up'lar" olarak açıklanan pop-up'lardır.
Pop-up'ların uzun zamandır oldukça kutuplaştırıcı bir itibarı var. Bunun nedeni kısmen hem oluşturulma hem de dağıtılma şeklidir. Bu tür içerikleri iyi bir şekilde oluşturmak kolay değildir ancak özellikle zevkli bir şekilde kullanıldığında kullanıcıları belirli öğelere yönlendirerek veya sitenizdeki içeriklerden haberdar ederek çok değerli olabilirler.
Pop-up'lar oluştururken genellikle iki önemli sorunla karşılaşılır:
- İçeriğinizin geri kalanının üstüne uygun bir yere yerleştirildiğinden nasıl emin olursunuz.
- Erişilebilir hale getirme (klavye dostu, odaklanılabilir vb.).
Yerleşik Popover API'nin çeşitli hedefleri vardır. Bunların hepsinin temel hedefi, geliştiricilerin bu kalıbı oluşturmasını kolaylaştırmaktır. Bu hedeflerden bazıları şunlardır:
- Bir öğeyi ve alt öğelerini dokümanın geri kalanının üzerinde göstermeyi kolaylaştırır.
- Erişilebilir hale getirin.
- En yaygın davranışlar (hafif kapatma, tekil, yığın vb.) için JavaScript gerektirmez.
Pop-up'lar için tam spesifikasyonu OpenUI sitesinde bulabilirsiniz.
Tarayıcı uyumluluğu
Yerleşik Popover API'yi şu anda nerede kullanabilirsiniz? Bu özellik, makalenin yazıldığı tarih itibarıyla Chrome Canary'da "Deneysel web platformu özellikleri" işaretinin arkasında desteklenmektedir.
Bu işareti etkinleştirmek için Chrome Canary'i açıp chrome://flags
adresini ziyaret edin. Ardından, "Deneysel web platformu özellikleri" işaretini etkinleştirin.
Bu özelliği üretim ortamında test etmek isteyen geliştiriciler için bir Kaynak Deneme sürümü de mevcuttur.
Son olarak, API için geliştirilmekte olan bir polyfill vardır. github.com/oddbird/popup-polyfill adresindeki depoya göz atın.
Pop-up desteğini şu şekilde kontrol edebilirsiniz:
const supported = HTMLElement.prototype.hasOwnProperty("popover");
Mevcut çözümler
İçeriğinizi her şeyin üzerinde tanıtmak için şu anda ne yapabilirsiniz? Tarayıcınızda destekliyorsa HTML iletişim kutusu öğesini kullanabilirsiniz. Bu özelliği "Modal" formunda kullanmanız gerekir. Bunun için JavaScript'in etkin olması gerekir.
Dialog.showModal();
Erişilebilirlik konusunda dikkat edilmesi gereken bazı noktalar vardır. Örneğin, Safari 15.4 ve önceki sürümleri kullananlara hitap ediyorsanız a11y-dialog öğesini kullanmanız önerilir.
Ayrıca, pop-up, uyarı veya ipucu tabanlı birçok kitaplıktan birini de kullanabilirsiniz. Bunların çoğu benzer şekilde çalışır.
- Pop-up'ları göstermek için gövdeye bir kapsayıcı ekleyin.
- Diğer her şeyin üzerinde olacak şekilde biçimlendirin.
- Bir öğe oluşturup kapsayıcıya ekleyerek pop-up gösterme
- Popover öğesini DOM'dan kaldırarak gizleyin.
Bu, geliştiriciler için ek bir bağımlılık ve daha fazla karar gerektirir. Ayrıca, ihtiyacınız olan her şeyi sunan bir teklif bulmak için araştırma yapmanız gerekir. Popover API, ipuçları da dahil olmak üzere birçok senaryoyu desteklemeyi amaçlar. Amaç, tüm bu yaygın senaryoları ele alarak geliştiricilerin kendi deneyimlerini geliştirmeye odaklanabilmeleri için başka bir karar vermek zorunda kalmalarını önlemektir.
İlk pop-up'ınız
İhtiyacınız olan tek şey bu.
<div id="my-first-popover" popover>Popover Content!</div>
<button popovertoggletarget="my-first-popover">Toggle Popover</button>
Peki burada ne oluyor?
- Pop-up öğesini bir kapsayıcıya veya başka bir yere koymanız gerekmez. Varsayılan olarak gizlidir.
- Bu özelliğin görünmesi için JavaScript yazmanız gerekmez. Bu işlem
popovertoggletarget
özelliği tarafından yönetilir. - Göründüğünde en üst katmana yükseltilir. Bu, görüntü alanındaki
document
öğesinin üzerine yerleştirildiği anlamına gelir.z-index
öğesini yönetmeniz veya pop-up'ınızın DOM'daki yeri hakkında endişelenmeniz gerekmez. Kırpılmış atalarıyla birlikte DOM'un derinliklerine yerleştirilmiş olabilir. DevTools'u kullanarak şu anda hangi öğelerin en üst katmanda olduğunu da görebilirsiniz. Üst katman hakkında daha fazla bilgi için bu makaleyi inceleyin.
- "Hafif Kapatma" özelliğini kutudan çıkar çıkmaz kullanabilirsiniz. Yani pop-up'ı, pop-up'ın dışında bir yeri tıklamak, klavyeyle başka bir öğeye gitmek veya Esc tuşuna basmak gibi bir kapatma sinyali göndererek kapatabilirsiniz. Tekrar açıp deneyin.
Popover'ın avantajları neler? Örneği daha ayrıntılı inceleyelim. Sayfada bazı içeriklerin bulunduğu bu demoyu inceleyin.
Bu kayan işlem düğmesi sabit konuma ve yüksek z-index
değerine sahip.
.fab {
position: fixed;
z-index: 99999;
}
Pop-up içeriği DOM'a yerleştirilir ancak pop-up'ı açtığınızda sabit konum öğesinin üzerine çıkarılır. Herhangi bir stil ayarlamanıza gerek yoktur.
Pop-up'ın artık bir ::backdrop
sözde öğesine sahip olduğunu da fark edebilirsiniz. Üst katmandaki tüm öğeler, stil uygulanabilir bir ::backdrop
sözde öğesi alır. Bu örnekte, ::backdrop
öğesi azaltılmış alfa arka plan rengi ve temel içeriği bulanıklaştıran bir arka plan filtresiyle biçimlendirilmiştir.
Popover'a stil uygulama
Şimdi pop-up'ın stilini belirlemeye odaklanalım. Varsayılan olarak pop-up'ların sabit bir konumu ve uygulanmış bir dolgusu vardır. Ayrıca display: none
özelliği de vardır. Pop-up'ın gösterilmesi için bunu geçersiz kılabilirsiniz. Ancak bu, videoyu en üst katmana yükseltmez.
[popover] { display: block; }
Pop-up'ınızı nasıl tanıttığınızdan bağımsız olarak, bir pop-up'ı en üst katmana yükselttikten sonra, bunu yerleştirmeniz veya yerleştirmeniz gerekebilir. Üst katmanı hedefleyip aşağıdaki gibi bir işlem yapamazsınız:
:open {
display: grid;
place-items: center;
}
Varsayılan olarak, margin: auto
kullanılarak pop-up, görüntü alanının ortasına yerleştirilir. Ancak bazı durumlarda konumlandırma konusunda açık olmak isteyebilirsiniz. Örneğin:
[popover] {
top: 50%;
left: 50%;
translate: -50%;
}
CSS ızgara veya flexbox kullanarak pop-up'ınızın içindeki içeriği düzenlemek istiyorsanız bunu bir öğeye sarmalamak iyi bir fikir olabilir. Aksi takdirde, pop-up en üst katmanda olduğunda display
değerini değiştiren ayrı bir kural belirtmeniz gerekir. Varsayılan olarak ayarlandığında, display: none
geçersiz kılınarak varsayılan olarak gösterilir.
[popover]:open {
display: flex;
}
Bu denemeyi denediyseniz pop-up'ın artık açılıp kapandığını fark edeceksiniz. :open
sözde seçiciyi kullanarak pop-up'ları içeri ve dışarı aktarabilirsiniz. :open
sözde seçicisi, gösterilen (ve dolayısıyla üst katmanda) pop-up'larla eşleşir.
Bu örnekte, geçişi sağlamak için özel bir mülk kullanılmaktadır. Ayrıca pop-up'ın ::backdrop
bölümüne de geçiş uygulayabilirsiniz.
[popover] {
--hide: 1;
transition: transform 0.2s;
transform: translateY(calc(var(--hide) * -100vh))
scale(calc(1 - var(--hide)));
}
[popover]::backdrop {
transition: opacity 0.2s;
opacity: calc(1 - var(--hide, 1));
}
[popover]:open::backdrop {
--hide: 0;
}
Burada, geçişleri ve animasyonları hareket için bir medya sorgusu altında gruplandırmanız önerilir. Bu, zamanlamanızı da korumanıza yardımcı olabilir. Bunun nedeni, özel mülk aracılığıyla popover
ile ::backdrop
arasında değer paylaşamamanızdır.
@media(prefers-reduced-motion: no-preference) {
[popover] { transition: transform 0.2s; }
[popover]::backdrop { transition: opacity 0.2s; }
}
Bu noktaya kadar, pop-up göstermek için popovertoggletarget
işlevinin kullanıldığını gördünüz. Bu istemi kapatmak için "Işık kapatma" yöntemini kullanıyoruz. Ancak kullanabileceğiniz popovershowtarget
ve popoverhidetarget
özellikleri de vardır. Pop-up'a gizleyen bir düğme ekleyelim ve açma/kapatma düğmesini popovershowtarget
olarak değiştirelim.
<div id="code-popover" popover>
<button popoverhidetarget="code-popover">Hide Code</button>
</div>
<button popovershowtarget="code-popover">Reveal Code</button>
Daha önce de belirtildiği gibi, Popover API yalnızca geçmişteki pop-up anlayışımızı kapsamaz. Bildirimler, menüler, ipuçları gibi tüm senaryo türleri için içerik oluşturabilirsiniz.
Bu senaryolardan bazıları farklı etkileşim düzenleri gerektirir. Fareyle üzerine gelme gibi etkileşimler. popoverhovertarget
özelliğinin kullanımı deneme aşamasındadır ancak şu anda uygulanmamaktadır.
<div popoverhovertarget="hover-popover">Hover for Code</div>
Amaç, fareyle bir öğenin üzerine gelerek hedefi göstermektir. Bu davranış, CSS özellikleri aracılığıyla yapılandırılabilir. Bu CSS özellikleri, fareyle pop-up'ın tepki verdiği bir öğenin üzerine gelip gelmediği zaman aralığını tanımlar. Denemede kullanılan varsayılan davranışta, :hover
için açık bir 0.5s
yapıldıktan sonra bir pop-up gösteriliyordu. Ardından, kapatmak için hafif bir kapatma veya başka bir pop-up'ın açılması gerekir (Bu konu hakkında daha fazla bilgiyi aşağıda bulabilirsiniz). Bunun nedeni, pop-up gizleme süresinin Infinity
olarak ayarlanmasıdır.
Bu süre zarfında, bu işlevi doldurmak için JavaScript kullanabilirsiniz.
let hoverTimer;
const HOVER_TRIGGERS = document.querySelectorAll("[popoverhovertarget]");
const tearDown = () => {
if (hoverTimer) clearTimeout(hoverTimer);
};
HOVER_TRIGGERS.forEach((trigger) => {
const popover = document.querySelector(
`#${trigger.getAttribute("popoverhovertarget")}`
);
trigger.addEventListener("pointerenter", () => {
hoverTimer = setTimeout(() => {
if (!popover.matches(":open")) popover.showPopOver();
}, 500);
trigger.addEventListener("pointerleave", tearDown);
});
});
Bir öğeyi belirgin bir fareyle üzerine gelme penceresi olarak ayarlamanın avantajı, kullanıcının işleminin kasıtlı olmasını (ör. kullanıcının işaretçisini bir hedefin üzerine getirmesi) sağlamasıdır. Kullanıcıların amacı bu olmadığı sürece pop-up'ı göstermek istemiyoruz.
Pencereyi 0.5s
olarak ayarlayarak fareyle hedefin üzerine geleyebileceğiniz bu demoyu deneyin.
Yaygın kullanım alanlarını ve örnekleri incelemeden önce birkaç noktayı ele alalım.
Popover türleri
JavaScript olmayan etkileşim davranışını ele aldık. Peki pop-up davranışının tamamına ne demeli? "Hafif kapatma"yı istemiyorsanız ne olur? Yoksa pop-up'larınıza tekil bir kalıp uygulamak mı istiyorsunuz?
Popover API, davranışları farklı olan üç tür pop-up belirtmenize olanak tanır.
[popover=auto]/[popover]
:
- İç içe yerleştirme desteği. Bu, yalnızca DOM'ye iç içe yerleştirileceği anlamına gelmez. Ancestral popover'ın tanımı şu şekildedir:
- DOM konumuna göre ilişkili (alt öğe).
popovertoggletarget
,popovershowtarget
vb. gibi alt öğelerde özellikleri tetikleyerek ilgili öğeleri gösterebilirsiniz.anchor
özelliği ile ilişkili (Geliştirme CSS Anchoring API'si altında).
- Işık kapatma.
- Açılan, üste ait pop-up'lar olmayan diğer pop-up'ları kapatır. Ancestral popover'larla iç içe yerleştirmenin işleyiş şeklini vurgulayan aşağıdaki demoyu oynatın.
popoverhidetarget
/popovershowtarget
örneklerindeki bazılarınıpopovertoggletarget
olarak değiştirmenin ne gibi değişikliklere yol açtığını öğrenin. - Birini hafifçe reddettiğinizde tümü reddedilir ancak gruptaki bir öğeyi reddettiğinizde yalnızca gruptaki kendisinden yukarıdaki öğeler silinir.
[popover=manual]
:
- Diğer pop-up'ları kapatmaz.
- Işık kapatılamaz.
- Tetikleyici öğe veya JavaScript aracılığıyla açık bir şekilde kapatmayı gerektirir.
JavaScript API
Pop-up'larınız üzerinde daha fazla kontrole ihtiyacınız olduğunda JavaScript'i kullanabilirsiniz. Hem showPopover
hem de hidePopover
yöntemi alırsınız. Ayrıca dinleyeceğiniz popovershow
ve popoverhide
etkinliğiniz var:
Pop-up gösterme
js
popoverElement.showPopover()
Pop-up'ı gizleme:
popoverElement.hidePopover()
Gösterilen pop-up'ı dinleyin:
popoverElement.addEventListener('popovershow', doSomethingWhenPopoverShows)
Bir pop-up gösterildiğini dinleyip gösterilmesini iptal edin:
popoverElement.addEventListener('popovershow',event => {
event.preventDefault();
console.warn(‘We blocked a popover from being shown’);
})
Pop-up'ın gizlendiğini dinleyin:
popoverElement.addEventListener('popoverhide', doSomethingWhenPopoverHides)
Gizlenen bir pop-up'ı iptal edemezsiniz:
popoverElement.addEventListener('popoverhide',event => {
event.preventDefault();
console.warn("You aren't allowed to cancel the hiding of a popover");
})
Bir pop-up'ın üst katmanda olup olmadığını kontrol edin:
popoverElement.matches(':open')
Bu, daha az yaygın olan bazı senaryolarda ekstra güç sağlar. Örneğin, bir süre işlem yapılmadığında pop-up gösterin.
Bu demoda sesli pop-up'lar bulunduğundan sesleri çalmak için JavaScript'e ihtiyacımız var. Tıklandığında pop-up'ı gizliyoruz, sesi çalıyoruz ve ardından tekrar gösteriyoruz.
Erişilebilirlik
Popover API'de erişilebilirlik ön plandadır. Erişilebilirlik eşlemeleri, pop-up'ı gerektiğinde tetikleyici öğesiyle ilişkilendirir. Bu, popovertoggletarget
gibi tetikleyici özelliklerden birini kullandığınızı varsayarak aria-haspopup
gibi aria-*
özelliklerini belirtmeniz gerekmediği anlamına gelir.
Odak yönetimi için odağı bir pop-up'ın içindeki bir öğeye taşımak üzere otomatik odaklama özelliğini kullanabilirsiniz. Bu, bir iletişim kutusuyla aynıdır ancak odaklanmayı geri döndürmede fark vardır. Bunun nedeni, hafif kapatma işlemidir. Çoğu durumda, pop-up'ın kapatılması odağın daha önce odaklanan öğeye dönmesine neden olur. Ancak hafif kapatma işleminde, odak alabiliyorsa tıklanan öğeye taşınır. Açıklayıcıdaki odak yönetimiyle ilgili bölüme göz atın.
Çalıştığını görmek için bu demonun "tam ekran sürümünü" açmanız gerekir.
Bu demoda, odaklanan öğe yeşil bir dış çizgi alır. Klavyenizle arayüzde gezinmeyi deneyin. Bir pop-up kapatıldığında odağın nereye döndürüldüğünü not edin. Sekme tuşuna bastığınızda pop-up'ın kapandığını da fark edebilirsiniz. Bu durum tasarım gereğidir. Pop-up'lar odaklı yönetime sahip olsalar da odağı yakalamazlar. Klavye gezinme ise odak pop-up'tan çıktığında kapatma sinyalini tanımlar.
Demirleme (yapım aşamasında)
Pop-up'lar söz konusu olduğunda, dikkat edilmesi gereken karmaşık bir model, öğeyi tetikleyiciye sabitlemektir. Örneğin, bir ipucu tetikleyicisinin üzerinde gösterilecek şekilde ayarlanmışsa ancak dokümanda kaydırma yapılırsa. Bu ipucu, görüntü alanı tarafından kesilebilir. Bu sorunu çözmek için "Yüzen kullanıcı arayüzü" gibi mevcut JavaScript teklifleri vardır. Bu durumun önüne geçmeniz ve istediğiniz bir konum sırasını kullanabilmeniz için ipuçlarını yeniden konumlandırırlar.
Ancak bunu stillerinizle tanımlayabilmenizi istiyoruz. Bu sorunun üstesinden gelmek için Popover API'nin yanı sıra geliştirme aşamasında olan tamamlayıcı bir API vardır. "CSS Anchor Konumlandırma" API'si, öğeleri diğer öğelere bağlamanıza olanak tanır ve bunu, öğeleri görüntü alanı tarafından kesilmeyecekleri şekilde yeniden konumlandıracak şekilde yapar.
Bu demo, mevcut haliyle Sabitleme API'sini kullanmaktadır. Teknenin konumu, ankrajın görüntü alanındaki konumuna göre değişir.
Aşağıda, bu demonun çalışmasını sağlayan CSS snippet'i verilmiştir. JavaScript gerekmez.
.anchor {
--anchor-name: --anchor;
}
.anchored {
position: absolute;
position-fallback: --compass;
}
@position-fallback --compass {
@try {
bottom: anchor(--anchor top);
left: anchor(--anchor right);
}
@try {
top: anchor(--anchor bottom);
left: anchor(--anchor right);
}
}
Özellikleri buradan inceleyebilirsiniz. Bu API için bir çoklu dolgu da olacaktır.
Örnekler
Artık pop-up'ın neler sunduğu ve nasıl sunduğu hakkında bilgi sahibisiniz. Şimdi bazı örnekleri inceleyelim.
Bildirimler
Bu demoda "Panoya kopyala" bildirimi gösterilmektedir.
[popover=manual]
kullanılır.- İşlemde
showPopover
ile pop-up göster. 2000ms
zaman aşımından sonrahidePopover
ile gizleyin.
Tostlar
Bu demoda, durum mesajı stilindeki bildirimleri göstermek için üst katman kullanılır.
- Kapsayıcı olarak
manual
türüne sahip bir pop-up kullanılır. - Yeni bildirimler pop-up'a eklenir ve pop-up gösterilir.
- Tıklandığında web animasyonları API'si ile ve DOM'den kaldırılırlar.
- Gösterilecek pop-up yoksa pop-up gizlenir.
İç içe yerleştirilmiş menü
Bu demoda, iç içe yerleştirilmiş bir gezinme menüsünün nasıl çalışabileceği gösterilmektedir.
- İç içe yerleştirilmiş pop-up'lara izin verdiği için
[popover=auto]
kullanın. - Klavyeyle gezinmek için her açılır menünün ilk bağlantısında
autofocus
simgesini kullanın. - Bu, CSS Anchoring API için mükemmel bir adaydır. Ancak bu demo için özel mülkleri kullanarak konumları güncellemek üzere az miktarda JavaScript kullanabilirsiniz.
const ANCHOR = (anchor, anchored) => () => {
const { top, bottom, left, right } = anchor.getBoundingClientRect();
anchored.style.setProperty("--top", top);
anchored.style.setProperty("--right", right);
anchored.style.setProperty("--bottom", bottom);
anchored.style.setProperty("--left", left);
};
PRODUCTS_MENU.addEventListener("popovershow", ANCHOR(PRODUCT_TARGET, PRODUCTS_MENU));
Bu demoda autofocus
kullanıldığı için klavye gezinme için "tam ekran görünümünde" açılması gerektiğini unutmayın.
Medya pop-up'ı
Bu demoda, nasıl pop medyası açabileceğiniz gösterilmektedir.
- Işığı kapatmak için
[popover=auto]
kullanılır. - JavaScript, videonun
play
etkinliğini dinler ve videoyu gösterir. - Pop-up'lar
popoverhide
etkinliği videoyu duraklatır.
Wiki stili pop-up'lar
Bu demolarda, medya içeren satır içi içerik ipuçları nasıl oluşturabileceğiniz gösterilmektedir.
[popover=auto]
kullanılır. Birini göstermek, atalara ait olmadığı için diğerini gizler.- JavaScript ile
pointerenter
'te gösterilir. - CSS Anchoring API için mükemmel bir aday daha.
Gezinme Çekmecesi
Bu demoda, pop-up kullanılarak bir gezinme çekmecesi oluşturulur.
- Işığı kapatmak için
[popover=auto]
kullanılır. - İlk gezinme öğesine odaklanmak için
autofocus
öğesini kullanır.
Arka planları yönetme
Bu demoda, yalnızca bir ::backdrop
'ün görünür olmasını istediğiniz birden fazla pop-up için arka planları nasıl yönetebileceğiniz gösterilmektedir.
- Görünen pop-up'ların listesini tutmak için JavaScript'i kullanın.
- Üst katmandaki en alttaki pop-up'a bir sınıf adı uygulayın.
Özel imleç pop-up'ı
Bu demoda, bir canvas
öğesini üst katmana taşımak ve özel bir imleci göstermek için popover
öğesinin nasıl kullanılacağı gösterilmektedir.
showPopover
ve[popover=manual]
ilecanvas
'ü üst katmana taşıyın.- Diğer pop-up'lar açıldığında
canvas
pop-up'ını gizleyip göstererek en üstte olduğundan emin olun.
İşlem sayfası pop-up'ı
Bu demoda, bir pop-up'ı işlem sayfası olarak nasıl kullanabileceğiniz gösterilmektedir.
display
geçersiz kılınacak şekilde pop-up'ın varsayılan olarak gösterilmesini sağlayın.- İşlem sayfası, pop-up tetikleyiciyle açılır.
- Pop-up gösterildiğinde, en üst katmana yükseltilir ve görünüme dönüştürülür.
- Işıklı reddi, ürünü iade etmek için kullanılabilir.
Klavyeyle etkinleştirilen pop-up
Bu demoda, komut paleti tarzı kullanıcı arayüzünde pop-up'ı nasıl kullanabileceğiniz gösterilmektedir.
- Pop-up'ı göstermek için cmd + j tuşlarını kullanın.
input
,autofocus
ile odaklanmış.- Açılır liste kutusu, ana girişin altında konumlandırılmış ikinci bir
popover
öğesidir. - Açılır menü yoksa hafif reddediş paleti kapatır.
- Anchoring API için başka bir aday
Zamanlı pop-up
Bu demoda, dört saniye sonra etkin olmama durumuyla ilgili bir pop-up gösterilir. Oturum kapatma penceresi göstermek için genellikle kullanıcı hakkında güvenli bilgiler barındıran uygulamalarda kullanılan bir kullanıcı arayüzü kalıbı.
- Belirli bir süre boyunca işlem yapılmadığında pop-up'ı göstermek için JavaScript kullanın.
- Pop-up'ta zamanlayıcıyı sıfırlayın.
Ekr.Koruyucu
Önceki demoya benzer şekilde, sitenize biraz eğlence katmak için ekran koruyucu ekleyebilirsiniz.
- Belirli bir süre boyunca işlem yapılmadığında pop-up'ı göstermek için JavaScript kullanın.
- Zamanlayıcıyı gizlemek ve sıfırlamak için ışığı kapatın.
İmleçle takip
Bu demoda, giriş imlecini takip eden bir pop-up'ın nasıl oluşturulabileceği gösterilmektedir.
- Seçim, önemli etkinlik veya özel karakter girişine göre pop-up'ı göster.
- Pop-up konumunu kapsamlı özel özelliklerle güncellemek için JavaScript kullanın.
- Bu kalıp, gösterilen içerik ve erişilebilirlik açısından dikkatli bir şekilde düşünülmelidir.
- Genellikle metin düzenleme kullanıcı arayüzünde ve etiketleyebileceğiniz uygulamalarda görülür.
Kayan işlem düğmesi menüsü
Bu demoda, JavaScript olmadan yüzen işlem düğmesi menüsü uygulamak için pop-up'ı nasıl kullanabileceğiniz gösterilmektedir.
showPopover
yöntemiylemanual
türü pop-up'ı tanıtın. Bu ana düğmedir.- Menü, ana düğmenin hedefi olan başka bir pop-up'tır.
- Menü
popovertoggletarget
ile açıldı. - Gösterilen ilk menü öğesine odaklanmak için
autofocus
simgesini kullanın. - Hafif kapatma işlemi menüyü kapatır.
- Simge bükülmesinde
:has()
kullanılıyor.:has()
hakkında daha fazla bilgiyi bu makalede bulabilirsiniz.
İşte bu kadar.
Bu, Açık Kullanıcı Arayüzü girişimi kapsamında kullanıma sunulacak pop-up'a giriş niteliğinde bir açıklamadır. Mantıklı bir şekilde kullanıldığında web platformuna harika bir katkı olacaktır.
Açık kullanıcı arayüzü bölümüne göz atın. Pop-up açıklama, API geliştikçe güncellenir. Tüm demolar için bu koleksiyonu burada bulabilirsiniz.
Ziyaretiniz için teşekkürler.
Unsplash'taki Madison Oren tarafından çekilen fotoğraf