i
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت به کلی متفاوت و کاملتر خواهد بود، این فرآیند زمانبر و از مدتی پیش شروع شده و همچنان ادامه دارد، روند پیشرفت پروژه در این قسمت به صورت درصدی مشخص است و به تناوب به روزرسانی می شود.
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
article

تنظیم موقعیت در وسط و حذف حاشیه ها با CSS

css-body-div-center

اگر یک طراح وب حرفه ای یا علاقمند به طراحی قالب شخصی برای سایت یا وبلاگ خود باشید حتما با کدهای CSS آشنا هستید و بارها از آنها در شکل دهی فرم و ظاهر صفحات وب استفاده کرده اید، اگرچه کار با CSS به طور کلی چندان پیچیده و سخت نیست اما همواره جزئیات و ریزه کاری هایی وجود دارند که باعث می شوند نکاتی هرچند ساده به نظر مبهم و حل نشده باقی بمانند، در این مطلب می خواهیم یکی از شایع ترین این موارد را با هم مرور کنیم که تنظیم موقعیت عناصر HTML و به طور خاص بلاک های div در وسط بلاک والد یا در مرکز صفحه نمایش و همچنین حذف حاشیه ها از لبه های کناری مرورگر و صفحه نمایش به کمک CSS است، این نوع تکنیک ها معمولا در طراحی رابط کاربری وب و قالب هایی که از تمام ظرفیت صفحه نمایش استفاده می کنند مورد نیاز خواهند بود.

نحوه تنظیم بلاک در وسط بلاک والد با استفاده از CSS


در هنگام طراحی و کدنویسی قالب های وب معمولا تنظیم بلاک ها در سمت چپ یا راست بلاک والد به کمک عنصر float و مقادیر left, right یا استفاده از display با مقادیر inline-block و در نظر گرفتن margin مناسب به آسانی ممکن است، اما مشکل بیشتر کاربران تنظیم بلاک در وسط بلاک والد آن است که در تمام مرورگرها نیز یکسان باشد، در مثال زیر این کار را برای لایه div با کلاس فرضی center-block انجام داده ایم:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | تنظیم بلاک در وسط بلاک والد با CSS</title>
<!-- Webgoo.ir -->
<style type="text/css">
html, body{
    margin:0px;
    padding:0px;
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.parent-block{
    width:100%;
    height:200px;
    background-color:#C0C0C0;
    border:1px solid #F90004;    
}
.center-block{
    width:300px;
    height:200px;
    background-color:#CC3;
    margin-left:auto;
    margin-right:auto;
}
</style>
</head>
<body>
<div class="parent-block">
<div class="center-block"></div>
</div>
<hr>
برای تنظیم بلاک در وسط بلاک والد از margin-left و margin-right با مقادیر auto استفاده می کنیم، در نمونه کد بالا بلاک رنگی در وسط بلاک والد خود قرار گرفته و متمایز است.
</body>
</html>
پیش نمایش
همانطور که در کد ملاحظه می کنید از margin-left و margin-right با مقادیر auto استفاده کرده ایم، با این کار مرورگر بلاک مربوطه را در وسط بلاک والد آن تنظیم می کند، علاوه بر این می توانیم با مقادیر 
margin: 0 auto;
نیز یک بلاک را در وسط عنصر والد آن تنظیم کنیم.

نحوه تنظیم بلاک در وسط صفحه با استفاده از CSS


در طراحی رابط کاربری وب ممکن است نیاز به نمایش بلاکی در وسط صفحه مرورگر باشد که معمولا جهت نمایش پنجره پاپ آپ سفارشی یا نمایش پیام تائید، ایجاد قسمت ورود به سایت و مواردی از این دست استفاده می شود، طراحی این قسمت نیز با کدنویسی HTML و تعیین استایل CSS مناسب ممکن است:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | تنظیم بلاک در وسط صفحه نمایش با CSS</title>
<!-- Webgoo.ir -->
<style type="text/css">
html, body{
    margin:0px;
    padding:0px;
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.popup-block{
    position:fixed;
    top:50%;
    left:50%;
    width:300px;
    height:200px;
    margin-top:-100px;
    margin-left:-150px;
    background-color:#318DAF;    
}
</style>
</head>
<body>
<div class="popup-block"></div>
<hr>
برای تنظیم بلاک در وسط صفحه نمایش از position با مقادیر fixed یا absolute استفاده می کنیم، همچنین خاصیت های top و left باید با مقدار 50 درصد تعریف شوند، نکته مهم دیگر اینکه متناسب با top و left باید margin-top و margin-left با نصف مقدار height و width به صورت منفی مقداردهی شوند.
</body>
</html>
پیش نمایش
از چند خاصیت در این تکنیک استفاده شده، ابتدا بلاک div را با اندازه پیکسلی مشخص ایجاد و با خاصیت position و مقادیر fixed یا absolute مقداردهی می کنیم، این کار باعث می شود بلاک ما به صورت مستقل از سایر عناصر والد خاصیت های CSS را اجرا کند، در گام دوم برای اینکه بلاک در وسط صفحه قرار بگیرد با خاصیت top و left (یا right) از بالای صفحه نمایش 50 درصد و از سمت چپ (یا راست) نیز 50 درصد حاشیه ایجاد می کنیم، با توجه به اینکه تاثیر مقادیر از لبه های کناری بلاک محاسبه می شود و عنصر دقیقا در وسط صفحه قرار نمی گیرد باید margin-top و margin-left با مقادیر منفی در نظر بگیریم تا دقیقا از وسط بلاک مقدار top و left محاسبه شود، قاعدتا برای این کار باید margin-top و margin-left را با نصف مقادیر height و width به صورت منفی در نظر بگیریم تا بلاک از موقعیت فعلی خود به سمت بالا و چپ حرکت کند و دقیقا در وسط صفحه نمایش قرار گیرد.

حذف حاشیه ها از لبه های کناری با استفاده از CSS


به طور معمول مرورگرهای وب خاصیت هایی را با مقادیر مشخص به صورت پیش فرض روی عناصر موجود در صفحه وب اعمال می کنند که یکی از این موارد در نظر گرفتن مقدار padding و margin برای تگ html یا body است که موجب می شود اندک فضای خالی در گوشه ها و لبه های کناری مرورگر و صفحه نمایش ایجاد شود، خوشبختانه برای حذف این حاشیه هایی که شاید مد نظر ما نباشند می توانیم در قسمت استایل CSS برای این دو تگ padding و margin اختصاصی با مقدار 0 تعریف کنیم تا قالب به اصطلاح به طور کامل به گوشه های پنجره مرورگر بچسبد و تمام فضای موجود را پوشش دهد، به طور مثال:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | حذف حاشیه ها از لبه های کناری با استفاده از CSS</title>
<!-- Webgoo.ir -->
<style type="text/css">
html, body{
    margin:0px;
    padding:0px;
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.top-block{
    width:auto;
    height:200px;
    background-color:#CC3;
}
</style>
</head>
<body>
<div class="top-block"></div>
<hr>
 با استفاده از ویژگی های padding و margin و در نظر گرفتن مقدار 0 برای تگ html و body، فاصله پیش فرض حاشیه های صفحه نمایش از تگ والد قالب حذف می شود.
</body>
</html>
پیش نمایش
در مثال بالا بلاکی با کلاس فرضی top-block را بین تگ body ایجاد کرده ایم که حاشیه آن 0 است و برای body و html نیز از مقادیر padding و margin با مقدار 0 استفاده کرده ایم، به این ترتیب هیچ حاشیه اضافه ای بین قالب وب و صفحه نمایش ایجاد نمی شود و می توانیم از تمام فضای موجود استفاده کنیم، این شیوه امروزه یک روش مرسوم در بین طراحان وب و به خصوص در طراحی قالب های واکنشگرا (Responsive) است، برخی طراحان نیز از فایل هایی تحت عنوان Reset استفاده می کنند که با این روش تمام خاصیت های پیش فرض CSS مرورگرها را نادیده می گیرند.
نکته: با وجود اینکه در استانداردهای جدید کنسرسیوم جهانی وب W3C تگ html نباید padding و margin پیش فرض داشته باشد، با این حال برخی مرورگرها همچنان رویه خاص خودشان را دارند و بهتر است که در کنار تگ body برای تگ html نیز padding و margin را برابر 0 قرار دهیم.
sectionدسته بندی: آموزش کاربردی » CSS
related مطالب بیشتر:
» آموزش استفاده از فونت فارسی در وب با CSS
» مخفی کردن عناصر وب با CSS
» ایجاد منو برای سایت یا وبلاگ با استفاده از CSS
» تنظیمات css مخصوص مرورگر اینترنت اکسپلورر
» چسبیدن فوتر قالب به پائین صفحه با CSS
commentنظرات (۲۶ یادداشت برای این مطلب ارسال شده است)
نویسنده: میلاد
زمان: ۱۴:۳۲:۳۹ - تاریخ: ۱۳۹۱/۰۴/۲۹
سلام بر استادان سایت وبگو
استاد اول بخاطر این سایت خیلی خیلی خوب از شما تشکر میکنم دوم استاد من میخوام یه سایت مثل سایت شما با استفاده از html و css بسازم منو راهنمایی کنید.
آموزش های css رو ادامه بدین من کل اینترنت رو گشتم ولی سایتی مثل سایت شما پیدا نکردم.
پاسخ: 
نظر لطف شماست دوست گرامی، سایت های بسیار خوبی به زبان فارسی در وب فعالیت می کنند، تلاش ما بر این است که جزء یکی از خوب ها باشیم.
در مورد ایجاد سایت با HTML و CSS واقعیت این است که انجام این کار علاوه بر موارد گفته شده نیازمند آشنایی با یکی از زبان های سمت سرور مثل PHP ،ASP و... است، البته این موضوع بستگی به هدف شما نیز دارد، چرا که سیستم های مدیریت محتوا (CMS) متن باز (Open Source) زیادی برای ایجاد سایت قابل استفاده است مانند جوملا، وردپرس و... که عموما نیاز های وبمسترها را برآورده می کنند، اما اگر می خواهید همه چیز باب میل خودتان باشد، لازمه آن تسلط و تجربه نسبی در وب است و جز این چاره ای نیست.
نویسنده: فریبا
زمان: ۲۲:۲۹:۱۰ - تاریخ: ۱۳۹۱/۰۵/۱۵
سلام
بابت مطالب عالی سایتتون یه دنیا از تون ممنونم.
یه سوال: چطور میشه داخل یک div دو تا div دیگر گذاشت یعنی یه div برای کل سایت که داخلش یه div برای هدر یه div برای فوتر یه div برای محتوا که داخل این div دو تا div دیگه یکی برای منوهای عمودی یکی هم برای متن.
پاسخ: 
این کار چندان سخت نیست، منتها اگر با CSS و خاصیت های عناصر آن آشنا باشید، در html کافی است بلاک های div را تو در تو و طبق قاعده تگ ها، با توجه به نیاز خود در طراحی، ایجاد کنید، به فرض مثال زیر را ملاحظه کنید:
<div><!-- شروع بلاک اصلی -->
<div></div><!-- بلاک هدر -->
<div></div><!-- بلاک منوی سایت -->
<div><!-- شروع بلاک محتوا -->
<div></div><!-- سایدبار سمت راست -->
<div></div><!-- محتوای وسط صفحه -->
<div></div><!-- سایدبار سمت چپ -->
</div><!-- پایان بلاک محتوا -->
</div><!-- پایان بلاک اصلی -->
به این حالت در اصطلاح بلاک های آشیانه ای می گویند، در کل محدودیتی به لحاظ تعداد بلاک های تو در تو نیست، اما به طور طبیعی میزان استانداردی از آنها، قالب های معمول وب را فرم می دهند و نیازی نیست که الزاما از تعداد زیادی div استفاده کنیم، پس از قرار دادن div ها، بخش مهم کار، استایل نویسی و نسبت دادن کلاس های css به آنها است که لازمه آن، آشنایی و تجربه نسبی در این خصوص است.
نویسنده: سعید
زمان: ۰۳:۰۰:۰۵ - تاریخ: ۱۳۹۱/۰۷/۱۲
مرسی از آموزشهای خوبتون. یه سوال: اگر بخوایم موقع تغییر اندازه صفحه شکل تگهای دیو ثابت بمونه باید چه روشی رو پیش بگیریم؟
پاسخ: 
برای اینکه اندازه تگ های div مقادیر ثابت باشد باید از مقدار دهی پیکسلی (px) استفاده کنید، دقت کنید که اگر بلاک div زیرمجموعه بلاک دیگری باشد، بلاک اصلی هم باید به صورت پیکسلی مقدار دهی شود.
نویسنده: ahmad
زمان: ۰۱:۴۰:۰۱ - تاریخ: ۱۳۹۱/۱۱/۱۷
واقعا عالیه در حد لالیگا
نویسنده: Mehran
زمان: ۱۱:۵۲:۳۰ - تاریخ: ۱۳۹۱/۱۲/۲۱
یه دنیا ممنون...
نویسنده: فريبا
زمان: ۱۷:۳۱:۲۳ - تاریخ: ۱۳۹۲/۰۴/۰۵
سلام
اگه ممكنه در مورد فريم ورك هاي CSS هم توضيح بدين؟
ممنون
پاسخ: 
اگر منظورتان آموزش نحوه طراحی فریم ورک های CSS است، به جهت مفصل و پیشرفته بودن مبحث در آینده به آن خواهیم پرداخت، اما به اختصار مانند سایر زبان های برنامه نویسی، در CSS نیز برای اهداف زیر از فریم ورک استفاده می شود:
- یک بار نویسی و چندین بار استفاده.
- توسعه پذیری.
- یکپارچگی.
- و...
به عبارت دیگر فریم ورک در اینجا چیزی نیست جزء مجموعه ای منظم از کلاس ها و الگوهای آماده در یک یا چند فایل CSS که می توان در پروژه های مختلف (بدون نیاز به نوشتن کدها و اعمال تغییرات جدید) از آنها استفاده کرد، این شیوه بیشتر مورد استفاده افراد و شرکت هایی است که به طور اختصاصی در زمینه طراحی وب فعال هستند و مهم ترین مزیت آن افزایش سرعت در انجام کارها است.
نویسنده: amirhossein
زمان: ۱۳:۰۳:۲۳ - تاریخ: ۱۳۹۲/۰۴/۱۶
خیلی گلی داداش ممنون من به max-height توجه نکرده بودم :دی
نویسنده: amirhossein
زمان: ۱۴:۱۰:۵۸ - تاریخ: ۱۳۹۲/۰۴/۱۶
سلام
من کل مطالب آموزشی سی اس اس ها رو خوندم خیلی عالی بود بی نهایت تشکر میکنم همیشه موفق باشید و امیدوارم این اموزش ها ادامه داشته باشه
اگه امکانش هست واسم یه باکس درست کنید و با یه دکمه که روی آن دکمه کلیک کنی ارتفاع باکس دو یا سه برابر بشه آیا امکان نوشتن همچین ابزاری با سی اس اس هست؟ ممنون
پاسخ: 
نظر لطف شما است، در مورد نوشتن باکس که با کلیک تغییر اندازه دهد، متاسفانه به دلیل فرصت کم امکان نوشتن کد نیست، ضمن اینکه در CSS رویداد خاصی برای onclick وجود ندارد، تنها مورد مشابه selector active است که با onclick فرق می کند، حالت active زمانی اجرا می شود که ماوس در حالت نگهداشته شده باشد، مثال:
#block {
width:100px;
height:50px;
}
#block:active {
width:300px;
height:150px;
}
برای onclick باید از جاوا اسکریپت استفاده کنید.
نویسنده: amirhossein
زمان: ۱۷:۴۷:۲۲ - تاریخ: ۱۳۹۲/۰۴/۱۶
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><-BlogAndPostTitle-></title>
<meta name="description" CONTENT="<-BlogAndPostTitle-> - <-BlogDescription->" />
<meta name="keywords" content="<-BlogAndPostTitle->, <-BlogId->" />
<meta http-equiv="Cache-control" content="public" />
<meta name="generator" content="blogfa.com" />
<link rel="alternate" type="application/rss+xml" title="<-BlogTitle->" href="<-BlogXmlLink->" />
<meta name="robots" content="index, follow" />
<meta name="author" content="<-PostAuthor->" />
<meta name="copyright" content="Copyright (C) 2013" />
<meta name="designer" content="قالب های پاتوق باز طرح | patoghbaz.ir" />
<link rel="shortcut icon" href="http://s2.picofile.com/file/7708795050/img1.gif" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
</body>
</html>
این متا تگ ها مشکلی ندارند؟
پاسخ: 
مشکل خاصی دیده نمی شود!
نکته: لطفا حتی الامکان سوالات را در مطالب مرتبط مطرح نمائید.
نویسنده: amirhossein
زمان: ۲۱:۱۶:۳۳ - تاریخ: ۱۳۹۲/۰۴/۱۶
چشم داداش عذر میخوام مزاحم شدم بازم مزاحم میشم اگه مشکلی نباشه ممنون بابت جواب موفق باشید
نویسنده: شقایق
زمان: ۱۷:۵۳:۲۸ - تاریخ: ۱۳۹۲/۰۴/۲۲
مرسی مرسی مرسی
نویسنده: hosein
زمان: ۱۹:۵۵:۳۷ - تاریخ: ۱۳۹۲/۱۰/۳۰
سلام
ممنون از آموزشهاي css
من يه مشكل دارم و اونم نحوه اولويت بندي بلاك هاي css در صفحه هست يعني چطوري ميتونم تعيين كنم كه كدوم بلاك روي بلاك ديگه نمايش داده شه.
مثلا ّبلاك منو و بلاك اسلايدر خبري
من ميخوام بلاك منو روي بلاك اسلايدر نمايش داده بشه؟
پاسخ: 
برای این موارد باید بر خاصیت های مختلف CSS و اثر آنها در تنظیم عناصر HTML، با تمرین و تکرار زیاد مسلط شوید، پاسخ ساده ای برای سوالتان وجود ندارد!
نویسنده: مژگان
زمان: ۱۲:۳۹:۴۰ - تاریخ: ۱۳۹۳/۰۳/۳۱
سلام. سایتت خیلی عالیه. خیلی ممنون بابت مطالب مفیدی که میذاری تو سایت.
یه سوال دارم کدی که میذارم رو ببین. میخوام که یه دایو 100% پهنا داشته باشه و داخل اون 3 تا دایو داشته باشم که هر کدوم 33% پهنا داشته باشه. این کد رو نوشتم ولی در تغییر سایز ستون سوم میره خط بعد.
<html>
<head>
<meta charset="utf-8"/>
<title>
test
</title>
</head>
<style>
.main{
width:100%;
height:100%;
display: inline-block;
}
.col1{
width:33%;
height:100%;
display: inline-block;
background-color:#fa1;
}
.col2{
width:33%;
height:100%;
display: inline-block;
background-color:#bb8;
}
.col3{
width:33%;
height:100%;
display: inline-block;
background-color:#f88;
}
</style>
<body>
<div class="main">
<div class="col1">
ستون اول
</div>
<div class="col2">
ستون دوم
</div>
<div class="col3">
ستون سوم
</div>
</div>
</body>
</html>
پاسخ: 
برای مشکل به هم ریخته شدن بلاک ها در هنگام Zoom مرورگر چاره استانداردی وجود ندارد، تنها راه حل این است که طوری فرمت بندی کنید که یک فضای خالی برای بلاک ها وجود داشته باشد، به طور مثال به جای 33 از 32 درصد استفاده کنید، سایت های زیادی در وب در قسمتی این مشکل را دارند و لذا این حالت خیلی عجیب نیست!
نویسنده: مژگان
زمان: ۲۱:۲۲:۴۷ - تاریخ: ۱۳۹۳/۰۴/۰۲
اما من اگه 32 هم میدم بازم وقتی صفحه رو خیلی کوچیک کنم باز ستون سوم میاد خط بعد!؟!؟
پاسخ: 
32 یک مثال بود! باید طوری فرمت بندی کنید که به اینگونه مشکلات بر نخورید، به طور مثال ساختار تو در توی بهتری ایجاد کنید، یا بدون اینکه در ظاهر کار خللی ایجاد شود، در موارد لازم فاصله های خالی در بین بلاک های قالبتان داشته باشید (در کل رفع اینگونه مشکلات تا حدود زیادی به داشتن تجربه کار با CSS برمی گردد و فرمول ثابتی وجود ندارد!).
نویسنده: تیمور
زمان: ۱۰:۳۸:۳۷ - تاریخ: ۱۳۹۳/۰۴/۰۸
سلام
من مشکل مژگان رو خوندم و تست کردم
من به جای استفاده از div از span استفاده کردم
هنوز اول کارم ولی فکر کنم یه جا خونده بودم که div یک تگ outline و span یک تگ inline هست که باعث میشه ستون ها توی یه خط قرار بگیرن..
پاسخ: 
ضمن تشکر از شما به خاطر شرکت در بحث، البته مشکل این کاربر به حالت Zoom صفحه مربوط می شود که حتی در حالت inline باعث به هم ریخته شدن بلاک های در یک ردیف می شود.
paged صفحه 1 از 2




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

3 × 8
 refresh
آگهی
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...
پرشین آی تی
Persianit.net

آموزش و دانلود پروژه های برنامه نویسی سی شارپ (#C)
سامانه استخدام ایران
Iran-karyab.com

اطلاع رسانی استخدام های معتبر دانلود رایگان نمونه سئوالات