كيفية بناء عنصر تنقل بسيط في شريط علامات التبويب
في موضوع لمدة أسبوع # 3 من بلدي أسبوعي الترميز التحدي هو التنقل ! لذلك دعونا نتعلم المزيد عنها.
التنقل
يعد مكون التنقل أمرًا بالغ الأهمية على موقع الويب لأنك تريد أن يتمكن المستخدمون من التنقل بسهولة عبر صفحاتك. يمكنك العثور على مكون تنقل حتى في مواقع الويب ذات الصفحة الواحدة والتي ستتيح لك الانتقال إلى قسم معين في الصفحة. كمطور ، من المفيد جدًا معرفة كيفية بناء هذا النوع من المكونات.
في هذه المقالة ، قررت إنشاء التنقل في شريط علامات التبويب ، ولكن يمكنك إنشاء أي نوع من التنقل تريده.
لقد ألهمني هذا التصميم الذي صممه Aurelien Salomon. هذا ما ستبدو عليه النتيجة النهائية لما سنبنيه:
HTML
ستكون بنية HTML بسيطة. سيكون لدينا .tab-nav-container
أربع وأربع .tab
ثوان بداخله:
House
Likes
Search
Profile
كما ترون، كل .tab
لديه رمز (من FontAwesome)، نص المقابلة، وبعض الطبقات الإضافية التي سيتم استخدامها لإعطاء كل محددة التبويب background-color
و color
الممتلكات. أيضًا .active
الفصل الذي سيتم استخدامه لتصميم علامة التبويب النشطة. بسيط جدا ، أليس كذلك؟ ؟
CSS
أولاً ، دعنا نصمم .tab-nav-container
:
ملحوظة : لدينا fixed
عرض على الحاوية لأننا لا نريد تغيير حجمها عندما نقوم بتغيير النشط .tab
لأن كل علامة تبويب قد تحتوي على نص أطول أو أقصر في الحجم (على سبيل المثال الصفحة الرئيسية (4 أحرف) مقابل الملف الشخصي (6 حروف)).
نستخدمها flexbox
لتوزيع .tab
s بالتساوي داخل الحاوية. بخلاف ذلك ، أعتقد أن CSS تشرح نفسها بنفسها.
التالي ... .tab
تصميم:
.tab { background-color: #ffffff; border-radius: 50px; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0 20px; margin: 0 10px; transition: background 0.4s linear; } .tab i { font-size: 1.2em; } .tab p { font-weight: bold; overflow: hidden; max-width: 0; } .tab.active p { margin-left: 10px; max-width: 200px; transition: max-width 0.4s linear; } .tab.active.purple { background-color: rgba(91, 55, 183, 0.2); color: rgba(91, 55, 183, 1); } .tab.active.pink { background-color: rgba(201, 55, 157, 0.2); color: rgba(201, 55, 157, 1); } .tab.active.yellow { background-color: rgba(230, 169, 25, 0.2); color: rgba(230, 169, 25, 1); } .tab.active.teal { background-color: rgba(28, 150, 162, 0.2); color: rgba(28, 150, 162, 1); }
بعض الأشياء التي يجب ملاحظتها هنا:
- من أجل الحصول على انتقال سلس عندما نغير
.active
علامة التبويب ، فإننا نضعtransition: background
خاصية.tab
للفصل. - افتراضيا
p
العلامة داخل.tab
لديهاmax-width
من0
وفيoverflow
مجموعة الخصائص لhidden
. هذا لأننا نريد فقط إظهار النص عندما.tab
يكون نشطًا فقط. - نحن نستخدم طبقات اللون حسب الطلب (
.purple
،.pink
، الخ) لدينا ألوان مختلفة في علامات التبويب.
لنتأكد من أنه يبدو جيدًا على الهاتف المحمول أيضًا:
@media (max-width: 450px) { .tab-nav-container { padding: 20px; width: 350px; } .tab { padding: 0 10px; margin: 0; } .tab i { font-size: 1em; } }
كما ترى ، نحن بصدد تقليص الوقت الذي .tab-nav-container
يكون فيه الحد الأقصى لعرض إطار العرض 450px
ونقوم أيضًا بتقليل المساحة المتروكة لجعلها تبدو أصغر.
جافا سكريبت
في النهاية ، في JS ، يتعين علينا التأكد من أنه عندما ينقر المستخدم .tab
على .active
فئة أخرى ، تتم إضافة فئة إليه وإزالتها من العنصر النشط السابق .tab
:
// Get all the tabs const tabs = document.querySelectorAll('.tab'); tabs.forEach(clickedTab => { // Add onClick event listener on each tab clickedTab.addEventListener('click', () => { // Remove the active class from all the tabs (this acts as a "hard" reset) tabs.forEach(tab => { tab.classList.remove('active'); }); // Add the active class on the clicked tab clickedTab.classList.add('active'); }); });
استنتاج
يتم استخدام هذا النوع من التنقل في شريط علامات التبويب في الغالب على الأجهزة المحمولة ، لذلك إذا كنت تريد إعادة استخدامه لتطبيق جوّال ، فتأكد من وضع الحاوية في أسفل الشاشة (باستخدام position: fixed
) وإعادة حساب العرض لملء الكل عرض الشاشة.
في مثال Codepen ، نقوم أيضًا بتغيير لون خلفية الجسم عند النقر فوق علامة تبويب أخرى. هذا للأغراض المرئية فقط ولا يتعلق تمامًا بموضوع الترميز لهذا الأسبوع. ولكن إذا كنت تريد أن ترى كيف فعلت ذلك ، فتحقق من كود JS في القلم (فقط سطرين إضافيين من التعليمات البرمجية).
المزيد من الأمثلة لتحدي التشفير هذا
في مقال سابق ، أوضحت كيفية إنشاء قائمة تنقل سريعة الاستجابة. يمكنك التحقق من ذلك أيضًا إذا كنت ترغب في بناء شيء من هذا القبيل.
أيضًا إذا لم تكن قد فعلت ذلك ، فتأكد من قراءة "قواعد" تحدي البرمجة الأسبوعي إذا كنت ترغب في المشاركة في التحدي! ولماذا لا؟ إنها طريقة رائعة لتحسين مهاراتك في البرمجة! ؟
ترميز سعيد! ؟
نُشر في الأصل على www.florin-pop.com.