سلام به همه!
اگر تمام عناصر آن در جای خود قرار داشته باشند، سایت از نظر زیبایی ظاهری دلپذیر به نظر می رسد. با این حال، اغلب مواردی وجود دارد که به نظر می رسد همه چیز عادی است، اما هنوز چیزی اشتباه است... به عنوان مثال، اگر صفحه کوتاه باشد، پاورقی به پایین صفحه فشار داده نمی شود، بلکه در جایی قرار دارد که باید باشد - بعد از بلوک اصلی سایت خیلی قشنگ به نظر نمیاد
بنابراین، امروز در مورد نحوه فشار دادن پاورقی سایت به حاشیه پایین پنجره مرورگر با شما صحبت خواهیم کرد.
بنابراین، ما شرایط زیر را برای زیرزمین تعیین می کنیم:
- هنگامی که ارتفاع پنجره مرورگر از ارتفاع صفحه بیشتر باشد، بدون توجه به محتوا، پاورقی به پایین صفحه فشار داده می شود.
- زمانی که حجم محتوا از ارتفاع پنجره مرورگر بیشتر باشد، فوتر در جای مناسب خود قرار دارد.
- در تمام مرورگرهای محبوب کار می کند.
- قابلیت اطمینان - به پیچیدگی طرح بستگی ندارد.
به عنوان مثال، بیایید یک صفحه ساده را در نظر بگیریم که از دو بلوک اصلی تشکیل شده است: اصلی و پاورقی. بیایید مطمئن شویم که بلوک اصلی، بدون در نظر گرفتن مقدار محتوا، کل منطقه پنجره مرورگر را اشغال می کند، در حالی که پاورقی را به پایین صفحه فشار می دهیم تا نوار اسکرول عمودی در مرورگر ظاهر نشود. چگونه این کار را انجام می دهیم:
مرحله 1
ما 2 بلوک می سازیم: اصلی (اصلی) و زیرزمین (پایین). ظرف اصلی را به تمام ارتفاع صفحه مرورگر (دقیقه ارتفاع) کشیده و ارتفاع پاورقی (ارتفاع) را به شدت مشخص می کنیم.
در این حالت، ارتفاع کل سایت، ارتفاع صفحه نمایش + ارتفاع فوتر خواهد بود.
گام 2
ما از یک حاشیه منفی (margin-top) برای "ورود" به بلوک اصلی استفاده می کنیم تا ارتفاع سایت فقط 100٪ ارتفاع صفحه باشد.
با این ترتیب بلوک ها و با مقدار کافی محتوا (مثلاً متن) در بلوک اصلی، می توان محتوای بلوک اصلی را در فوتر همپوشانی کرد:
مرحله 3
برای جلوگیری از این مشکل احتمالی، یک بلوک خالی در انتهای بلوک اصلی اضافه کنید که ارتفاع آن کمتر از ارتفاع پاورقی نباشد (یا بهتر است کمی بیشتر باشد تا مقداری فاصله بین محتوا و پاورقی):
حالا اگر محتوا زیاد باشد، بلوک خالی را به پایین منتقل می کند. و این پاورقی را پایین می آورد و از قرار گرفتن محتوا در آن جلوگیری می کند.
بیایید ببینیم که در کد چگونه به نظر می رسد:
<html > <سر > <عنوان >پاورقی به پایین فشار داده می شود</title> <نوع سبک = "text/css" >* (حاشیه: 0؛ بالشتک: 0؛) /* تنظیم مجدد بالشتک */ body ( پس زمینه: #fff;) html,body ( ارتفاع: 100%؛ /* تنظیم ارتفاع بدنه سند */).main (/ * بلوک اصلی، که باید تا پاورقی کشیده شود */ پسزمینه: #999؛ /* رنگ پسزمینه بلوک اصلی (برای وضوح) */ ارتفاع حداقل: 100٪؛ /* حداقل ارتفاع بلوک اصلی را تنظیم کنید */ ) * html .main ( /* هک برای ie6 */ ارتفاع: 100%؛ /* برای ie6، زیرا min-height */ را درک نمی کند).hFooter ( /* این یک فاصله در بلوک اصلی است - ما رزرو می کنیم فضا برای زیرزمین */ ارتفاع: 40 پیکسل؛ /* ارتفاع پاورقی ما */). پاورقی ( /* پاورقی */ پس زمینه: #0000CC؛ /* رنگ پس زمینه پاورقی (برای وضوح) */ رنگ: #fff؛ ارتفاع: 40 پیکسل ; /* ارتفاع پاورقی */ margin-top: -40px ؛ /* یک تورفتگی منفی در ارتفاع برابر با ارتفاع پاورقی ایجاد کنید تا به وضوح در اندازه صفحه قرار گیرد */)</style> </head> <بدن > <div class = "main" >این بلوک اصلی است<div class = "hFooter" > div > </div> <div class = "footer" >اینجا زیرزمین است</div> </body> </html> |
توجه: هنگام استفاده از طرح بندی بلوک و بلوک های اصلی شناور (ستون ها) برای hFooter، باید clear: هر دو را اضافه کنید تا پاورقی در زیر ستون ها قرار گیرد.:
hFooter ( روشن : هر دو ؛ ارتفاع : 40 پیکسل ؛ ) |
اگر قبلاً کمی تسلط داشته اید، ممکن است این سؤال پیش بیاید: "چرا وقتی می توانید از padding-bottom از یک عنصر اضافی استفاده کنید؟"
پاسخ این است که شما نمی توانید فقط از آن در اینجا استفاده کنید، زیرا اندازه بلوک برابر با ابعاد آن + عرض لایه داخلی + عرض حاشیه ها است. ترکیبی از حداقل ارتفاع: 100٪ و padding-bottom ارتفاع سایت را بیشتر از ارتفاع صفحه نمایش می دهد. در نتیجه، حتی اگر اصلاً محتوایی وجود نداشته باشد، فوتر خارج از صفحه خواهد بود.
نقطه ضعف این تکنیک استفاده از یک عنصر خالی اضافی hFooter است. در شرایط واقعی (زمانی که محتوای سایت خالی نیست و از طرح بندی بلوک استفاده می شود)، با استفاده از این تکنیک می توان از این امر جلوگیری کرد تا به پاکسازی جریان بدون استفاده از عنصر اضافی کمک کند و از تداخل محتوا با فوتر جلوگیری شود. در ستون ها padding-bottom را می نویسیم.
مشکلات با لایه های z
در تکنیکی که در بالا توضیح داده شد، پاورقی با یک فرورفتگی منفی به سمت بالا بالا آمده است. این یک مشکل بالقوه با لایه های z ایجاد می کند. به عنوان مثال، ما باید یک پنجره پاپ آپ را نشان دهیم (بگذارید یک div باشد)، که نسبت به ظرف اصلی قرار می گیرد.
<div class = "main" > [...] <div class = "popup" > [...] </div> </div> <div class = "footer" > [...] </div> |
.main ( موقعیت : نسبی ; z-index : 1 ; /* z-index کمتر از فوتر به طوری که قابل مشاهده باشد */) .popup ( موقعیت : مطلق ; z-index : 100 ; [ ...] ) .footer ( ارتفاع : 50px ; margin-top : -50px ; position : نسبی ; /* بنابراین می توانید z-index */ را تنظیم کنید z-index: 2; /* بیشتر از اصلی برای قابل مشاهده بودن */} |
همه چیز خوب است تا زمانی که پنجره پاپ آپ و پاورقی ما با هم تلاقی پیدا کنند (و این وضعیت اغلب اتفاق می افتد) - از اینجاست که مشکلات شروع می شوند. علیرغم این واقعیت که پنجره پاپ آپ دارای بالاترین z-index است، با فوتر همپوشانی خواهد داشت، زیرا پنجره والد دارای z-index کمتر از پاورقی است:
در این مورد، باید به دنبال فرصتی باشید تا پنجره را نه نسبت به اصلی، بلکه نسبت به عنصر فرزند دیگری که در داخل اصلی قرار دارد، قرار دهید. بنابراین، از تعیین z-index برای main و footer خلاص خواهیم شد. اما این گزینه همیشه امکان پذیر نیست، بنابراین بیایید گزینه دوم فشار دادن فوتر را در نظر بگیریم.
راه حل 2 - موقعیت یابی مطلق
ایده مشابه راه حل 1 است:
- بلوک اصلی را به تمام ارتفاع صفحه کشش می دهیم.
- ما فضایی را برای زیرزمین رزرو می کنیم.
- نسبت به بلوک اصلی، زیرزمین را با استفاده از موقعیت مطلق در پایین قرار می دهیم.
HTML:نسبت فامیلی ؛ /* به طوری که عناصر فرزند نسبت به این بلوک قرار می گیرند */) .footer (ارتفاع: 50px؛ موقعیت: مطلق؛ سمت چپ: 0؛ پایین: 0؛ عرض: 100%؛ ) * html.footer ( bottomy: express(parentNode.offsetHeight % 2 ? style.bottom= "-1px": style.bottom= "0px" ); /* هک برای e6 که دارای یک جاب با افست 1 پیکسل است */}
این روش مشکل پنجره های پاپ آپ را حل می کند، زیرا ... هم فوتر و هم پاپ آپ یک والد مشترک خواهند داشت، به این معنی که هیچ شگفتی با لایه های z وجود نخواهد داشت.
عیب هر دو روش این است که هر دو روش فقط برای یک زیرزمین با ارتفاع ثابت مناسب هستند.
برای امروز کافی است. اکنون می دانید که چگونه فوتر را به روش های مختلف به پایین صفحه فشار دهید و چه مشکلاتی ممکن است ایجاد شود.
در به روز رسانی ها مشترک شوید و منتظر انتشارات جدید جالب باشید. خدا حافظ.
پاورقی را به پایین صفحه فشار دهید. الزامات:
- وقتی ارتفاع پنجره مرورگر بیشتر از ارتفاع صفحه باشد، بدون توجه به محتوا، پاورقی به پایین صفحه فشار داده می شود.
- زمانی که حجم محتوا از ارتفاع پنجره مرورگر بیشتر باشد، فوتر در جای مناسب خود قرار می گیرد
- در تمام مرورگرهای محبوب کار می کند
- قابلیت اطمینان - به پیچیدگی طرح بستگی ندارد
تئوری
تمرین خوبی است که کل قسمت موجود از صفحه مرورگر را با سایت پر کنید (حداقل از نظر ارتفاع برای طرح هایی که از نظر عرض ثابت هستند).
راه حل
به عنوان مثال، بیایید یک صفحه ساده را در نظر بگیریم که از دو بلوک اصلی تشکیل شده است: اصلی و پاورقی. بیایید مطمئن شویم که بلوک اصلی، بدون در نظر گرفتن مقدار محتوا، کل منطقه پنجره مرورگر را اشغال می کند، در حالی که پاورقی را به پایین صفحه فشار می دهیم تا نوار اسکرول عمودی در مرورگر ظاهر نشود. چگونه این کار را انجام می دهیم:
مرحله 1
ما 2 بلوک می سازیم: اصلی (اصلی) و زیرزمین (پایین). محفظه اصلی را به تمام ارتفاع صفحه مرورگر کش می دهیم () و ارتفاع پاورقی () را به طور محکم مشخص می کنیم.
در این حالت، ارتفاع کل سایت، ارتفاع صفحه نمایش + ارتفاع فوتر خواهد بود.
گام 2
یادداشت: هنگام استفاده از طرح بندی بلوک و بلوک های اصلی شناور (ستون ها) برای hFooter، باید : هر دو را اضافه کنید تا پاورقی در زیر ستون ها قرار گیرد.:
HFooter ( واضح: هر دو؛ ارتفاع: 40 پیکسل؛ )
تست شده در:
یادداشت 1:اگر قبلاً کمی به CSS تسلط داشته باشید، ممکن است این سوال پیش بیاید: "چرا اگر می توانید از یک عنصر اضافی استفاده کنید؟". پاسخ این است که شما نمی توانید فقط از آن در اینجا استفاده کنید، زیرا ... اندازه یک بلوک برابر است با عرض و ارتفاع آن + مجموع لایه های داخلی + مجموع ضخامت های حاشیه. لینک: 100% و ارتفاع سایت را بیشتر از ارتفاع صفحه نمایش می دهد. در نتیجه، حتی اگر اصلاً محتوا وجود نداشته باشد، پاورقی خارج از "صفحه اول" خواهد بود. برای چگونگی دور زدن این موضوع به زیر مراجعه کنید.
تبصره 2.در اپرا نسخه 9.5 و بالاتر، این مثال هنگام افزودن doctype کار نخواهد کرد. گزینه های راه حل:
- حداقل یک بلوک شناور به تگ کانتینر اصلی اضافه کنید: این بلوک اصلی است