parsgreen.com
article

زیبا سازی فرم های وب با css

web-css-form

همانطور که می دانیم، امروزه در طراحی صفحات و قالب های تحت وب، استفاده از css و تکنیک ها و قابلیت های مبتنی بر آن به یک امر اجتناب ناپذیر و فراگیر تبدیل شده است، از این گذشته با استفاده از قدرت css و کمی تجربه، بسیاری از جلوه های بصری را می توان حتی بدون به کارگیری تصاویر و المان های زیاد ایجاد کرد، از این رو قابلیت های این زبان کمکی در ایجاد جلوه های تعاملی، حتی بدون استفاده از سایر ابزار ها (مانند المان های تصویری، کتابخانه های جاوا اسکریپتی و...) در حدی است که می توان خیلی از نیازهایمان را در طراحی وب، با آن بر طرف کنیم، در این آموزش خواهیم دید که چگونه می توان با css (و css3) فرم های وب (html) را زیباتر و حرفه ای تر نمود.

استفاده از hover برای تگ های input


یکی از پرکاربردترین عناصر در فرهای وب، تگ input است که خود زیر مجموعه ها (type های) متفاوت دارد، در حالت معمول و بدون استفاده از استایل css، مرورگر یک استایل پیش فرض برای این تگ در نظر می گیرد، اما جالب است که با استفاده از خاصیت hover در css می توان برای این عنصر نیز ویژگی ها و جلوه های بصری زیبا در قالب کلاس و آی دی تعریف کرد، به مثال زیر توجه کنید.
<!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>وبگو | ایجاد جلوه های تعاملی با css</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
.text-field{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    padding:2px;    
    border:#39F 1px solid;    
}
.text-field:hover{
    border:#F60 1px solid;    
}
</style>
</head>
<body>
<form action="#" method="post">
<input type="text" class="text-field" />
</form>
</body>
</html>
برای دیدن پیش نمایش، به انتهای این مطلب مراجعه کنید.
توضیح:
- همانطور که ملاحظه می کنید، کلاس css ما در مثال بالا از دو قسمت تشکیل شده است، قسمت اول ویژگی های کلی فیلد مقصد را در حالت عادی تعریف می کند و در قسمت دوم، با استفاده از خاصیت hover، برای حالتی که کاربر ماوس را روی فیلد مورد نظر می برد، یک رنگ متمایز برای خط حاشیه فیلد در نظر گرفته می شود.
- برای استفاده از این ویژگی در سایر عناصر فرم های وب (مانند textarea، select، submit و...) نیز می توانید به همین ترتیب عمل کنید، یعنی ابتدا یک کلاس در css تعریف کرده و سپس کلاس را به عنصر مورد نظر نسبت دهید، به این صورت یک ویژگی تعاملی خواهید داشت.

استفاده از focus در حالتی که کاربر در فیلد کلیک می کند


معمولا ویژگی hover به تنهایی نمی تواند جلوه کاملی ایجاد کند، به فرض کاربر انتظار دارد هنگامی که در یک فیلد کلیک کرده است، فیلد انتخاب شده را به رنگ متمایز از بقیه عناصر صفحه مشاهده کند، هرچند این نوع تنظیمات بیشتر سلیقه ای هستند، اما حداقل استفاده ای از آنها می تواند برای هر صفحه وبی کاربردی باشد، برای استفاده از قابلیت focus، کلاس های مثال بالا را به روش زیر تکمیل می کنیم.
<!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>وبگو | ایجاد فرم های تعاملی با css</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
.text-field{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    padding:2px;    
    border:#39F 1px solid;    
}
.text-field:hover{
    border:#F60 1px solid;    
}
.text-field:focus{
    border:#F60 1px solid;
    background-color:#F2FBFF;    
}
</style>
</head>
<body>
<form action="#" method="post">
<input type="text" class="text-field" />
</form>
</body>
</html>
توضیح:
- با افزودن خاصیت  focus به کلاس css، اگر کاربر در فیلدهای وب کلیک کند، استایل مخصوص و تعیین شده در آن هنگام اجرا شده که به کمک آن می توان یک جلوه تعاملی زیبا را ایجاد کرد.
- اگرچه خاصیت focus در بیشتر مرورگرهای استاندارد پشتیبانی می شود، اما در مرورگر اینترنت اکسپلورر نسخه 6 و 7 پشتبانی نشده و در اینترنت اکسپلورر نسخه 8، باید تگ DOCTYPE در صفحه موجود باشد (در ابتدای صفحه) تا این خاصیت عمل کند.

گرد کردن گوشه های عناصر فرم با css3 و افزودن سایه


یکی دیگر از کاربردهای css که البته در نسخه 3 به آن افزوده شده، قابلیت گرد کردن گوشه های عناصر html و از جمله فیلدهای وب است، در این حالت با استفاده از خاصیت radius می توان لبه های تیز فرم ها را به صورت گرد شده و نرم درآورد، البته این قابلیت در تمام مرورگرها و به یک نحو پشتبانی نمی شود، ولی نسخه های به روز اکثر مرورگرها (که از css3 پشتیبانی می کنند)، آن را به خوبی اجرا می کنند، به مثال زیر توجه کنید.
<!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>وبگو | ایجاد فرم های تعاملی با css</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
.text-field {
    border:1px solid #CCC;
    border-radius:4px;    
    -moz-border-radius:4px;
    -webkit-border-radius:4px;
    box-shadow:2px 2px 3px #666;    
    -moz-box-shadow:2px 2px 3px #666;
    -webkit-box-shadow:2px 2px 3px #666;
    padding:4px;
    outline:0px;
}
.text-field:focus {
    border-color:#F60;
    background-color:#CCC;
}
</style>
</head>
<body>
<form action="#" method="post">
<input type="text" class="text-field" />
</form>
</body>
</html>
توضیح:
- همانطور که ملاحظه می کنید، در کلاس بالا برای تعریف ویژگی های radius از مقادیر متفاوت استفاده کرده ایم، این کار به این جهت است که مرورگرهای مختلف، هر کدام شیوه مخصوص خود را در پردازش این خاصیت دارند و برای سازگاری با آنها، ناچاریم یک عنصر را به چند روش تعریف کنیم.
- در مثال بالا علاوه بر radius، از ویژگی سایه(shadow) که مربوط به css3 است نیز استفاده کرده ایم، با این کار یک افکت سایه مانند به کد خود اختصاص می دهیم.
- خاصیت outline که خط بیرونی حاشیه فیلد را مشخص می کند از این جهت با مقادیر صفر در نظر گرفته شده است که در برخی مرورگرهای مبتنی بر AppleWebKit (مانند سافاری، گوگل کروم و...)، در هنگام کلیک در فیلد، حاشیه ای مستطیلی در اطراف آن ایجاد می شود، برای از بین بردن و گرد کردن این حاشیه از outline با مقادیر صفر استفاده کرده ایم.
- اگرچه برخی از مرورگرها (مانند اینترنت اکسپلورر نسخه 8 و ماقبل) از ویژگی های radius و shadow پشتیبانی نمی کنند، اما چندان جای نگرانی نیست، چرا که فرم شما بدون هیچ مشکل مهمی، همچنان کار خواهد کرد، با این تفاوت که کاربران این گونه مرورگرها نمی توانند از جلوه های بصری و تعاملی آن استفاده کنند.

کد و پیش نمایش آنلاین


در زیر کامل شده مثال های بالا را به صورت کد و پیش نمایش آنلاین قرار داده ایم که می توانید از آن استفاده کنید.
<!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>وبگو | ایجاد فرم های تعاملی با css</title>
<!-- http://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
.text-field{
    border:1px solid #CCC;
    border-radius:4px;    
    -moz-border-radius:4px;
    -webkit-border-radius:4px;
    box-shadow:2px 2px 3px #666;    
    -moz-box-shadow:2px 2px 3px #666;
    -webkit-box-shadow:2px 2px 3px #666;
    padding:4px;
    outline:0px;
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;    
}
.text-field:hover{
    border-color:#F60;
}
.text-field:focus{
    border-color:#F60;
    background-color:#CCC;
}
</style>
</head>
<body>
<form action="#" method="post">
<input type="text" class="text-field" /><br /><br />
<textarea cols="50" rows="10" class="text-field">
</textarea><br /><br />
<input type="checkbox" class="text-field" /><br /><br />
<select class="text-field">
<option value="">-- انتخاب --</option>
<option value="آموزش طراحی وب">آموزش طراحی وب</option>
<option value="آموزش برنامه نویسی وب">آموزش برنامه نویسی وب</option>
</select><br /><br />
<input type="submit" value="ارسال" class="text-field" />
</form>
<hr />
برای اینکه جلوه های css3 به طور کامل قابل استفاده باشند، خاصیت ها باید توسط مرورگر پشتیبانی شوند، به جزء اینترنت اکسپلورر نسخه 8 و ماقبل، سایر مرورگرهای استاندارد وب، در نسخه های جدید خود به خوبی از این قابلیت ها پشتیبانی می کنند.
</body>
</html>
پیش نمایش
sectionدسته بندی: مهارتهای وب » طراحی وب
related مطالب بیشتر:
» قابلیت های کاربردی CSS3 در طراحی وب
» طراحی هدر قالب سایت و وبلاگ با فتوشاپ و css
» آموزش انتقال قالب از فتوشاپ به کد html و css
» طراحی قالب سه بعدی وب با فتوشاپ و css
» طراحی باکس جستجو با فتوشاپ و CSS
commentنظرات (۱۶ یادداشت برای این مطلب ارسال شده است)
نویسنده: hosin
زمان: ۱۰:۴۱:۲۴ - تاریخ: ۱۳۹۱/۰۵/۱۹
salam man site shoma ro khili dost daram aliye
نویسنده: فریبا
زمان: ۱۵:۰۰:۱۵ - تاریخ: ۱۳۹۱/۰۵/۱۹
سلام
مثل همیشه عالی هستید.
سوال: میشه توضیحی هم در مورد دکمه های جستجو ( مثل جستجوی سایت خودتون ) داشته باشید؟
ممنون.
پاسخ: 
سلام
ممنون، نظر لطف شماست.
دکمه های جستجو ماهیتی متفاوت ندارند و مانند سایر عناصر فرم های وب هستند، دکمه ارسال از نوع input و submit و فیلد جستجو از نوع input و text است، منتها با کلاس های css و المان های تصویری، به طور دقیق تنظیم شده اند، با دقت در سورس کد سایت ملاحظه خواهید کرد که برای دکمه ارسال یک عکس ذره بین کوچک به عنوان پس زمینه تنظیم شده و برای فیلد جستجو، تصویری دیگر با همپوشانی کامل با دکمه ارسال؛ به این ترتیب از دید کاربران این یک فیلد جستجو است، ولی از دید برنامه نویسان این یک فرم وب با یک فیلد متنی و یک دکمه ارسال است.
نویسنده: فریبا
زمان: ۲۱:۱۸:۰۳ - تاریخ: ۱۳۹۱/۰۵/۲۰
سلام
سوال: می خوام فرمی بسازم که عنوان تکست فیلدها از یک طرف تراز شوند و خود تکست فیلدها هم از طرف دیگر و همچنین کل فرم یعنی المنتهای فرم در وسط divای که برای فرم در نظر گرفتم قرار بگیرند یعنی در هر مرورگری وسط باشند؛ چه کدهایی ( CSS و HTML ) باید بنویسم؟
ممنون.
پاسخ: 
سلام
پاسخ دقیق به سوال شما نیازمند طرح یک مطلب آموزشی جداگانه است، اما به اختصار باید از label در فرم های خود استفاده کنید، مثال:
<label for="name" dir="rtl">نام:</label>
<input type="text" name="name" id="name" />
برای ترازبندی آنها نیز از ویژگی های css یا html مانند dir ، display ، float و... استفاده نمائید.
برای تنظیم یک بلاک در وسط صفحه از ویژگی margin-left و margin-right با مقادیر auto برای کلاس css آن استفاده کنید:
تنظیم موقعیت و حذف فاصله بلاک های div با استفاده از css
در مرورگر IE6 نیز از دستورات شرطی و تگ <center> استفاده کنید:
<!--[if IE 6]>
<center>
<![endif]-->
بلاک div
<!--[if IE 6]>
</center>
<![endif]-->
نویسنده: farhad
زمان: ۱۶:۲۱:۲۷ - تاریخ: ۱۳۹۱/۰۷/۲۳
salam dadash
enghad doad kardama yani damet garm
ba in sitet mahshare
نویسنده: امیر محمد
زمان: ۲۲:۰۱:۱۰ - تاریخ: ۱۳۹۲/۰۲/۳۱
دستت طلا
نویسنده: حمیدرضا
زمان: ۰۰:۰۹:۲۹ - تاریخ: ۱۳۹۲/۰۳/۱۴
سلام
عادت به نوشتن نظر ندارم
اما برای این مطلب خوب و کارآمدتون لازم بود تشکر کنم
با تشکر فراوان
نویسنده: حسن دهقانی
زمان: ۱۲:۲۷:۵۴ - تاریخ: ۱۳۹۲/۰۴/۰۶
سلام
من امروز از سایت شما دیدن کردم
واقعا جای تشکر داره من دست شما استار گرامی را که بدون هیچ توقعی آموزش رایگان در اختیار همه قرار می دهید می بوسم
من که خیلی حال کردم و چیزائی که تا حالا دیده بودم اینجا لمسش کردم
من فعلا سوالی ندارم حتما مزاحمتون می شم
با تشکر
پاسخ: 
سلام
نظر لطف شما است.
نویسنده: علی شفیع زاده
زمان: ۱۸:۵۱:۰۲ - تاریخ: ۱۳۹۲/۰۴/۱۴
با سلام
عالی بود
خیلی استفاده کردم.
تشکر از سایت خوب و پر محتواتون
با آرزوی بهترین ها
نویسنده: گرافيك پلاس
زمان: ۰۹:۳۶:۴۱ - تاریخ: ۱۳۹۲/۰۵/۲۷
خيلي عالي بود. فقط يه سوال دارم. در خصوص اعمال hover به يك فيلد چطور ميشه يك افكت slow motion به اون داد. مثلا وقتي كه موس را روي يك فيلد مي بريم رنگ آن يك دفعه تغيير نكنه و به آرامي رنگ آن تغيير كنه. نمونش رو تو سايت دي بي اس تم در قسمت خريد قالب مي شه ديد.
ممنون
پاسخ: 
سلام
اعمال افکت به صورت انیمیشن در وب یا از طریق جاوا اسکریپت و یا فریم ورک جی کئوری صورت می گیرد، به طور مثال از متد setTimeout می توان یک عملیات را در چند فریم و با وقفه های کوتاه انجام داد:
<script type="text/javascript">
function ChangeColor(id, frame){
var color = '#CCC';
switch(frame){
case 1:
color = "#FFECEC";
break;
case 2:
color = "#FDD";
break;
case 3:
color = "#FFC6C6";
break;
case 4:
color = "#FFB3B3";
break;
case 5:
color = "#FF9F9F";
break;
case 6:
color = "#FF9393";
break;
case 7:
color = "#FF8282";
break;
case 8:
color = "#FF6F6F";
break;
case 9:
color = "#F55";
break;
case 10:
color = "#FF2F2F";
break;
}
if(frame <= 10){
frame++;
document.getElementById(id).style.backgroundColor = color;
setTimeout("ChangeColor('" + id + "', " + frame + ");", 100);
}
else if(frame == 12){
document.getElementById(id).style.backgroundColor = color;
}
}
</script>
<input id="your-id" type="text" onmouseover="ChangeColor(this.id, 0);" onmouseout="ChangeColor(this.id, 12);">
نویسنده: محمود
زمان: ۲۳:۰۰:۲۴ - تاریخ: ۱۳۹۲/۰۶/۲۲
سلام خسته نباشید
من میخواهم به وسیله ی css کلمه ی ورود را از فرم زیر حذف کنم. به صورتی که بکگراندی که برایش در نظر گرفته ام حذف نشود. با تشکر
<button class="car" type="submit">
ورود
</button>
پاسخ: 
سلام
می توانید از نمونه کد زیر استفاده کنید:
<style type="text/css">
.hidden{
height:25px;
width:100px;
text-indent:-9999px;
* html button{
font-size:0;
display:block;
line-height:0
}/* ie6 */
*+html button{
font-size:0;
display:block;
line-height:0
}/* ie7 */
}
</style>
<button class="hidden" type="submit">ورود</button>
نویسنده: محمود
زمان: ۰۰:۵۷:۰۵ - تاریخ: ۱۳۹۲/۰۶/۲۳
یی سوال هم داشتم. البته به این بحث مربوط نیست در سایت هم جستجو کردم به نتیجه نرسیدم.
می خواستم ببینم itemprop چی هست به چه دردی می خورد و چطوری میشه تگی که کلاس ندارد و itemprop را دارد با css بهش استایل داد. مثل کد زیر:
<div itemprop="description"></div>
متشکر
پاسخ: 
itemprop یا Item Property به معنی توصیفی برای تعیین هدف از به کاربردن تگ ها در HTML است (در نسخه 5 افزوده شده)، این ویژگی خواص محتوای هر تگ را مشخص تر می کند.
به نظر نمی رسد از طریق این ویژگی بتوانید با CSS استایلی به تگ اختصاص دهید، چون selector بدین منظور در CSS پیش بینی نشده است (باید از کلاس یا آی دی استفاده کنید).
نویسنده: امیر نجارپور
زمان: ۱۱:۳۸:۱۱ - تاریخ: ۱۳۹۲/۰۸/۲۷
عالی بود استاد!!
دنبال چنین مطلبی بودم.
بازم ممنون از آموزشی که دادین.
نویسنده: امین
زمان: ۱۶:۲۲:۴۷ - تاریخ: ۱۳۹۳/۰۴/۲۴
واقعا زدی وسط خال
همون چیزی که دنبالش بودم
خیلی عالی بود
واقعا ممنونتم
نویسنده: محمد
زمان: ۱۳:۱۰:۴۹ - تاریخ: ۱۳۹۳/۰۹/۲۲
فقط یه چیز میگم که عالیییی بود.... من اصلا نمیدونستم با سی اس اس هم میشه کاری کرد دکمه ها رنگ هاشون عوض شه...... خیلی عالییی.. فقط با سی اس اس میشه کاری کرد که مثلا موس روی دکمه ای میره و اون دکمه مثل به انیمیشن خیلی کوتاه جاش عوض شه؟
پاسخ: 
چنین امکانی با CSS3 میسر است (باید در وب جستجو کنید)، منتها برای راحتی و سازگاری بیشتر می توانید از jQuery استفاده کنید.
نویسنده: محمد
زمان: ۱۴:۱۱:۳۵ - تاریخ: ۱۳۹۳/۱۰/۳۰
سلام.... شما راهی واسه افزایش سلیقه در طراحی قالب دارین؟؟؟ گفتم شاید تو وب زیاد کار میکنین یه راهی باشه.
پاسخ: 
سلام
منظورتان از افزایش سلیقه مشخص نیست! در مجموع شناخت هارمونی رنگ ها و داشتن اطلاعات و تجربه در زمینه گرافیک + دیدن و بررسی قالب های مختلف با رنگ بندی و اهداف متفاوت می تواند کمک کند.
paged صفحه 1 از 2




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

9 × 6
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

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