ข้ามไปที่เนื้อหาหลัก ข้ามไปที่การนำทางเอกสาร
Check
in English

ป๊อปโอเวอร์

เอกสารประกอบและตัวอย่างสำหรับการเพิ่ม 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
โดยค่าเริ่มต้น คอมโพเนนต์นี้ใช้ตัวฆ่าเชื้อเนื้อหาในตัว ซึ่งจะแยกองค์ประกอบ HTML ที่ไม่ได้รับอนุญาตอย่างชัดเจน ดู ส่วนการฆ่าเชื้อในเอกสาร JavaScript ของเราสำหรับรายละเอียดเพิ่มเติม
เอฟเฟกต์ภาพเคลื่อนไหวของส่วนประกอบนี้ขึ้นอยู่กับ 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เมื่อมีการแสดงองค์ประกอบ
html
<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ให้เปลี่ยนทิศทาง

html
<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;
}
html
<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แอตทริบิวต์ด้วย

html
<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"ให้ป๊อปโอเวอร์ปรากฏเป็นการตอบกลับด้วยภาพทันทีสำหรับผู้ใช้ของคุณ เนื่องจากพวกเขาอาจไม่ได้คาดหวังว่าจะคลิกที่องค์ประกอบที่ถูกปิดใช้งาน

html
<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 ทั้งหมดเป็นแบบอะซิงโครนัสและเริ่มต้นการเปลี่ยนแปลง พวกเขาจะกลับไปที่ผู้โทรทันทีที่เริ่มเปลี่ยน แต่ ก่อน ที่จะสิ้นสุด นอกจากนี้ การเรียกเมธอดบนคอมโพเนนต์การเปลี่ยนจะถูกละเว้น

ดูเอกสาร JavaScript ของเราสำหรับข้อมูลเพิ่มเติม

วิธี คำอธิบาย
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...
})