الدرس الثالث عشر: التأثيرات (Modals) في Bootstrap
تُعتبر النوافذ المنبثقة (Modals) أحد المكونات الأساسية في واجهات المستخدم الحديثة، وهي توفر طريقة رائعة لإظهار محتوى إضافي أو تفاعل مع المستخدم دون الانتقال إلى صفحة جديدة. في Bootstrap، يتم تضمين مكون الـ Modal بشكل جاهز وسهل الاستخدام. يمكن تخصيص النوافذ المنبثقة لتظهر مع تأثيرات وانتقالات جذابة، بالإضافة إلى إضافة محتوى ديناميكي بداخلها.
في هذا الدرس، سنتعلم كيفية إنشاء نافذة منبثقة باستخدام .modal
، وتخصيص التأثيرات والانتقالات في النوافذ المنبثقة، وكيفية إضافة محتوى ديناميكي داخل النافذة المنبثقة.
1. كيفية إنشاء نافذة منبثقة باستخدام .modal
في البداية، سنحتاج إلى هيكل HTML بسيط لإنشاء نافذة منبثقة باستخدام فئة .modal
. هذه الفئة توفر هيكلًا مبدئيًا يتضمن التظليل (overlay)، والعنوان، والمحتوى الداخلي. يمكنك تضمين أي محتوى داخل النافذة المنبثقة مثل النصوص، الصور، أو حتى نماذج إدخال.
هيكل نافذة منبثقة بسيطة:
<!-- الزر الذي يقوم بفتح النافذة المنبثقة -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
فتح النافذة المنبثقة
</button>
<!-- هيكل النافذة المنبثقة -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">عنوان النافذة المنبثقة</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
محتوى النافذة المنبثقة هنا.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إغلاق</button>
<button type="button" class="btn btn-primary">حفظ التغييرات</button>
</div>
</div>
</div>
</div>
شرح الهيكل:
- الزر الذي يفتح النافذة المنبثقة يحتوي على
data-bs-toggle="modal"
وdata-bs-target="#exampleModal"
لتحديد النافذة المنبثقة المرتبطة بهذا الزر. <div class="modal fade">
: هو العنصر الأساسي الذي يمثل النافذة المنبثقة. الفئةfade
تضيف تأثير التلاشي عند فتح أو إغلاق النافذة..modal-dialog
: هو العنصر الذي يحتوي على محتوى النافذة..modal-header
: يحتوي على العنوان وأزرار الإغلاق..modal-body
: يحتوي على محتوى النافذة..modal-footer
: يحتوي على الأزرار مثل “إغلاق” و”حفظ التغييرات”.
2. تخصيص التأثيرات والانتقالات في النوافذ المنبثقة
إحدى أبرز الميزات في النوافذ المنبثقة في Bootstrap هي تأثيرات الانتقال (Transitions). توفر Bootstrap تأثيرات التلاشي والانزلاق التي تُستخدم بشكل افتراضي عندما تفتح أو تغلق النوافذ المنبثقة. يمكن تخصيص هذه التأثيرات لزيادة التفاعل مع المستخدم.
إضافة تأثيرات التلاشي:
Bootstrap يتيح لك إضافة فئة fade
لإضافة تأثير التلاشي عند ظهور النافذة واختفائها. هذه الفئة تجعل العنصر يظهر ببطء عند تحميله.
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
...
</div>
إضافة تأثير الانزلاق من الأعلى:
يمكنك إضافة تأثيرات متقدمة باستخدام CSS. على سبيل المثال، يمكن أن تجعل النافذة المنبثقة تنزلق من الأعلى عند الفتح باستخدام تأثيرات CSS التالية:
.modal.fade .modal-dialog {
transform: translate(0, -50px);
transition: transform 0.3s ease-out;
}
.modal.fade.show .modal-dialog {
transform: translate(0, 0);
}
في هذا المثال، قمنا بتحديد أن النافذة المنبثقة تبدأ من موقع أعلى قليلاً باستخدام translate(0, -50px)
، ثم تنتقل إلى مكانها الطبيعي عند التفاعل.
التخصيص باستخدام JavaScript:
باستخدام JavaScript، يمكن تخصيص المزيد من التأثيرات مثل تغيير سرعة الانتقال أو إضافة تأثيرات مختلفة بناءً على أحداث معينة.
var modalElement = document.getElementById('exampleModal')
var modal = new bootstrap.Modal(modalElement, {
keyboard: false, // منع إغلاق النافذة عند الضغط على Escape
backdrop: 'static' // عدم إغلاق النافذة عند النقر خارجها
})
modal.show();
3. إضافة محتوى ديناميكي داخل النافذة المنبثقة
إحدى الاستخدامات القوية للنوافذ المنبثقة هي القدرة على تحميل محتوى ديناميكي داخلها، مثل عرض بيانات من الخادم أو تفاعل مع نموذج إدخال.
استخدام JavaScript لتحميل المحتوى داخل الـ Modal:
يمكنك استخدام JavaScript لتحميل محتوى ديناميكي داخل النافذة المنبثقة عند فتحها، مما يسمح بعرض معلومات محدثة في كل مرة يتم فتح النافذة.
مثال على تحميل محتوى ديناميكي عند الفتح:
<!-- الزر لفتح النافذة المنبثقة -->
<button type="button" class="btn btn-info" data-bs-toggle="modal" data-bs-target="#dynamicModal">
افتح النافذة مع محتوى ديناميكي
</button>
<!-- هيكل النافذة المنبثقة -->
<div class="modal fade" id="dynamicModal" tabindex="-1" aria-labelledby="dynamicModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="dynamicModalLabel">محتوى ديناميكي</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="modalContent">
جاري تحميل المحتوى...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إغلاق</button>
<button type="button" class="btn btn-primary">حفظ التغييرات</button>
</div>
</div>
</div>
</div>
<script>
var dynamicModal = document.getElementById('dynamicModal')
dynamicModal.addEventListener('show.bs.modal', function (event) {
// إضافة محتوى ديناميكي داخل النافذة المنبثقة
var modalContent = document.getElementById('modalContent');
modalContent.innerHTML = '<p>تم تحميل المحتوى الجديد من الخادم!</p>';
});
</script>
في هذا المثال:
- يتم إضافة محتوى ديناميكي داخل النافذة عند فتحها باستخدام حدث
show.bs.modal
. - عند فتح النافذة، يتم استبدال محتوى
.modal-body
بالنص الجديد الذي يعكس بيانات تم تحميلها من الخادم.
استخدام Ajax لتحميل المحتوى من الخادم:
يمكنك أيضًا استخدام Ajax لتحميل البيانات من الخادم وعرضها داخل النافذة المنبثقة دون الحاجة إلى إعادة تحميل الصفحة.
مثال باستخدام Ajax لتحميل محتوى:
<script>
$('#dynamicModal').on('show.bs.modal', function () {
$.ajax({
url: 'path/to/your/api', // رابط الـ API لجلب البيانات
method: 'GET',
success: function (data) {
$('#modalContent').html(data);
}
});
});
</script>
في هذا المثال، نقوم باستخدام jQuery لتنفيذ طلب Ajax عند فتح النافذة المنبثقة، ثم نعرض البيانات المستلمة من الخادم في المحتوى.
الخاتمة
النوافذ المنبثقة في Bootstrap هي أداة قوية وسهلة الاستخدام لإظهار المحتوى التفاعلي دون مغادرة الصفحة الحالية. من خلال استخدام الفئات الجاهزة مثل .modal
وfade
، يمكنك إضافة تأثيرات انتقالية جميلة تجعل نافذتك المنبثقة تظهر بشكل احترافي. كما يمكنك إضافة محتوى ديناميكي باستخدام JavaScript وAjax، مما يعزز من تفاعل المستخدمين مع الموقع بشكل مرن وديناميكي.
تأكد دائمًا من تخصيص النوافذ المنبثقة لتلائم احتياجات مشروعك سواء كان ذلك باستخدام تأثيرات انتقال مخصصة أو تحميل محتوى ديناميكي لتوفير تجربة مستخدم أفضل.