شنبه ۲۲ شهریور ۱۴۰۴

Saturday, September 13, 2025 GMT +3:30

طراحی باکس جستجو با فتوشاپ و CSS

web-search-box

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

ساخت چارچوب باکس با HTML


همان طور که پیش تر گفتیم، باکس های جستجو در واقع فرمهای HTML هستند که با افزودن دکمه ارسال (submit) و پس زمینه گرافیکی تکمیل می شوند، پس آنچه ما در گام اول احتیاج داریم ساخت یک فرم html، یک فیلد از نوع input و یک دکمه ارسال یا submit است که در نمونه کد زیر این کار را انجام داده ایم.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>وبگو | طراحی فیلد جستجو</title>
<!-- https://webgoo.ir -->
</head>
<body>
<div class="search-box">
<form action="#" method="get">
<input class="search-input" type="text" value="جستجو..." maxlength="125">
<input class="search-submit" type="submit" value="">
</form>
</div>
</body>
</html>
توضیح:
- همان طور که ملاحظه می کنید، فرم html بالا داخل یک بلاک div با کلاس فرضی search-box قرار دارد، در ادامه خواهیم دید که این بلاک در واقع نقش پس زمینه را برای باکس جستجو بازی می کند.
- فیلد input و دکمه submit نیز هر کدام یک کلاس css فرضی دارند که برای اعمال تغییرات ظاهری از آنها استفاده خواهیم کرد.

استایل css باکس جستجو


پس از نوشتن چارچوب html کار، باید فرم اولیه آن را با استایل css شکل دهیم.
<style type="text/css">
.search-box{
    width:200px;
    height:28px;
    background:#000 url(search-box.jpg);
    display:inline-block;
    direction:rtl;
    overflow:hidden;/*IE 6*/    
}
.search-input{
    width:166px;
    height:25px;
    background-color:transparent;
    display:inline-block;
    border:0px;
    padding:2px;
    font-family:Tahoma, Geneva, sans-serif;
    font-size:11px;
    color:#666;
    line-height:16px;/*IE */
}
.search-input:focus{
    outline:none;
}
.search-submit{
    width:25px;
    height:25px;    
    border:0px;
    padding:0px;
    background-color:transparent;
    display:inline-block;
    cursor:pointer;
}
</style>
توضیح:
- به این دلیل که ما از یک تصویر گرافیکی برای پس زمینه استفاده خواهیم کرد، لذا پس زمینه عناصر موجود در فرم را به صورت نامرئی (transparent) و بدون خط حاشیه (border) تنظیم می کنیم.
- در بلاک search-box که در واقع بلاک اصلی باکس جستجو است، از یک تصویر با نام search-box.jpg به عنوان پس زمینه استفاده کرده ایم، این تصویر را باید به صورت نمونه زیر در فتوشاپ (با ابعاد 200 در 28 پیکسل) طراحی کنید.
search-box
برای طراحی می توانید از ابزار Rounded Rectangle Tool و قابلیت Blending Options در فتوشاپ استفاده کنید.
- برای تنظیم جلوه های ظاهری فیلد input و دکمه submit نیز از دو کلاس css با نام های دلخواه search-input و search-submit استفاده کرده ایم، به این طریق تقریبا بیشتر ویژگی های مربوط به سفارشی سازی توسط استایل css قابل تنظیم است.
نکته: اگر دقت کرده باشید، برای حالت focus کلاس search-input از مقادیر outline و none استفاده کرده ایم، این کار برای غیر فعال کردن نمایش خط حاشیه فرم (در حالتی که کاربر در فیلد کلیک می کند) در برخی مرورگرها مانند گوگل کروم و سافاری است، علاوه بر این برای سازگاری با نسخه های قدیمی مرورگر اینترنت اکسپلورر، خاصیت overflow و line-height نیز در استایل استفاده شده است.

افزودن قابلیت تعاملی به باکس جستجو


باکس جستجوی ما تقریبا آماده شده است، اما قبل از اینکه پیش نمایش کار را با هم ببینیم، بد نیست یک قابلیت تعاملی نیز به فیلد اضافه کنیم، این قابلیت تعاملی می تواند بسته به هدف و سلیقه شما، طرح های مختلف داشته باشد و در آن از css یا جاوا اسکریپت و یا ترکیب این دو استفاده شود، اما در اینجا قصد داریم با چند تابع جاوا اسکریپت ساده، قابلیت محو شدن و آشکار شدن خودکار نوشته پیش فرض داخل فیلد را به فرم اضافه کنیم، بدین منظور کد جاوا اسکریپت زیر را نیز به صفحه خود اضافه می کنیم (در بالای صفحه و بین تگ های head).
<script type="text/javascript">
//<![CDATA[
function searchClear(thisfield, defaulttext, color){
    if (thisfield.value == defaulttext){
        thisfield.value = "";
        if (!color){
            color = "666666";
        }
        thisfield.style.color = "#" + color;
    }
}
function searchShow(thisfield, defaulttext, color){
    if (thisfield.value == ""){
        thisfield.value = defaulttext;
        if (!color){
            color = "666666";
        }
        thisfield.style.color = "#" + color;
    }
}
//]]>
</script>
نکته: برای فراخوانی توابع بالا، از رویدادهای onclick (برای حالتی که کاربر در فیلد کلیک می کند) و onblur (برای حالتی که کاربر خارج از فیلد کلیک می کند) استفاده کرده و فیلد input را به صورت زیر ویرایش می کنیم.
<input class="search-input" type="text" value="جستجو..." maxlength="125" onclick="searchClear(this, 'جستجو...')" onblur="searchShow(this, 'جستجو...')">

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


در زیر یک نمونه کامل از باکس جستجو به همراه پیش نمایش آنلاین آن را می توانید ملاحظه و بررسی کنید.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>وبگو | طراحی فیلد جستجو</title>
<!-- https://webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
.search-box{
    width:200px;
    height:28px;
    background:#000 url(search-box.jpg);
    display:inline-block;
    direction:rtl;
    overflow:hidden;/*IE 6*/    
}
.search-input{
    width:166px;
    height:25px;
    background-color:transparent;
    display:inline-block;
    border:0px;
    padding:2px;
    font-family:Tahoma, Geneva, sans-serif;
    font-size:11px;
    color:#666;
    line-height:16px;/*IE */
}
.search-input:focus{
    outline:none;
}
.search-submit{
    width:25px;
    height:25px;    
    border:0px;
    padding:0px;
    background-color:transparent;
    display:inline-block;
    cursor:pointer;
}
</style>
<script type="text/javascript">
//<![CDATA[
function searchClear(thisfield, defaulttext, color){
    if (thisfield.value == defaulttext){
        thisfield.value = "";
        if (!color){
            color = "666666";
        }
        thisfield.style.color = "#" + color;
    }
}
function searchShow(thisfield, defaulttext, color){
    if (thisfield.value == ""){
        thisfield.value = defaulttext;
        if (!color){
            color = "666666";
        }
        thisfield.style.color = "#" + color;
    }
}
//]]>
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است یا پشتیبانی نمی شود!
</noscript>

<div class="search-box">
<form action="#" method="get">
<input class="search-input" type="text" value="جستجو..." maxlength="125" onclick="searchClear(this, 'جستجو...')" onblur="searchShow(this, 'جستجو...')">
<input class="search-submit" type="submit" value="">
</form>
</div>
<hr>
به طور خلاصه باکس بالا از یک بلاک با پس زمینه ثابت، یک فرم html و دو فیلد از نوع input و submit تشکیل شده است.
</body>
</html>
پیش نمایش
دسته بندی: مهارتهای وب » طراحی وب
related مطالب بیشتر:
زیبا سازی فرم های وب با CSS
چگونه قالب های دو طرفه برای سایت یا وبلاگ خود طراحی کنیم؟
طراحی قالب سه بعدی وب با فتوشاپ و CSS
آموزش نحوه کاهش حجم تصاویر وب با فتوشاپ
آموزش انتقال قالب از فتوشاپ به کد HTML و CSS
دیدگاه
more ۱۶ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
alireza
۰۷:۱۴ ۱۳۹۱/۰۹/۱۹
ممنون از آموزش هاي كامل و خوبتون. هميشه پيروز باشيد.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
2 × 9
20 × 20
=