popovers
iOS'ta bulunanlar gibi Bootstrap açılır pencerelerini sitenizdeki herhangi bir öğeye eklemek için belgeler ve örnekler.
genel bakış
Popover eklentisini kullanırken bilmeniz gerekenler:
- Popover'lar, konumlandırma için 3. taraf kitaplığı Popper'a güvenir . Popper'ların çalışması için popper.min.js'yi bootstrap.js'den önce eklemeli veya Popper içeren
bootstrap.bundle.min.js
/ kullanmalısınız!bootstrap.bundle.js
- Popover'lar, araç ipucu eklentisini bir bağımlılık olarak gerektirir.
- Popover'lar performans nedenleriyle etkinleştirilir, bu nedenle bunları kendiniz başlatmanız gerekir .
- Sıfır uzunluk
title
vecontent
değerler hiçbir zaman bir popover göstermez. container: 'body'
Daha karmaşık bileşenlerde (giriş gruplarımız, düğme gruplarımız vb.) oluşturma sorunlarını önlemek için belirtin .- Gizli öğelerde popover'ları tetiklemek işe yaramaz.
.disabled
veya öğeleri içindisabled
açılır öğeler, bir sarmalayıcı öğede tetiklenmelidir.- Birden çok çizgiyi saran bağlantılardan tetiklendiğinde, açılır öğeler bağlantıların toplam genişliği arasında ortalanır. Bu davranıştan kaçınmak
.text-nowrap
için s üzerinde kullanın .<a>
- Popover'lar, karşılık gelen öğeleri DOM'dan kaldırılmadan önce gizlenmelidir.
- Bir gölge DOM içindeki bir öğe sayesinde popover'lar tetiklenebilir.
prefers-reduced-motion
ortam sorgusuna bağlıdır. Erişilebilirlik belgelerimizin azaltılmış hareket bölümüne bakın
.
Popover'ların bazı örneklerle nasıl çalıştığını görmek için okumaya devam edin.
Örnek: Her yerde açılır pencereleri etkinleştir
Bir sayfadaki tüm açılır pencereleri başlatmanın bir yolu, onları data-bs-toggle
özniteliklerine göre seçmektir:
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
Örnek: container
Seçeneği kullanma
Bir üst öğede, bir açılır öğeye müdahale eden bazı stilleriniz olduğunda, container
açılır öğenin HTML'sinin bunun yerine o öğenin içinde görünmesi için bir özel belirtmek isteyeceksiniz.
var popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
container: 'body'
})
Örnek
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
dört yön
Dört seçenek mevcuttur: üst, sağ, alt ve sola hizalı. RTL'de Bootstrap kullanılırken yönergeler yansıtılır.
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover">
Popover on left
</button>
Sonraki tıklamada kapat
focus
Kullanıcının geçiş öğesinden farklı bir öğeyi bir sonraki tıklamasında açılır pencereleri kapatmak için tetikleyiciyi kullanın .
Bir sonraki tıklamada kapatma için özel işaretleme gerekli
Uygun çapraz tarayıcı ve platformlar arası davranış için etiketi değil etiketi kullanmanız ve <a>
ayrıca bir<button>
öznitelik eklemeniz gerekir tabindex
.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
var popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), {
trigger: 'focus'
})
Devre dışı bırakılmış öğeler
Özniteliğe sahip öğeler disabled
etkileşimli değildir, yani kullanıcılar bir açılır pencereyi (veya araç ipucunu) tetiklemek için üzerine gelemez veya tıklayamaz. Geçici bir çözüm olarak, açılır pencereyi bir sarmalayıcıdan tetiklemek isteyeceksiniz <div>
veya <span>
, ideal olarak tabindex="0"
.
Devre dışı bırakılmış popover tetikleyicileri için, popover'ın, devre dışı bırakılmış bir öğeye tıklamayıdata-bs-trigger="hover focus"
beklemeyebilecekleri için kullanıcılarınıza anında görsel geri bildirim olarak görünmesini de tercih edebilirsiniz .
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
küstah
Değişkenler
$popover-font-size: $font-size-sm;
$popover-bg: $white;
$popover-max-width: 276px;
$popover-border-width: $border-width;
$popover-border-color: rgba($black, .2);
$popover-border-radius: $border-radius-lg;
$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow: $box-shadow;
$popover-header-bg: shade-color($popover-bg, 6%);
$popover-header-color: $headings-color;
$popover-header-padding-y: .5rem;
$popover-header-padding-x: $spacer;
$popover-body-color: $body-color;
$popover-body-padding-y: $spacer;
$popover-body-padding-x: $spacer;
$popover-arrow-width: 1rem;
$popover-arrow-height: .5rem;
$popover-arrow-color: $popover-bg;
$popover-arrow-outer-color: fade-in($popover-border-color, .05);
kullanım
JavaScript aracılığıyla açılır pencereleri etkinleştirin:
var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)
Popover'ların klavye ve yardımcı teknoloji kullanıcıları için çalışmasını sağlama
Klavye kullanıcılarının açılır pencerelerinizi etkinleştirmesine izin vermek için, bunları yalnızca geleneksel olarak klavye odaklı ve etkileşimli (bağlantılar veya form denetimleri gibi) HTML öğelerine eklemelisiniz. <span>
Nitelik eklenerek isteğe bağlı HTML öğeleri (s gibi ) odaklanabilir hale getirilebilse de tabindex="0"
, bu, klavye kullanıcıları için etkileşimli olmayan öğeler üzerinde potansiyel olarak can sıkıcı ve kafa karıştırıcı sekme durakları ekleyecektir ve çoğu yardımcı teknoloji şu anda bu durumda açılır pencerenin içeriğini duyurmamaktadır. . Ek olarak, popover'larınız için yalnızca tetikleyici olarak güvenmeyin hover
, çünkü bu, klavye kullanıcıları için tetiklenmelerini imkansız hale getirecektir.
Seçeneği olan açılır pencerelere zengin, yapılandırılmış HTML ekleyebiliyor olsanız da, html
aşırı miktarda içerik eklemekten kaçınmanızı şiddetle tavsiye ederiz. Popover'ların şu anda çalışma şekli, bir kez görüntülendiğinde içeriğinin aria-describedby
öznitelikle tetikleyici öğeye bağlanmasıdır. Sonuç olarak, popover'ın içeriğinin tamamı, yardımcı teknoloji kullanıcılarına uzun, kesintisiz bir akış olarak duyurulacak.
Ek olarak, açılır pencerenize etkileşimli denetimler (form öğeleri veya bağlantılar gibi) dahil etmek mümkün olsa da (bu öğeleri allowList
izin verilen niteliklere ve etiketlere ekleyerek), şu anda açılır pencerenin klavye odak sırasını yönetmediğini unutmayın. Bir klavye kullanıcısı bir açılır pencereyi açtığında, odak tetikleyici öğe üzerinde kalır ve açılır pencere genellikle belgenin yapısındaki tetikleyiciyi hemen takip etmediğinden, ilerlemenin/basmanın garantisi yoktur.TABbir klavye kullanıcısını popover'ın kendisine taşır. Kısacası, bir popover'a basitçe etkileşimli kontroller eklemek, klavye kullanıcıları ve yardımcı teknolojilerin kullanıcıları için bu kontrolleri erişilemez/kullanılamaz hale getirebilir veya en azından mantıksız bir genel odak düzeni oluşturabilir. Bu durumlarda, bunun yerine kalıcı bir iletişim kutusu kullanmayı düşünün.
Seçenekler
Seçenekler, veri öznitelikleri veya JavaScript aracılığıyla iletilebilir. Veri öznitelikleri için, seçenek adını olduğu data-bs-
gibi ekleyin data-bs-animation=""
. Seçenekleri veri öznitelikleri aracılığıyla geçirirken, seçenek adının case tipini camelCase'den kebab-case olarak değiştirdiğinizden emin olun. Örneğin, data-bs-customClass="beautifier"
kullanmak yerine data-bs-custom-class="beautifier"
.
sanitize
,
sanitizeFn
, ve
allowList
seçeneklerinin veri öznitelikleri kullanılarak sağlanamayacağını unutmayın.
İsim | Tip | Varsayılan | Tanım |
---|---|---|---|
animation |
boole | true |
Popover'a bir CSS solma geçişi uygulayın |
container |
dize | eleman | yanlış | false |
Popover'ı belirli bir öğeye ekler. Örnek: |
content |
dize | eleman | işlev | '' |
Bir fonksiyon verilirse, |
delay |
sayı | nesne | 0 |
Popover'ı (ms) gösterme ve gizleme gecikmesi - manuel tetik tipi için geçerli değildir Bir numara verilirse, her iki gizleme/gösterme için gecikme uygulanır. Nesne yapısı: |
html |
boole | false |
Popover'a HTML ekleyin. Yanlışsa innerText , DOM'a içerik eklemek için özellik kullanılacaktır. XSS saldırılarından endişe ediyorsanız metin kullanın. |
placement |
dize | işlev | 'right' |
Popover nasıl konumlandırılır - auto | üst | alt | sol | Sağ. Belirtildiğinde, popover'ı dinamik olarak yeniden yönlendirir Yerleşimi belirlemek için bir işlev kullanıldığında, ilk argüman olarak popover DOM düğümü ve ikinci argüman olarak tetikleyici öğe DOM düğümü ile çağrılır. Bağlam |
selector |
dize | yanlış | false |
Bir seçici sağlanırsa, popover nesneleri belirtilen hedeflere devredilecektir. Pratikte bu, dinamik HTML içeriğinin açılır pencerelerin eklenmesini sağlamak için kullanılır. Buna ve bilgilendirici bir örneğe bakın . |
template |
sicim | '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
Popover oluştururken kullanılacak temel HTML. Popover'lar . Popover'lar .
En dıştaki sarmalayıcı öğenin |
title |
dize | eleman | işlev | '' |
Bir fonksiyon verilirse, |
trigger |
sicim | 'click' |
Popover nasıl tetiklenir - tıklayın | üzerine gelin | odak | Manuel. Birden çok tetikleyici iletebilirsiniz; boşlukla ayırın. manual başka bir tetikleyici ile birleştirilemez. |
fallbackPlacements |
dizi | ['top', 'right', 'bottom', 'left'] |
Dizideki yerleşimlerin bir listesini sağlayarak (tercih sırasına göre) yedek yerleşimleri tanımlayın. Daha fazla bilgi için Popper'ın davranış belgelerine bakın. |
boundary |
dize | eleman | 'clippingParents' |
Popover'ın taşma kısıtlaması sınırı (yalnızca Popper'ın önlemeOverflow değiştiricisi için geçerlidir). Varsayılan olarak 'clippingParents' bir HTMLElement referansını kabul eder ve kabul edebilir (yalnızca JavaScript aracılığıyla). Daha fazla bilgi için Popper'ınDetectOverflow belgelerine bakın . |
customClass |
dize | işlev | '' |
Gösterildiğinde popover'a sınıflar ekleyin. Bu sınıfların, şablonda belirtilen sınıflara ek olarak ekleneceğini unutmayın. Birden çok sınıf eklemek için bunları boşluklarla ayırın: Ek sınıf adları içeren tek bir dize döndürmesi gereken bir işlevi de iletebilirsiniz. |
sanitize |
boole | true |
Temizlemeyi etkinleştirin veya devre dışı bırakın. Etkinleştirilirse 'template' , 'content' seçenekler 'title' sterilize edilecektir. JavaScript belgelerimizdeki dezenfektan bölümüne bakın . |
allowList |
nesne | Varsayılan değer | İzin verilen öznitelikleri ve etiketleri içeren nesne |
sanitizeFn |
boş | işlev | null |
Burada kendi sterilize etme işlevinizi sağlayabilirsiniz. Sanitasyon yapmak için özel bir kitaplık kullanmayı tercih ediyorsanız bu yararlı olabilir. |
offset |
dizi | dize | işlev | [0, 8] |
Popover'ın hedefine göre ofseti. Aşağıdaki gibi virgülle ayrılmış değerlerle veri özniteliklerinde bir dize iletebilirsiniz: Ofseti belirlemek için bir fonksiyon kullanıldığında, ilk argümanı olarak popper yerleşimini, referansı ve popper rect'lerini içeren bir nesne ile çağrılır. Tetikleyici öğe DOM düğümü, ikinci argüman olarak iletilir. İşlev, iki sayı içeren bir dizi döndürmelidir: . Daha fazla bilgi için Popper'ın ofset belgelerine bakın . |
popperConfig |
boş | nesne | işlev | null |
Bootstrap'in varsayılan Popper yapılandırmasını değiştirmek için, Popper'ın yapılandırmasına bakın . Popper konfigürasyonunu oluşturmak için bir fonksiyon kullanıldığında, Bootstrap'in varsayılan Popper konfigürasyonunu içeren bir nesne ile çağrılır. Varsayılanı kendi yapılandırmanızla kullanmanıza ve birleştirmenize yardımcı olur. İşlev, Popper için bir yapılandırma nesnesi döndürmelidir. |
Bireysel popover'lar için veri öznitelikleri
Bireysel popover'lar için seçenekler alternatif olarak yukarıda açıklandığı gibi veri öznitelikleri kullanılarak belirlenebilir.
ile işlevi kullanmapopperConfig
var popover = new bootstrap.Popover(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
yöntemler
Asenkron yöntemler ve geçişler
Tüm API yöntemleri eşzamansızdır ve bir geçiş başlatır . Geçiş başlar başlamaz ancak bitmeden arayan kişiye geri dönerler . Ek olarak, geçiş yapan bir bileşen üzerindeki bir yöntem çağrısı yoksayılacaktır .
göstermek
Bir öğenin popover'ını ortaya çıkarır. Popover fiilen gösterilmeden önce (yani shown.bs.popover
olay meydana gelmeden önce) arayana geri döner. Bu, popover'ın "manuel" tetiklenmesi olarak kabul edilir. Başlığı ve içeriği sıfır uzunlukta olan popover'lar hiçbir zaman görüntülenmez.
myPopover.show()
saklamak
Bir öğenin açılır penceresini gizler. Popover fiilen gizlenmeden (yani hidden.bs.popover
olay meydana gelmeden önce) arayana geri döner. Bu, popover'ın "manuel" tetiklenmesi olarak kabul edilir.
myPopover.hide()
geçiş
Bir öğenin açılır penceresini değiştirir. Popover fiilen gösterilmeden veya gizlenmeden (yani shown.bs.popover
veya hidden.bs.popover
olayı gerçekleşmeden önce) arayana geri döner. Bu, popover'ın "manuel" tetiklenmesi olarak kabul edilir.
myPopover.toggle()
elden çıkarmak
Bir öğenin açılır penceresini gizler ve yok eder (DOM öğesinde depolanan verileri kaldırır). Temsilci kullanan (seçenek kullanılarak oluşturulan) popover'lar, alttan gelen selector
tetikleyici öğelerde tek tek yok edilemez.
myPopover.dispose()
etkinleştirme
Bir öğenin popover'ına gösterilme yeteneği verir. Popover'lar varsayılan olarak etkindir.
myPopover.enable()
devre dışı bırakmak
Bir öğenin popover'ının gösterilmesi yeteneğini kaldırır. Popover yalnızca yeniden etkinleştirildiğinde gösterilebilir.
myPopover.disable()
toggleEnabled
Bir öğenin açılır penceresinin gösterilme veya gizlenme özelliğini değiştirir.
myPopover.toggleEnabled()
Güncelleme
Bir öğenin açılır penceresinin konumunu günceller.
myPopover.update()
getInstance
Bir DOM öğesiyle ilişkili popover örneğini almanızı sağlayan statik yöntem
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
getOrCreateInstance
Bir DOM öğesiyle ilişkili popover örneğini almanıza veya başlatılmamış olması durumunda yeni bir tane oluşturmanıza izin veren statik yöntem
var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance
Olaylar
Etkinlik tipi | Tanım |
---|---|
show.bs.popover | Bu olay, show örnek yöntemi çağrıldığında hemen tetiklenir. |
Gösterilen.bs.popover | Bu olay, açılır pencere kullanıcıya görünür hale getirildiğinde tetiklenir (CSS geçişlerinin tamamlanmasını bekler). |
hide.bs.popover | hide Bu olay, örnek yöntemi çağrıldığında hemen tetiklenir . |
gizli.bs.popover | Bu olay, açılır pencerenin kullanıcıdan gizlenmesi bittiğinde tetiklenir (CSS geçişlerinin tamamlanmasını bekler). |
eklenen.bs.popover | Bu olay, show.bs.popover popover şablonu DOM'a eklendiğinde olaydan sonra tetiklenir. |
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
// do something...
})