أود أن أشارككم حلّي لتثبيت التذييل (footer) في أسفل الصفحة دون الحاجة إلى JavaScript (بديل لـ هذا الطلب)، مع افتراض معرفتك بارتفاع التذييل الخاص بك. لقد أضفتُ 100 بكسل إضافية لتذييلي فقط للحصول على مساحة بين المحتوى والتذييل.
في حال كان لديك تذييل أكبر يحتوي على أعمدة متعددة، يُفضّل تعيين ارتفاع ثابت مختلف في تبويب الجوال.
الخطوة 1: الصق الكود التالي داخل تبويب CSS المشترك:
body {
position: relative;
}
#main {
margin-bottom: 350px; /* يساوي ارتفاع التذييل - غيّر القيمة حسب حاجتك، في كل من تبويب CSS المشترك وتبويب الجوال */
}
#sticky-footer {
padding: 50px 0;
background: var(--header_background); /* اختياري */
color: var(--primary-medium); /* اختياري */
text-align: center; /* اختياري */
position: absolute;
bottom: 0;
width: 100%;
left: 0;
}
الخطوة 2: انتقل إلى تبويب </body> والصق كود HTML الخاص بالتذييل بداخله
أنت تخبرني جيف ..هل نحتاج إلى تثبيت مكونات لكل كود HTML و CSS إضافي؟
هذه ليست دورة “كيفية إنشاء تذييل” بل هي أكثر من مجرد حل بديل سريع لجعل التذييل يلتصق بأسفل الصفحة لأولئك الذين قد يرغبون في إنشاء تذييل خاص بهم.
حسناً، أفكاري هي أننا نريد من الناس استخدام مكونات السمة كلما أمكن ذلك، لأنها “رسمية” من جانبنا وبالتالي تحصل على دعم كامل، وتحديثات تلقائية، وما إلى ذلك. ما رأيكم @awesomerobot@Johani و @jordan.vidrine؟
نعم، إذا كان مكون التذييل الرسمي يناسب احتياجاتك، فهذا أمر جيد لأننا نقوم بتحديثه لك، لكن بعض الأشخاص قد يفضلون تخطيطًا مختلفًا.
لقد قمتُ بشيء مشابه من قبل… وهي عملية مماثلة لما ورد في المنشور الأصلي. تقوم بضبط ارتفاع #main-outlet ليكون 100% من ارتفاع نافذة العرض (100vh) مطروحًا منه ارتفاع التذييل والرأس. وبذلك، في الصفحات القصيرة، سيظهر التذييل مباشرة في الأسفل.
#main-outlet {
box-sizing: border-box; // يتضمن الحشو في حساب الارتفاع
}
<script type="text/x-handlebars" data-template-name="/connectors/below-footer/my-footer">
محتوى التذييل الخاص بي
</script>
<script type="text/discourse-plugin" version="0.8">
api.decoratePluginOutlet(
"below-footer",
(elem, args) => {
let headerHeight = document.querySelector(".d-header").offsetHeight;
let footerHeight = document.querySelector(".below-footer-outlet").offsetHeight;
let mainOffset = headerHeight + footerHeight;
document.querySelector("#main-outlet").style.minHeight = "calc(100vh - " + mainOffset + "px)";
}
);
</script>
يُطرح هذا السؤال بشكل متكرر بما يكفي، لذا ربما يكون من الجيد تنفيذ شيء مشابه تلقائيًا في النواة الأساسية إذا كان هناك محتوى في footer.html أو في أي من مخرجي التذييل الإضافيين.