View Full Version : چگونه منویی به صورت افقی باcss طراحی کنیم؟
sogol_web
شنبه 19 فروردین 1391, 12:12 عصر
سلام من میخواهم منویی به صورت افقی مانند منوی سایت زیر طراحی کنم لطفا راهنمایی کنید
ممنون
http://www.freewebsitetemplates.com/preview/ecologicalwebsitetemplate/
cyrusthegreat
شنبه 19 فروردین 1391, 12:23 عصر
دوست عزیز
شما می خوایید این منو رو با عکس بسازید و یا با خود CSS؟
اگر عکس باشه، تو همه ی مرورگر های نمایش داده می شه. اگر با CSS و نسخه 3 اون باشه، فقط در IE 9 به پایین، اون گوشه های گرد رو نمی شه ایجاد کرد. حالا شما کدومش رو می خوایید تا من آموزشش رو خدمتتون بدم.
بطور کلی، من CSS 3 رو پیشنهاد می کنم.
sylverstar
شنبه 19 فروردین 1391, 21:35 عصر
برای من هم سواله. اگر میشه لطف کنید و هر دو راه را توضیح بدهید. ممنون
cyrusthegreat
شنبه 19 فروردین 1391, 22:23 عصر
باشه دوست عزیز. فایل هارو آماده می کنم و در اختیار دوستان قرار می دم.
sogol_web
شنبه 19 فروردین 1391, 23:04 عصر
ممنون میشم اگر با css برای من توضیح دهید
با تشکر
cyrusthegreat
شنبه 19 فروردین 1391, 23:41 عصر
دوست عزیز
این فایل رو دریافت کنید. این منویی شبیه همین منو ای که شما می خواستید هست. دریافت کنید، تا منم توضیحاتش رو بنویسم براتون.
cyrusthegreat
یک شنبه 20 فروردین 1391, 00:30 صبح
خب دوست عزیز
بعد از اینکه دوبار متن رو نوشتم و پاک شد، این برای بار سوم هستش.
خب در فایل CSS ما تا قبل از خط 66، یا قبل از کامنت
/* Menu Shodow Effect */
ظاهر رنگی منو رو مشخص کردیم که فکر نکنم، برای شما این سوال بوده. بلکه اون زیر سایه برای شما مهم بوده. برای اون از خط 66 به بعد کد زده شده. خب اول بریم سراغ نحوه ی قرار گیری المنت هامون:
<div class="menu">
<ul>
<li><a href="#">home</a></li>
<li><a href="#">about us</a></li>
<li><a href="#">contact us</a></li>
<li><a href="#">blog</a></li>
</ul>
<div class="clear"></div>
</div>
ما استایل رو به تگ ul دادیم و اون زیر سایه رو به div والد که کلاسش menu هست. خب کد مربوط به زیر سایه این هستش:
/* Menu Shodow Effect */
div.menu {
position: relative;
float: left;
}
div.menu:after {
content:"";
position: absolute;
z-index: -2;
bottom: 20px;
right: 10px;
left: auto;
width: 50%;
height: 20%;
-webkit-box-shadow: 0 15px 15px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 15px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 20px 10px rgba(0, 0, 0, 0.5);
-webkit-transform: rotate(3deg);
-moz-transform: rotate(3deg);
-ms-transform: rotate(3deg);
-o-transform: rotate(3deg);
transform: rotate(3deg);
}
اول اومدیم خود منو رو انتخاب کردیم و بهش مقادیر زیر رو اختصاص دادیم:
position: relative;
float: left;
این مقدایر برای جایگیری مناسب زیر سایه هست. برای مشاهده اینکه هرکدوم برای چی هست، می تونید یکی یکی پاک کنید، و نتیجه رو ببینید.
بعد یه سلکتور داریم به اینصورت:
div.menu:after
سلکتور
:after
:before
برای اضافه کردن یک متن به بعد یا قبل یه المنت بکار می ره که اون متن رو ما در مقدار content قرار می دیم. همونطور که می بینید، ما چون هیچ متنی نمی خواییم اضافه کنیم، مقدار اون رو خالی گذاشتیم. content:"";
سپس با استفاده از position: absolute;
این عنصر رو بگونه ای جایگزاری کردیم، که نسبت به اولین المنتی که قبل از اون هست، یعنی همون div والد ما، حالت absolute بگیره، و با دادن مقادیر، top، left، right و bottom جایگیریش رو مشخص کنیم. در نظر داشته باشید که وقتی به position یک المنت مقدار absolute می دیم، اون المنت نسبت به اولین المنتی که مقدار positionای غیر از Static که پیشفرض تمامی المنت ها هست، داشته باشه، موقعیت خودش رو مشخص می کنه. حالا چون ما div والد رو position: relative دادیم، پس نسبت به این موقعیت خودش رو مشخص می کنه.
سپس مقدار زیر رو دادیم: z-index: -2;
این مقدار برای این هست، که المنت ما در زیر دیگر المنت ها قرار بگیره. چون مقدار z-index پیشفرض تمامی المنت ها در صورت ندادن مقدار، از والدشون گرفته می شه که تگ والد ما body هست و اون هم در جلوی صفحه قرار داره. پس با دادن یک مقدار منفی اون رو به زیر می فرستیم. حالا مقدار زیر رو داریم:
bottom: 20px;
این مقدار فاصله از پایین رو مشخص می کنه که با دومین مقدار box-shadow ما برابر هست. این برای نمایش بهتر هستش. یه نکته ای که بگم این هست که در فایلی که آپلود کردم این مقدار مشکل داره. یعنی اینجوریه:
-webkit-box-shadow: 0 20px 15px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 20px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 20px 10px rgba(0, 0, 0, 0.5);
که باید اون 15px ها ی دو مقدار اولی رو به 20px تغییر بدیم. البته چون نسخه های آخر مرورگر های Chrome، Firefox و Safari از همون مقدار box-shadow بدون پیشوند پشتیبانی می کنن، و این مقدار بعد از اون دوتا اومده مشکلی ایجاد نمی کنه. ولی در نسخه ها قدیمی اونها مثل Firefox نسخه 3.6 این دستور مشکل ایجاد می کنه. بهتره شما اونها رو با این مقدار جایگزین کنید:
-webkit-box-shadow: 0 10px 10px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0 20px 10px rgba(0, 0, 0, 0.5);
box-shadow: 0 20px 10px rgba(0, 0, 0, 0.5);
سپس دستور right: 10px;
رو داریم که برای این هست که زیر سایه ما از سمت راست 10px فاصله داشته باشه.
مقدار left: auto هم برای این هست که فاصله ما از سمت چپ، بصورت اتوماتیک انتخاب بشه. این برای سازگاری با برخی مرورگر ها مثل ie هستش.
مقادیر
width: 50%;
height: 20%;
هم برای مشخص کردن طول و عرض زیر سایه ما هست. با افزایش یا کاهش width می تونی شروع سایه رو از وسط منو به هرکجا که خواستید تغییر بدید. مقدار height زیاد مهم نیست. فقط برای این هست که زیر سایه با داشتم ارتفاع، در صفحه نمایش داده بشه.
حالا از box-shadow می گذریم (در آخر توضیح می دم) و می ریم سراغ دستور های آخر یعنی:
-webkit-transform: rotate(3deg);
-moz-transform: rotate(3deg);
-ms-transform: rotate(3deg);
-o-transform: rotate(3deg);
transform: rotate(3deg);
این دستور برای چرخاندن زیر سایه به اندازه 3 درجه در جهت چرخش عقربه های ساعت هست. برای این هست که حالت ای رو برای ما بوجود بیاره که از وسط که به سمت راست می ریم، شکل ما بیرون زدگیش بیشتر بشه.
حالا می ریم سراغ box-shadow عزیز که همه چیز زیر سره اینه. نگاه کنید، یک دستور box-shadow به این صورت نوشته می شه:
box-shadow: h-shadow v-shadow blur spread color inset;
که مقادیر اون به ترتیب به این صورت هستن:
h-shadow: که محل قرار گیری افقی سایه مارو مشخص می کنه.
v-shadow: که محل قرار گیری عمودی سایه مارو مشخص می کنه.
blur: حالت بلورین که سایه داره، یعنی تعداد پیکسل هایی که سایه ما از رنگ مشخص شده، به بی رنگ تغییر کنه با این مشخص می شه.
spread: اندازه سایه
color: رنگ سایه
inset: برای تغییر اینکه سایه ما بجای اینکه به خارج اعمال بشه، به داخل المنت اعمال بشه.
کد box-shadow: 0 20px 10px rgba(0, 0, 0, 0.5);
دارای مقادیر h-shadow v-shadow blur color هستش. البته با این box-shadow باید یکم ور برید تا قلقش دستتون بیاد. بهتره با این بیشتر کار کنید.
فکر کنم توضیحات کافی بود. اگر سوالی بود، در خدمتم.
reza4359
یک شنبه 20 فروردین 1391, 14:57 عصر
سلام چطوری میشه مثل همین سایت
http://www.freewebsitetemplates.com/...bsitetemplate/ (http://www.freewebsitetemplates.com/preview/ecologicalwebsitetemplate/)
بگراند رو سه قسمت کرد یعنی از چند بگراند استفاده کرد؟
مثلا یه عکس با عرض 100% و طول 200px به بالای صفحه بدیم و قسمت پایین رو یک عکس دیگه با تکرار repeate-y بذاریم ؟
ممنون
cyrusthegreat
دوشنبه 21 فروردین 1391, 19:48 عصر
سلام چطوری میشه مثل همین سایت
http://www.freewebsitetemplates.com/...bsitetemplate/ (http://www.freewebsitetemplates.com/preview/ecologicalwebsitetemplate/)
بگراند رو سه قسمت کرد یعنی از چند بگراند استفاده کرد؟
مثلا یه عکس با عرض 100% و طول 200px به بالای صفحه بدیم و قسمت پایین رو یک عکس دیگه با تکرار repeate-y بذاریم ؟
ممنون
دوست عزیز
برای این مورد شما باید که سایت رو به سه قسمت با div هایی که اندازشون 100% هست تقسیم کنی. البته باید یه نکته ای در نظر بگیری، که بهتره برای نمایش بهتره، Body رو هم 100% بدی و همچنین برای باید مقادیر margin یا paddingای به چپ یا راستشون ندی. همچنین برای همون سه تا divات. تا کل صفحه رو مثل این پر کنه.
بعد باید به هر کدوم از div هات بک گراند بدی. یعنی سه تا بک گراندی که می خوای، باید به این ها بدی. بهتره که مقادیری برای repeat مشخص نکنی که در هر دو جهت تکرار بشن. اگر خواستی که اندازه ثابت باشه، کافیه به اون div مورد نظرت height به px بدی.
همین کافیه.
khanlo.javid
دوشنبه 21 فروردین 1391, 19:51 عصر
دوست من سرچ کن نمونه زیادی وجود داره...
موفق باشی.
reza4359
سه شنبه 22 فروردین 1391, 15:34 عصر
دوست عزیز
برای این مورد شما باید که سایت رو به سه قسمت با div هایی که اندازشون 100% هست تقسیم کنی. البته باید یه نکته ای در نظر بگیری، که بهتره برای نمایش بهتره، Body رو هم 100% بدی و همچنین برای باید مقادیر margin یا paddingای به چپ یا راستشون ندی. همچنین برای همون سه تا divات. تا کل صفحه رو مثل این پر کنه.
بعد باید به هر کدوم از div هات بک گراند بدی. یعنی سه تا بک گراندی که می خوای، باید به این ها بدی. بهتره که مقادیری برای repeat مشخص نکنی که در هر دو جهت تکرار بشن. اگر خواستی که اندازه ثابت باشه، کافیه به اون div مورد نظرت height به px بدی.
همین کافیه.
ممنون از راهنماییتون میشه یک نمونه بذارید
ممنون میشم
cyrusthegreat
چهارشنبه 23 فروردین 1391, 00:15 صبح
دوست عزیز
خدمت شما. فایل پیوست رو دانلود کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.