ป๊อปโอเวอร์
เอกสารประกอบและตัวอย่างสำหรับการเพิ่ม Bootstrap popovers เช่นที่พบใน iOS ไปยังองค์ประกอบใดๆ บนไซต์ของคุณ
ภาพรวม
สิ่งที่ต้องรู้เมื่อใช้ปลั๊กอินป๊อปโอเวอร์:
- Popovers อาศัย Popperห้องสมุดบุคคลที่สามสำหรับการวางตำแหน่ง คุณต้องใส่popper.min.jsก่อน
bootstrap.js
หรือใช้อันbootstrap.bundle.min.js
ที่มี Popper - Popovers ต้องการปลั๊กอิน popoverเป็นการพึ่งพา
- Popovers เลือกใช้ด้วยเหตุผลด้านประสิทธิภาพ ดังนั้นคุณต้องเริ่มต้นมันเอง
- ความยาวเป็นศูนย์
title
และcontent
ค่าจะไม่แสดงป๊อปโอเวอร์ - ระบุ
container: 'body'
เพื่อหลีกเลี่ยงปัญหาการแสดงผลในองค์ประกอบที่ซับซ้อนมากขึ้น (เช่น กลุ่มอินพุต กลุ่มปุ่ม ฯลฯ) - ทริกเกอร์ป๊อปอัปในองค์ประกอบที่ซ่อนอยู่จะไม่ทำงาน
- ต้องทริกเกอร์ป๊อปโอเวอร์สำหรับ
.disabled
หรือ องค์ประกอบในองค์ประกอบแรปเปอร์disabled
- เมื่อทริกเกอร์จากจุดยึดที่พันด้วยเส้นหลายเส้น ป๊อปโอเวอร์จะอยู่กึ่งกลางระหว่างความกว้างโดยรวมของจุดยึด ใช้
.text-nowrap
กับของคุณ<a>
เพื่อหลีกเลี่ยงพฤติกรรมนี้ - ต้องซ่อนป๊อปโอเวอร์ก่อนที่องค์ประกอบที่เกี่ยวข้องจะถูกลบออกจาก DOM
- สามารถเรียกใช้ Popovers ได้ด้วยองค์ประกอบภายใน Shadow DOM
prefers-reduced-motion
คิวรีสื่อ ดู
ส่วนการเคลื่อนไหวที่ลดลงของเอกสารการช่วยสำหรับการเข้าถึงของเรา
อ่านต่อเพื่อดูว่าป๊อปอัปทำงานอย่างไรจากตัวอย่างบางส่วน
ตัวอย่าง
เปิดใช้งานป๊อปอัป
ดังที่กล่าวไว้ข้างต้น คุณต้องเริ่มต้นป๊อปโอเวอร์ก่อนจึงจะสามารถใช้งานได้ วิธีหนึ่งในการเริ่มต้นป๊อปโอเวอร์ทั้งหมดบนหน้าเว็บคือการเลือกตามdata-bs-toggle
แอตทริบิวต์ เช่น:
const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]')
const popoverList = [...popoverTriggerList].map(popoverTriggerEl => new bootstrap.Popover(popoverTriggerEl))
สาธิตสด
เราใช้ JavaScript ที่คล้ายกับตัวอย่างด้านบนเพื่อแสดงป๊อปโอเวอร์แบบสดต่อไปนี้ ชื่อเรื่องถูกกำหนดผ่านdata-bs-title
และเนื้อหาถูกตั้งค่าdata-bs-content
ผ่าน
title
หรือ
data-bs-title
ใน HTML ของคุณ เมื่อ
title
ถูกใช้ Popper จะแทนที่มันโดยอัตโนมัติด้วย
data-bs-title
เมื่อมีการแสดงองค์ประกอบ
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
สี่ทิศ
มีสี่ตัวเลือก: บน ขวา ล่าง และซ้าย ทิศทางจะถูกมิเรอร์เมื่อใช้ Bootstrap ใน RTL ตั้งค่าdata-bs-placement
ให้เปลี่ยนทิศทาง
<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>
กำหนดเองcontainer
เมื่อคุณมีสไตล์บางอย่างในองค์ประกอบหลักที่รบกวนป๊อปโอเวอร์ คุณจะต้องระบุกำหนดเองcontainer
เพื่อให้ HTML ของป๊อปโอเวอร์ปรากฏขึ้นภายในองค์ประกอบนั้นแทน ซึ่งเป็นเรื่องปกติในตารางตอบสนอง กลุ่มอินพุต และอื่นๆ
const popover = new bootstrap.Popover('.example-popover', {
container: 'body'
})
อีกสถานการณ์หนึ่งที่คุณต้องการตั้งค่าการกำหนดเองที่ชัดเจนcontainer
คือป๊อปโอเวอร์ภายในกล่องโต้ตอบโมดอลเพื่อให้แน่ใจว่าป๊อปโอเวอร์นั้นถูกผนวกเข้ากับโมดอล นี่เป็นสิ่งสำคัญอย่างยิ่งสำหรับป๊อปโอเวอร์ที่มีองค์ประกอบแบบโต้ตอบ - กล่องโต้ตอบโมดอลจะดักจับโฟกัส ดังนั้นเว้นแต่ป๊อปโอเวอร์เป็นองค์ประกอบลูกของโมดอล ผู้ใช้จะไม่สามารถโฟกัสหรือเปิดใช้งานองค์ประกอบแบบโต้ตอบเหล่านี้ได้
const popover = new bootstrap.Popover('.example-popover', {
container: '.modal-body'
})
ป๊อปอัปที่กำหนดเอง
เพิ่มใน v5.2.0คุณสามารถปรับแต่งรูปลักษณ์ของป๊อปอัปได้ โดยใช้ ตัวแปร CSS เราตั้งค่าคลาสที่กำหนดเองด้วยdata-bs-custom-class="custom-popover"
เพื่อกำหนดขอบเขตลักษณะที่กำหนดเองของเราและใช้เพื่อแทนที่ตัวแปร CSS ในเครื่องบางตัว
.custom-popover {
--bs-popover-max-width: 200px;
--bs-popover-border-color: var(--bs-primary);
--bs-popover-header-bg: var(--bs-primary);
--bs-popover-header-color: var(--bs-white);
--bs-popover-body-padding-x: 1rem;
--bs-popover-body-padding-y: .5rem;
}
<button type="button" class="btn btn-secondary"
data-bs-toggle="popover" data-bs-placement="right"
data-bs-custom-class="custom-popover"
data-bs-title="Custom popover"
data-bs-content="This popover is themed via CSS variables.">
Custom popover
</button>
ปิดในคลิกถัดไป
ใช้focus
ทริกเกอร์เพื่อปิดป๊อปอัปเมื่อผู้ใช้คลิกองค์ประกอบอื่นที่ไม่ใช่องค์ประกอบสลับในครั้งถัดไป
มาร์กอัปเฉพาะที่จำเป็นสำหรับการเลิกจ้างเมื่อคลิกถัดไป
สำหรับพฤติกรรมข้ามเบราว์เซอร์และข้ามแพลตฟอร์มที่เหมาะสม คุณต้องใช้<a>
แท็กไม่ใช่แท็<button>
ก และคุณต้องรวมtabindex
แอตทริบิวต์ด้วย
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
const popover = new bootstrap.Popover('.popover-dismiss', {
trigger: 'focus'
})
องค์ประกอบพิการ
องค์ประกอบที่มีdisabled
แอตทริบิวต์จะไม่โต้ตอบ หมายความว่าผู้ใช้ไม่สามารถวางเมาส์เหนือหรือคลิกเพื่อทริกเกอร์ป๊อปโอเวอร์ (หรือคำแนะนำเครื่องมือ) ในการแก้ปัญหาชั่วคราว คุณจะต้องทริกเกอร์ป๊อปโอเวอร์จาก wrapper <div>
หรือ<span>
ทำให้แป้นพิมพ์โฟกัสได้โดยใช้tabindex="0"
.
สำหรับทริกเกอร์ป๊อปโอเวอร์ที่ปิดใช้งาน คุณอาจต้องการdata-bs-trigger="hover focus"
ให้ป๊อปโอเวอร์ปรากฏเป็นการตอบกลับด้วยภาพทันทีสำหรับผู้ใช้ของคุณ เนื่องจากพวกเขาอาจไม่ได้คาดหวังว่าจะคลิกที่องค์ประกอบที่ถูกปิดใช้งาน
<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>
CSS
ตัวแปร
เพิ่มใน v5.2.0ในฐานะที่เป็นส่วนหนึ่งของแนวทางการพัฒนาตัวแปร CSS ของ Bootstrap ขณะนี้ป๊อปอัปใช้ตัวแปร CSS ใน.popover
เครื่องสำหรับการปรับแต่งแบบเรียลไทม์ที่ได้รับการปรับปรุง ค่าสำหรับตัวแปร CSS ถูกกำหนดผ่าน Sass ดังนั้นยังคงรองรับการปรับแต่ง Sass ด้วยเช่นกัน
--#{$prefix}popover-zindex: #{$zindex-popover};
--#{$prefix}popover-max-width: #{$popover-max-width};
@include rfs($popover-font-size, --#{$prefix}popover-font-size);
--#{$prefix}popover-bg: #{$popover-bg};
--#{$prefix}popover-border-width: #{$popover-border-width};
--#{$prefix}popover-border-color: #{$popover-border-color};
--#{$prefix}popover-border-radius: #{$popover-border-radius};
--#{$prefix}popover-inner-border-radius: #{$popover-inner-border-radius};
--#{$prefix}popover-box-shadow: #{$popover-box-shadow};
--#{$prefix}popover-header-padding-x: #{$popover-header-padding-x};
--#{$prefix}popover-header-padding-y: #{$popover-header-padding-y};
@include rfs($popover-header-font-size, --#{$prefix}popover-header-font-size);
--#{$prefix}popover-header-color: #{$popover-header-color};
--#{$prefix}popover-header-bg: #{$popover-header-bg};
--#{$prefix}popover-body-padding-x: #{$popover-body-padding-x};
--#{$prefix}popover-body-padding-y: #{$popover-body-padding-y};
--#{$prefix}popover-body-color: #{$popover-body-color};
--#{$prefix}popover-arrow-width: #{$popover-arrow-width};
--#{$prefix}popover-arrow-height: #{$popover-arrow-height};
--#{$prefix}popover-arrow-border: var(--#{$prefix}popover-border-color);
ตัวแปร Sass
$popover-font-size: $font-size-sm;
$popover-bg: $white;
$popover-max-width: 276px;
$popover-border-width: $border-width;
$popover-border-color: var(--#{$prefix}border-color-translucent);
$popover-border-radius: $border-radius-lg;
$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow: $box-shadow;
$popover-header-font-size: $font-size-base;
$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;
การใช้งาน
เปิดใช้งานป๊อปอัปผ่าน JavaScript:
const exampleEl = document.getElementById('example')
const popover = new bootstrap.Popover(exampleEl, options)
การทำให้ป๊อปอัปทำงานสำหรับผู้ใช้คีย์บอร์ดและเทคโนโลยีอำนวยความสะดวก
เพื่อให้ผู้ใช้แป้นพิมพ์เปิดใช้งานป๊อปอัปของคุณ คุณควรเพิ่มลงในองค์ประกอบ HTML ที่เน้นไปที่แป้นพิมพ์และโต้ตอบได้ตามปกติ (เช่น ลิงก์หรือตัวควบคุมฟอร์ม) แม้ว่าองค์ประกอบ HTML ตามอำเภอใจ (เช่น<span>
s) สามารถทำให้โฟกัสได้โดยการเพิ่มtabindex="0"
แอตทริบิวต์ สิ่งนี้จะเพิ่มการหยุดแท็บที่อาจน่ารำคาญและทำให้เกิดความสับสนในองค์ประกอบที่ไม่โต้ตอบสำหรับผู้ใช้แป้นพิมพ์ และเทคโนโลยีช่วยเหลือส่วนใหญ่ในปัจจุบันยังไม่ประกาศเนื้อหาของป๊อปโอเวอร์ในสถานการณ์นี้ . นอกจากนี้ อย่าพึ่งเพียงhover
เป็นทริกเกอร์สำหรับป๊อปโอเวอร์ของคุณ เนื่องจากจะทำให้ไม่สามารถทริกเกอร์สำหรับผู้ใช้คีย์บอร์ดได้
แม้ว่าคุณจะสามารถแทรก HTML ที่มีโครงสร้างและสมบูรณ์ในป๊อปโอเวอร์ด้วยhtml
ตัวเลือกได้ เราขอแนะนำให้คุณหลีกเลี่ยงการเพิ่มเนื้อหาจำนวนมากเกินไป วิธีการทำงานของป๊อปอัปในปัจจุบันคือ เมื่อแสดงแล้ว เนื้อหาของป๊อปอัปจะเชื่อมโยงกับองค์ประกอบทริกเกอร์ด้วยaria-describedby
แอตทริบิวต์ ด้วยเหตุนี้ เนื้อหาทั้งหมดของป๊อปโอเวอร์จะถูกประกาศให้ผู้ใช้เทคโนโลยีอำนวยความสะดวกทราบเป็นสตรีมที่ยาวและไม่ขาดตอน
นอกจากนี้ คุณยังสามารถรวมการควบคุมแบบโต้ตอบได้ (เช่น องค์ประกอบของฟอร์มหรือลิงก์) ในป๊อปโอเวอร์ของคุณ (โดยการเพิ่มองค์ประกอบเหล่านี้ไปยังallowList
แอตทริบิวต์และแท็กที่อนุญาต) โปรดทราบว่าขณะนี้ป๊อปโอเวอร์ไม่ได้จัดการลำดับโฟกัสของแป้นพิมพ์ เมื่อผู้ใช้คีย์บอร์ดเปิดป๊อปโอเวอร์ โฟกัสยังคงอยู่ที่องค์ประกอบทริกเกอร์ และเนื่องจากป๊อปโอเวอร์มักจะไม่ติดตามทริกเกอร์ในโครงสร้างของเอกสารทันที จึงไม่รับประกันว่าการเดินหน้า/การกดTABจะย้ายผู้ใช้คีย์บอร์ดไปที่ป๊อปโอเวอร์เอง กล่าวโดยย่อ การเพิ่มการควบคุมแบบโต้ตอบไปยังป๊อปโอเวอร์จะทำให้การควบคุมเหล่านี้ไม่สามารถเข้าถึงได้/ใช้ไม่ได้สำหรับผู้ใช้แป้นพิมพ์และผู้ใช้เทคโนโลยีอำนวยความสะดวก หรืออย่างน้อยที่สุดก็ทำให้ลำดับโฟกัสโดยรวมที่ไร้เหตุผล ในกรณีเหล่านี้ ให้ลองใช้กล่องโต้ตอบโมดอลแทน
ตัวเลือก
เนื่องจากตัวเลือกสามารถส่งผ่านแอตทริบิวต์ข้อมูลหรือ JavaScript คุณจึงเพิ่มชื่อตัวเลือกต่อท้ายได้ เช่น เดียวdata-bs-
กับใน data-bs-animation="{value}"
ตรวจสอบให้แน่ใจว่าได้เปลี่ยนประเภทเคสของชื่อตัวเลือกจาก “ camelCase ” เป็น “ kebab-case ” เมื่อส่งตัวเลือกผ่านแอตทริบิวต์ data เช่น ใช้data-bs-custom-class="beautifier"
แทนdata-bs-customClass="beautifier"
.
ใน Bootstrap 5.2.0 ส่วนประกอบทั้งหมดสนับสนุนแอตทริบิวต์ข้อมูลที่สงวนไว้สำหรับทดลองdata-bs-config
ซึ่งสามารถจัดเก็บการกำหนดค่าส่วนประกอบอย่างง่ายเป็นสตริง JSON เมื่อองค์ประกอบมีdata-bs-config='{"delay":0, "title":123}'
และdata-bs-title="456"
แอตทริบิวต์ ค่าสุดท้ายtitle
จะเป็น456
และแอตทริบิวต์ข้อมูลที่แยกจากกันจะแทนที่ค่าที่ให้ไว้data-bs-config
ใน นอกจากนี้ แอตทริบิวต์ข้อมูลที่มีอยู่ยังสามารถเก็บค่า JSON เช่นdata-bs-delay='{"show":0,"hide":150}'
.
sanitize
,
sanitizeFn
, และ
allowList
ไม่สามารถระบุได้โดยใช้แอตทริบิวต์ข้อมูล
ชื่อ | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|---|
allowList |
วัตถุ | ค่าเริ่มต้น | ออบเจ็กต์ที่มีแอตทริบิวต์และแท็กที่อนุญาต |
animation |
บูลีน | true |
ใช้ CSS Fade Transition กับป๊อปโอเวอร์ |
boundary |
สตริง องค์ประกอบ | 'clippingParents' |
ขอบเขตจำกัดโอเวอร์โฟลว์ของป๊อปโอเวอร์ (ใช้เฉพาะกับตัวแก้ไขป้องกันโอเวอร์โฟลว์ของ Popper) โดยค่าเริ่มต้น เป็น'clippingParents' และสามารถยอมรับการอ้างอิง HTMLElement (ผ่าน JavaScript เท่านั้น) สำหรับข้อมูลเพิ่มเติม โปรดดูที่เอกสาร detectOverflowของ Popper |
container |
สตริง องค์ประกอบ false | false |
ต่อท้ายป๊อปโอเวอร์กับองค์ประกอบเฉพาะ ตัวอย่าง: container: 'body' . ตัวเลือกนี้มีประโยชน์อย่างยิ่งโดยช่วยให้คุณสามารถวางตำแหน่งป๊อปโอเวอร์ในโฟลว์ของเอกสารใกล้กับองค์ประกอบที่ทริกเกอร์ ซึ่งจะป้องกันไม่ให้ป๊อปโอเวอร์ลอยออกจากองค์ประกอบที่ทริกเกอร์ในระหว่างการปรับขนาดหน้าต่าง |
content |
สตริง องค์ประกอบ ฟังก์ชัน | '' |
ค่าเนื้อหาเริ่มต้นหากไม่มีdata-bs-content แอตทริบิวต์ หากมีการกำหนดฟังก์ชัน ฟังก์ชันนั้นจะถูกเรียกโดยthis ตั้งค่าการอ้างอิงไปยังองค์ประกอบที่เชื่อมต่อป๊อปโอเวอร์ |
customClass |
สตริงฟังก์ชัน | '' |
เพิ่มคลาสไปที่ป๊อปโอเวอร์เมื่อแสดง โปรดทราบว่าคลาสเหล่านี้จะถูกเพิ่มนอกเหนือจากคลาสที่ระบุในเทมเพลต หากต้องการเพิ่มหลายคลาส ให้คั่นด้วยช่องว่าง: 'class-1 class-2' . คุณยังสามารถส่งฟังก์ชันที่ควรส่งคืนสตริงเดียวที่มีชื่อคลาสเพิ่มเติม |
delay |
หมายเลขวัตถุ | 0 |
หน่วงเวลาการแสดงและซ่อนป๊อปโอเวอร์ (มิลลิวินาที)—ใช้ไม่ได้กับประเภททริกเกอร์ด้วยตนเอง หากมีการระบุตัวเลข การหน่วงเวลาจะถูกนำไปใช้กับทั้งซ่อน/แสดง โครงสร้างวัตถุคือ: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
สตริง, อาร์เรย์ | ['top', 'right', 'bottom', 'left'] |
กำหนดตำแหน่งสำรองโดยระบุรายการตำแหน่งในอาร์เรย์ (ตามลำดับความชอบ) สำหรับข้อมูล เพิ่มเติม โปรดดู เอกสารพฤติกรรมของ Popper |
html |
บูลีน | false |
อนุญาต HTML ในป๊อปโอเวอร์ ถ้าเป็นจริง แท็ก HTML ในป๊อปโอเวอร์title จะแสดงในป๊อปโอเวอร์ หากเป็นเท็จinnerText คุณสมบัติจะถูกใช้เพื่อแทรกเนื้อหาลงใน DOM ใช้ข้อความหากคุณกังวลเกี่ยวกับการโจมตี XSS |
offset |
ตัวเลข สตริง ฟังก์ชัน | [0, 0] |
ออฟเซ็ตของป๊อปโอเวอร์ที่สัมพันธ์กับเป้าหมาย คุณสามารถส่งสตริงในแอตทริบิวต์ข้อมูลด้วยค่าที่คั่นด้วยเครื่องหมายจุลภาค เช่นdata-bs-offset="10,20" : เมื่อใช้ฟังก์ชันเพื่อกำหนดออฟเซ็ต ฟังก์ชันจะถูกเรียกด้วยออบเจ็กต์ที่มีการจัดวางแบบป๊อปเปอร์ การอ้างอิง และการแก้ไขแบบป๊อปอัปเป็นอาร์กิวเมนต์แรก องค์ประกอบทริกเกอร์โหนด DOM ถูกส่งผ่านเป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันต้องส่งคืนอาร์เรย์ที่มีตัวเลขสองตัว: skidding , distance สำหรับข้อมูลเพิ่มเติม โปรดดู เอกสารออฟเซ็ตของPopper |
placement |
สตริงฟังก์ชัน | 'top' |
วิธีวางตำแหน่งป๊อปโอเวอร์: อัตโนมัติ บน ล่าง ซ้าย ขวา เมื่อauto ถูกระบุ มันจะปรับทิศทางป๊อปโอเวอร์ใหม่แบบไดนามิก เมื่อใช้ฟังก์ชันเพื่อกำหนดตำแหน่ง ฟังก์ชันจะถูกเรียกโดยมีโหนด DOM แบบป๊อปโอเวอร์เป็นอาร์กิวเมนต์แรก และโหนด DOM ที่ทริกเกอร์องค์ประกอบเป็นโหนดที่สอง บริบทถูกตั้ง ค่าthis เป็นอินสแตนซ์ป๊อปโอเวอร์ |
popperConfig |
null วัตถุ ฟังก์ชัน | null |
หากต้องการเปลี่ยนการกำหนดค่า Popper เริ่มต้นของ Bootstrap โปรดดู การกำหนดค่า ของPopper เมื่อใช้ฟังก์ชันเพื่อสร้างการกำหนดค่า Popper ฟังก์ชันนี้จะถูกเรียกใช้ด้วยอ็อบเจ็กต์ที่มีการกำหนดค่า Popper เริ่มต้นของ Bootstrap ช่วยให้คุณใช้และรวมค่าเริ่มต้นเข้ากับการกำหนดค่าของคุณเอง ฟังก์ชันต้องส่งคืนอ็อบเจ็กต์การกำหนดค่าสำหรับ Popper |
sanitize |
บูลีน | true |
เปิดหรือปิดการฆ่าเชื้อ หากเปิดใช้งาน'template' และ'content' ตัว'title' เลือกต่างๆ จะถูกฆ่าเชื้อ |
sanitizeFn |
null, ฟังก์ชัน | null |
ที่นี่คุณสามารถจัดหาฟังก์ชันฆ่าเชื้อของคุณเองได้ สิ่งนี้มีประโยชน์หากคุณต้องการใช้ห้องสมุดเฉพาะเพื่อทำการฆ่าเชื้อ |
selector |
สตริง เท็จ | false |
หากมีตัวเลือก ออบเจ็กต์ป๊อปโอเวอร์จะถูกส่งไปยังเป้าหมายที่ระบุ ในทางปฏิบัติ สิ่งนี้จะใช้เพื่อใช้ป๊อปโอเวอร์กับองค์ประกอบ DOM ที่เพิ่มแบบไดนามิก ( jQuery.on รองรับ) ดูปัญหานี้และตัวอย่างข้อมูล |
template |
สตริง | '<div class="popover" role="popover"><div class="popover-arrow"></div><div class="popover-inner"></div></div>' |
HTML พื้นฐานที่จะใช้เมื่อสร้างป๊อปโอเวอร์ ป๊อปโอเวอร์title จะถูกฉีดเข้าไปในไฟล์.popover-inner . .popover-arrow จะกลายเป็นลูกศรของป๊อปโอเวอร์ องค์ประกอบ wrapper นอกสุดควรมี.popover คลาสและrole="popover" . |
title |
สตริง องค์ประกอบ ฟังก์ชัน | '' |
ค่าเริ่มต้นของชื่อหากไม่มีtitle แอตทริบิวต์ หากมีการกำหนดฟังก์ชัน ฟังก์ชันนั้นจะถูกเรียกโดยthis ตั้งค่าการอ้างอิงไปยังองค์ประกอบที่เชื่อมต่อป๊อปโอเวอร์ |
trigger |
สตริง | 'hover focus' |
วิธีทริกเกอร์ป๊อปโอเวอร์: คลิก โฮเวอร์ โฟกัส ปรับเอง คุณอาจส่งทริกเกอร์หลายตัว แยกพวกเขาด้วยช่องว่าง 'manual' บ่งชี้ว่าป๊อปโอเวอร์จะถูกทริกเกอร์โดยทางโปรแกรมผ่านเมธอด.popover('show') , .popover('hide') และ .popover('toggle') ค่านี้ไม่สามารถรวมกับทริกเกอร์อื่นได้ 'hover' ด้วยตัวมันเองจะส่งผลให้เกิดป๊อปอัปที่ไม่สามารถเรียกใช้ผ่านแป้นพิมพ์ได้ และควรใช้เฉพาะในกรณีที่มีวิธีการอื่นในการถ่ายทอดข้อมูลเดียวกันสำหรับผู้ใช้แป้นพิมพ์ |
แอตทริบิวต์ข้อมูลสำหรับป๊อปอัปแต่ละรายการ
ตัวเลือกสำหรับป๊อปอัปแต่ละรายการสามารถระบุได้โดยใช้แอตทริบิวต์ข้อมูล ตามที่อธิบายข้างต้น
การใช้ฟังก์ชันกับpopperConfig
const popover = new bootstrap.Popover(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
วิธีการ
วิธีการและการเปลี่ยนแบบอะซิงโครนัส
เมธอด API ทั้งหมดเป็นแบบอะซิงโครนัสและเริ่มต้นการเปลี่ยนแปลง พวกเขาจะกลับไปที่ผู้โทรทันทีที่เริ่มเปลี่ยน แต่ ก่อน ที่จะสิ้นสุด นอกจากนี้ การเรียกเมธอดบนคอมโพเนนต์การเปลี่ยนจะถูกละเว้น
วิธี | คำอธิบาย |
---|---|
disable |
ลบความสามารถในการแสดงป๊อปโอเวอร์ขององค์ประกอบ ป๊อปโอเวอร์จะแสดงได้ก็ต่อเมื่อเปิดใช้งานอีกครั้ง |
dispose |
ซ่อนและทำลายป๊อปโอเวอร์ขององค์ประกอบ (ลบข้อมูลที่เก็บไว้ในองค์ประกอบ DOM) ป๊อปโอเวอร์ที่ใช้การมอบหมาย (ซึ่งสร้างขึ้นโดยใช้ตัวselector เลือก ) ไม่สามารถทำลายทีละรายการในองค์ประกอบทริกเกอร์ที่สืบทอดได้ |
enable |
ให้ความสามารถในการแสดงป๊อปโอเวอร์ขององค์ประกอบ Popovers ถูกเปิดใช้งานโดยค่าเริ่มต้น |
getInstance |
วิธีการ แบบคงที่ซึ่งช่วยให้คุณได้รับอินสแตนซ์แบบป๊อปโอเวอร์ที่เชื่อมโยงกับองค์ประกอบ DOM |
getOrCreateInstance |
วิธีการ แบบคงที่ซึ่งช่วยให้คุณได้รับอินสแตนซ์แบบป๊อปโอเวอร์ที่เชื่อมโยงกับองค์ประกอบ DOM หรือสร้างใหม่ในกรณีที่ไม่ได้เริ่มต้น |
hide |
ซ่อนป๊อปโอเวอร์ขององค์ประกอบ กลับไปยังผู้โทรก่อนที่ป๊อปโอเวอร์จะถูกซ่อนจริง ๆ (กล่าวคือ ก่อนที่hidden.bs.popover เหตุการณ์จะเกิดขึ้น) นี่ถือเป็นการกระตุ้น "ด้วยตนเอง" ของป๊อปโอเวอร์ |
setContent |
ให้วิธีการเปลี่ยนเนื้อหาของป๊อปโอเวอร์หลังจากการเริ่มต้น |
show |
แสดงป๊อปโอเวอร์ขององค์ประกอบ กลับไปยังผู้โทรก่อนที่ป๊อปโอเวอร์จะปรากฏขึ้นจริง (เช่น ก่อนshown.bs.popover เหตุการณ์จะเกิดขึ้น) นี่ถือเป็นการกระตุ้น "ด้วยตนเอง" ของป๊อปโอเวอร์ ป๊อปอัปที่มีทั้งชื่อและเนื้อหามีความยาวเป็นศูนย์จะไม่ปรากฏ |
toggle |
สลับป๊อปโอเวอร์ขององค์ประกอบ กลับไปยังผู้โทรก่อนที่ป๊อปโอเวอร์จะแสดงหรือซ่อนอยู่จริง (กล่าวคือ ก่อนที่ เหตุการณ์ shown.bs.popover หรือhidden.bs.popover เหตุการณ์จะเกิดขึ้น) นี่ถือเป็นการกระตุ้น "ด้วยตนเอง" ของป๊อปโอเวอร์ |
toggleEnabled |
สลับความสามารถในการแสดงหรือซ่อนป๊อปโอเวอร์ขององค์ประกอบ |
update |
อัปเดตตำแหน่งของป๊อปโอเวอร์ขององค์ประกอบ |
// getOrCreateInstance example
const popover = bootstrap.Popover.getOrCreateInstance('#example') // Returns a Bootstrap popover instance
// setContent example
myPopover.setContent({
'.popover-header': 'another title',
'.popover-body': 'another content'
})
setContent
เมธอดยอมรับ
อาร์กิวเมนต์
object
โดยที่แต่ละคีย์คุณสมบัติเป็น
string
ตัวเลือกที่ถูกต้องภายในเทมเพลตป๊อปโอเวอร์ และแต่ละค่าคุณสมบัติที่เกี่ยวข้องสามารถเป็น
string
|
element
|
function
|
null
เหตุการณ์
เหตุการณ์ | คำอธิบาย |
---|---|
hide.bs.popover |
เหตุการณ์นี้เริ่มทำงานทันทีเมื่อhide มีการเรียกเมธอดของอินสแตนซ์ |
hidden.bs.popover |
เหตุการณ์นี้เริ่มทำงานเมื่อป๊อปโอเวอร์ถูกซ่อนจากผู้ใช้เสร็จสิ้น (จะรอให้การเปลี่ยน CSS เสร็จสมบูรณ์) |
inserted.bs.popover |
เหตุการณ์นี้เริ่มทำงานหลังจากshow.bs.popover เหตุการณ์เมื่อมีการเพิ่มเทมเพลตป๊อปโอเวอร์ใน DOM |
show.bs.popover |
เหตุการณ์นี้จะเริ่มทำงานทันทีเมื่อมีshow การเรียกเมธอดของอินสแตนซ์ |
shown.bs.popover |
เหตุการณ์นี้เริ่มทำงานเมื่อผู้ใช้มองเห็นป๊อปโอเวอร์ (จะรอให้การเปลี่ยน CSS เสร็จสมบูรณ์) |
const myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', () => {
// do something...
})