تلميحات
وثائق وأمثلة لإضافة تلميحات أدوات Bootstrap مخصصة مع CSS و JavaScript باستخدام CSS3 للرسوم المتحركة وسمات data-bs لتخزين العنوان المحلي.
ملخص
أشياء يجب معرفتها عند استخدام البرنامج المساعد لتلميح الأدوات:
- تعتمد تلميحات الأدوات على مكتبة Popper التابعة لجهة خارجية لتحديد المواقع. يجب عليك تضمين popper.min.js قبل bootstrap.js أو استخدام
bootstrap.bundle.min.js
/bootstrap.bundle.js
الذي يحتوي على Popper حتى تعمل التلميحات! - يتم الاشتراك في تلميحات الأدوات لأسباب تتعلق بالأداء ، لذا يجب عليك تهيئتها بنفسك .
- لا يتم أبدًا عرض تلميحات الأدوات ذات العناوين ذات الطول الصفري.
- حدد
container: 'body'
لتجنب مشاكل العرض في المكونات الأكثر تعقيدًا (مثل مجموعات الإدخال ومجموعات الأزرار وما إلى ذلك). - تشغيل تلميحات الأدوات على العناصر المخفية لن يعمل.
- يجب تشغيل تلميحات الأدوات
.disabled
أوdisabled
العناصر على عنصر غلاف. - عند التشغيل من ارتباطات تشعبية تمتد عبر عدة أسطر ، سيتم توسيط تلميحات الأدوات. استخدمه لتجنب هذا السلوك
white-space: nowrap;
.<a>
- يجب إخفاء تلميحات الأدوات قبل إزالة العناصر المقابلة لها من DOM.
- يمكن تشغيل تلميحات الأدوات بفضل عنصر داخل ظل DOM.
prefers-reduced-motion
الاستعلام عن الوسائط. راجع
قسم الحركة المخفضة في وثائق إمكانية الوصول الخاصة بنا .
حصلت على كل هذا؟ رائع ، دعنا نرى كيف يعملون مع بعض الأمثلة.
مثال: قم بتمكين التلميحات في كل مكان
تتمثل إحدى طرق تهيئة جميع تلميحات الأدوات على الصفحة في تحديدها حسب data-bs-toggle
السمة الخاصة بها:
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
أمثلة
مرر مؤشر الماوس فوق الروابط أدناه لمشاهدة تلميحات الأدوات:
نص العنصر النائب لتوضيح بعض الروابط المضمنة مع تلميحات الأدوات. هذا الآن مجرد حشو ، لا قاتل. تم وضع المحتوى هنا فقط لتقليد وجود نص حقيقي . وكل ذلك فقط لإعطائك فكرة عن كيفية ظهور تلميحات الأدوات عند استخدامها في مواقف العالم الحقيقي. لذلك نأمل أن تكون قد رأيت الآن كيف يمكن أن تعمل تلميحات الأدوات هذه على الروابط عمليًا ، بمجرد استخدامها على موقعك أو مشروعك.
قم بالمرور فوق الأزرار أدناه لمشاهدة اتجاهات تلميحات الأدوات الأربعة: أعلى ، ويمين ، وأسفل ، ويسار. يتم عكس الاتجاهات عند استخدام Bootstrap في RTL.
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right">
Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom">
Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left">
Tooltip on left
</button>
وبعد إضافة HTML المخصص:
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
Tooltip with HTML
</button>
باستخدام SVG:
ساس
المتغيرات
$tooltip-font-size: $font-size-sm;
$tooltip-max-width: 200px;
$tooltip-color: $white;
$tooltip-bg: $black;
$tooltip-border-radius: $border-radius;
$tooltip-opacity: .9;
$tooltip-padding-y: $spacer * .25;
$tooltip-padding-x: $spacer * .5;
$tooltip-margin: 0;
$tooltip-arrow-width: .8rem;
$tooltip-arrow-height: .4rem;
$tooltip-arrow-color: $tooltip-bg;
إستعمال
يُنشئ المكون الإضافي لتلميح الأدوات المحتوى والترميز عند الطلب ، ويضع بشكل افتراضي تلميحات الأدوات بعد عنصر المشغل الخاص بهم.
تشغيل تلميح الأداة عبر JavaScript:
var exampleEl = document.getElementById('example')
var tooltip = new bootstrap.Tooltip(exampleEl, options)
تجاوز auto
وscroll
يحاول موضع تلميح الأدوات أن يتغير تلقائيًا عندما يكون للحاوية الرئيسيةoverflow: auto
أو overflow: scroll
تشبهنا .table-responsive
، لكنها تحافظ على موضع الموضع الأصلي. لحل هذه المشكلة ، اضبط boundary
الخيار (لمعدِّل الوجه باستخدام popperConfig
الخيار) على أي HTMLElement لتجاوز القيمة الافتراضية 'clippingParents'
، مثل document.body
:
var exampleEl = document.getElementById('example')
var tooltip = new bootstrap.Tooltip(exampleEl, {
boundary: document.body // or document.querySelector('#boundary')
})
وضع علامة على
الترميز المطلوب لتلميح الأداة هو data
سمة فقط وعلى title
عنصر HTML الذي ترغب في الحصول عليه تلميح أداة. الترميز الذي تم إنشاؤه لتلميح الأداة بسيط نوعًا ما ، على الرغم من أنه يتطلب موضعًا (افتراضيًا ، يتم تعيينه top
بواسطة المكون الإضافي).
عمل تلميحات الأدوات لمستخدمي لوحة المفاتيح والتقنيات المساعدة
يجب عليك فقط إضافة تلميحات الأدوات إلى عناصر HTML التي تكون تفاعلية وقابلة للتركيز على لوحة المفاتيح بشكل تقليدي (مثل الروابط أو عناصر التحكم في النموذج). على الرغم من أنه يمكن جعل عناصر HTML التعسفية (مثل العناصر <span>
) قابلة للتركيز عن طريق إضافة tabindex="0"
السمة ، إلا أن هذا سيضيف علامات تبويب مزعجة ومربكة على العناصر غير التفاعلية لمستخدمي لوحة المفاتيح ، ولا تعلن معظم التقنيات المساعدة حاليًا عن تلميح الأدوات في هذه الحالة. بالإضافة إلى ذلك ، لا تعتمد فقط hover
كمحفز لتلميح الأدوات الخاص بك ، لأن هذا سيجعل من المستحيل تشغيل تلميحات الأدوات الخاصة بك لمستخدمي لوحة المفاتيح.
<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div>
العناصر المعطلة
العناصر التي تحتوي على disabled
السمة ليست تفاعلية ، مما يعني أنه لا يمكن للمستخدمين التركيز عليها أو التمرير فوقها أو النقر فوقها لتشغيل تلميح أداة (أو منبثق). كحل بديل ، سترغب في تشغيل تلميح الأداة من غلاف <div>
أو <span>
جعله بشكل مثالي للتركيز على لوحة المفاتيح باستخدام tabindex="0"
.
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" title="Disabled tooltip">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
خيارات
يمكن تمرير الخيارات عبر سمات البيانات أو JavaScript. لسمات البيانات ، قم بإلحاق اسم الخيار بـ data-bs-
، كما في data-bs-animation=""
. تأكد من تغيير نوع حالة اسم الخيار من camelCase إلى kebab-case عند تمرير الخيارات عبر سمات البيانات. على سبيل المثال ، بدلاً من استخدام data-bs-customClass="beautifier"
، استخدم data-bs-custom-class="beautifier"
.
sanitize
،
لا يمكن توفير الخيارات
sanitizeFn
، و ،
باستخدام سمات البيانات.allowList
اسم | يكتب | تقصير | وصف |
---|---|---|---|
animation |
قيمة منطقية | true |
تطبيق انتقال الخبو في CSS إلى تلميح الأداة |
container |
سلسلة | عنصر | خاطئة | false |
لإلحاق تلميح الأداة بعنصر معين. مثال |
delay |
رقم | هدف | 0 |
التأخير في إظهار تلميح الأداة وإخفائه (بالمللي ثانية) - لا ينطبق على نوع المشغل اليدوي إذا تم توفير رقم ، فسيتم تطبيق التأخير على كل من الإخفاء / العرض هيكل الكائن هو: |
html |
قيمة منطقية | false |
اسمح بتنسيق HTML في تلميح الأداة.
استخدم النص إذا كنت قلقًا بشأن هجمات XSS. |
placement |
سلسلة | وظيفة | 'top' |
كيفية وضع تلميح الأدوات - تلقائي | أعلى | أسفل | غادر | حقا. عندما يتم استخدام دالة لتحديد الموضع ، يتم استدعاؤها باستخدام عقدة DOM تلميح كأول وسيط لها وعقدة DOM المشغلة كعقدة ثانية لها. يتم |
selector |
سلسلة | خاطئة | false |
إذا تم توفير محدد ، فسيتم تفويض كائنات تلميح الأدوات إلى الأهداف المحددة. في الممارسة العملية ، يتم استخدام هذا أيضًا لتطبيق تلميحات الأدوات على عناصر DOM المضافة ديناميكيًا ( jQuery.on الدعم). انظر إلى هذا ومثال إعلامي . |
template |
سلسلة | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
قاعدة HTML لاستخدامها عند إنشاء التلميح.
يجب أن يحتوي عنصر الغلاف الخارجي على |
title |
سلسلة | عنصر | وظيفة | '' |
قيمة العنوان الافتراضية إذا إذا تم توفير وظيفة ، فسيتم استدعاؤها |
trigger |
سلسلة | 'hover focus' |
كيف يتم تشغيل التلميح - انقر فوق | تحوم | التركيز | كتيب. يمكنك تمرير عدة مشغلات ؛ افصلهم بمسافة.
|
fallbackPlacements |
مجموعة مصفوفة | ['top', 'right', 'bottom', 'left'] |
حدد المواضع الاحتياطية من خلال توفير قائمة بالمواضع في مصفوفة (بترتيب التفضيل). لمزيد من المعلومات ، راجع مستندات سلوك Popper |
boundary |
سلسلة | عنصر | 'clippingParents' |
حدود قيد تجاوز السعة الخاصة بتلميح الأداة (تنطبق فقط على معدل منع تجاوز تدفق Popper). بشكل افتراضي 'clippingParents' ، يمكن قبول مرجع HTMLElement (عبر JavaScript فقط). لمزيد من المعلومات ، راجع مستندات DiscoverOverflow الخاصة بـ Popper . |
customClass |
سلسلة | وظيفة | '' |
أضف فئات إلى تلميح الأداة عندما يتم عرضها. لاحظ أنه ستتم إضافة هذه الفئات بالإضافة إلى أي فئات محددة في النموذج. لإضافة عدة فئات ، افصل بينها بمسافات يمكنك أيضًا تمرير دالة يجب أن تُرجع سلسلة واحدة تحتوي على أسماء فئات إضافية. |
sanitize |
قيمة منطقية | true |
تمكين أو تعطيل التطهير. إذا تم تنشيطه 'template' وسيتم 'title' تعقيم الخيارات. راجع قسم المطهر في وثائق JavaScript الخاصة بنا . |
allowList |
هدف | القيمة الافتراضية | الكائن الذي يحتوي على السمات والعلامات المسموح بها |
sanitizeFn |
فارغ | وظيفة | null |
هنا يمكنك توفير وظيفة التعقيم الخاصة بك. يمكن أن يكون هذا مفيدًا إذا كنت تفضل استخدام مكتبة مخصصة لإجراء التعقيم. |
offset |
مجموعة | سلسلة | وظيفة | [0, 0] |
إزاحة تلميح الأداة بالنسبة إلى هدفه. يمكنك تمرير سلسلة في سمات البيانات بقيم مفصولة بفواصل مثل: عندما يتم استخدام دالة لتحديد الإزاحة ، يتم استدعاؤها بكائن يحتوي على موضع بوبر ، والمرجع ، ومستقيم بوبر كوسيطة أولى لها. يتم تمرير عقدة DOM المشغلة كوسيطة ثانية. يجب أن تُرجع الدالة مصفوفة تحتوي على رقمين :. لمزيد من المعلومات راجع مستندات تعويض Popper . |
popperConfig |
فارغ | كائن | وظيفة | null |
لتغيير تكوين Popper الافتراضي الخاص بـ Bootstrap ، راجع تكوين Popper . عند استخدام وظيفة لإنشاء تكوين Popper ، يتم استدعاؤها بكائن يحتوي على تكوين Popper الافتراضي الخاص بـ Bootstrap. يساعدك على استخدام ودمج الافتراضي مع التكوين الخاص بك. يجب أن تقوم الوظيفة بإرجاع كائن تكوين لـ Popper. |
سمات البيانات لتلميحات الأدوات الفردية
يمكن بدلاً من ذلك تحديد خيارات تلميحات الأدوات الفردية من خلال استخدام سمات البيانات ، كما هو موضح أعلاه.
استخدام وظيفة معpopperConfig
var tooltip = new bootstrap.Tooltip(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
طُرق
الطرق غير المتزامنة والانتقالات
جميع طرق API غير متزامنة وتبدأ في الانتقال . يعودون إلى المتصل بمجرد بدء الانتقال ولكن قبل أن ينتهي . بالإضافة إلى ذلك ، سيتم تجاهل استدعاء طريقة على مكون انتقالي .
راجع وثائق JavaScript الخاصة بنا للحصول على مزيد من المعلومات .
تبين
يكشف عن تلميح أداة عنصر. يعود إلى المتصل قبل عرض التلميح بالفعل (أي قبل shown.bs.tooltip
وقوع الحدث). يعتبر هذا بمثابة تشغيل "يدوي" للتلميح. لا يتم أبدًا عرض تلميحات الأدوات ذات العناوين ذات الطول الصفري.
tooltip.show()
يخفي
يخفي تلميح أداة عنصر. يعود إلى المتصل قبل إخفاء التلميح (أي قبل hidden.bs.tooltip
وقوع الحدث). يعتبر هذا بمثابة تشغيل "يدوي" للتلميح.
tooltip.hide()
تبديل
يبدل تلميح أداة عنصر. يعود إلى المتصل قبل إظهار التلميح أو إخفاؤه بالفعل (أي قبل وقوع الحدث shown.bs.tooltip
أو ). hidden.bs.tooltip
يعتبر هذا بمثابة تشغيل "يدوي" للتلميح.
tooltip.toggle()
تخلص
يخفي ويدمر تلميح أداة عنصر (يزيل البيانات المخزنة على عنصر DOM). لا يمكن إتلاف تلميحات الأدوات التي تستخدم التفويض (والتي يتم إنشاؤها باستخدام الخيار ) بشكل فردي في عناصر المشغل التابعة.selector
tooltip.dispose()
يُمكَِن
يمنح تلميح أداة عنصر القدرة على الظهور. يتم تمكين تلميحات الأدوات بشكل افتراضي.
tooltip.enable()
تعطيل
يزيل إمكانية عرض تلميح أداة عنصر ما. لن يتم عرض التلميح إلا إذا تمت إعادة تمكينه.
tooltip.disable()
toggleEnabled
لتبديل إمكانية إظهار تلميح أداة عنصر ما أو إخفاؤه.
tooltip.toggleEnabled()
تحديث
يحدّث موضع تلميح أداة العنصر.
tooltip.update()
getInstance
طريقة ثابتة تسمح لك بالحصول على مثيل تلميح الأداة المرتبط بعنصر DOM
var exampleTriggerEl = document.getElementById('example')
var tooltip = bootstrap.Tooltip.getInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance
getOrCreateInstance
طريقة ثابتة تتيح لك ربط مثيل تلميح الأدوات بعنصر DOM ، أو إنشاء مثيل جديد في حالة عدم تهيئته
var exampleTriggerEl = document.getElementById('example')
var tooltip = bootstrap.Tooltip.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance
الأحداث
نوع الحدث | وصف |
---|---|
show.bs.tooltip |
يتم تشغيل هذا الحدث فورًا عند show استدعاء أسلوب المثيل. |
shown.bs.tooltip |
يتم تشغيل هذا الحدث عندما يصبح التلميح مرئيًا للمستخدم (سينتظر حتى تكتمل انتقالات CSS). |
hide.bs.tooltip |
يتم تشغيل هذا الحدث فورًا عند hide استدعاء أسلوب المثيل. |
hidden.bs.tooltip |
يتم تشغيل هذا الحدث عند انتهاء إخفاء التلميح عن المستخدم (سينتظر حتى تكتمل انتقالات CSS). |
inserted.bs.tooltip |
يتم تشغيل هذا الحدث بعد show.bs.tooltip الحدث عند إضافة قالب تلميح الأدوات إلى DOM. |
var myTooltipEl = document.getElementById('myTooltip')
var tooltip = new bootstrap.Tooltip(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', function () {
// do something...
})
tooltip.hide()