برای ساخت دکمه به دو فایل نیاز داریم: یکی html و دیگری css
شما میتوانید فونت دلخواه برای پروژه خودتان تنظیم کنید یا هیچ فونت دلخواهی تنظیم نکنید.
در همه دکمه های پیش رو در تنظیمات css از این کدها در ابتدای کد استفاده میکنیم:
* { margin:0; padding: 0; box-sizing: border-box; } body { height: 100vh; background-color: #090909; display: grid; place-items: center; }
یک فایل به نام Index.html بسازید:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sample 1 of Button</title> <link href="https://fonts.googleapis.com/css2?family=Bruno+Ace&display=swap" el="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet"> <link rel="stylesheet" href="style.css"> </head> <body> <button>Hover Me</button> </body> </html>
در فایل بالا تنها چیزهایی که اضافه کردیم اینها هستند:
به تصویر زیر نگاه کنید . ابتدا فونت دلخواه را در مجموعه فونتهای گوگل پیدا میکنم سپس نوع رگولار یا مدیوم یا نوعی که مدنظرتان است را انتخاب میکنید تا در سمت راست، کدهای قابل استفاده در پروژه به نمایش داده شود.
در کادر قرمز رنگ، ابتدا از کادر اول که نوشته : To embed a font, copy the code into the <head>
of your html این کدها را در قسمت فایل index.html در بین تگ head قرار میدهیم.
کادر دوم که نوشته: CSS rules to specify families را برای استفاده در فایل استایل style.css استفاده میکنیم.
<button>Hover Me</button>
* { margin:0; padding: 0; box-sizing: border-box; } body { height: 100vh; background-color: #090909; display: grid; place-items: center; } button { font-family: Poppins, "Bruno Ace" border: 0; font-size:20px; } button { background-color: transparent; color: #8800b5; padding: 13px 36px; border: 2px solid #8800b5; border-radius: 8px; position: relative; z-index:1; overflow: hidden; transition: color 0.5s; } button:hover{ color: white; } button:before { content: "" position: absolute; top: 100%; left: 100%; width: 120%; height: 220%; background-color: #8800b5; border-radius: 50%; z-index: -1; transition: all 0.6s ease; } button:hover:before { top: -50%; left: -10%; }
اکنون به تفسیر کدها میپردازیم:
body { height: 100vh; background-color: #090909; display: grid; place-items: center; }
این کد برای تنظیم ارتفاع بدنه صفحه به ارتفاع کامل صفحه (100vh) استفاده میشود. این بدان معناست که بدنه صفحه به اندازه ارتفاع صفحه کاربر در نمایشگر تنظیم میشود.
سپس، با استفاده از خاصیت background-color
، رنگ پس زمینه صفحه به سیاه (#090909) تنظیم میشود.
از خاصیت display: grid
برای ایجاد یک شبکه درون صفحه استفاده میشود. این شبکه به اجزای موجود در صفحه کمک میکند تا به صورت محتوایی منظم و مرتب در صفحه قرار بگیرند.
و در نهایت، با استفاده از خاصیت place-items: center
، اجزای موجود در صفحه به صورت مرکز قرار میگیرند.
button { font-family: Poppins, "Bruno Ace" border: 0; font-size:20px; }
این کد برای تنظیم فونت خانواده به Poppins و "Bruno Ace"، حذف حاشیه (بدون حاشیه)، و تنظیم اندازه فونت به 20 پیکسل استفاده میشود.
button { background-color: transparent; color: #8800b5; padding: 13px 36px; border: 2px solid #8800b5; border-radius: 8px; position: relative; z-index:1; overflow: hidden; transition: color 0.5s; }
background-color: transparent;
: رنگ پس زمینه دکمه را شفاف تنظیم میکند.color: #8800b5;
: رنگ متن دکمه را به بنفش (#8800b5) تنظیم میکند.padding: 13px 36px;
: فاصلهدهی داخلی دکمه را با ابعاد 13 پیکسل از بالا و پایین و 36 پیکسل از چپ و راست تنظیم میکند.border: 2px solid #8800b5;
: حاشیه دکمه را با ضخامت 2 پیکسل و رنگ بنفش (#8800b5) تنظیم میکند.border-radius: 8px;
: شعاع گوشههای دکمه را به 8 پیکسل تنظیم میکند.position: relative;
: تنظیم وضعیت موقعیت دکمه به صورت نسبی.z-index:1;
: تنظیم عمق دکمه به 1.overflow: hidden;
: مخفی کردن محتوایی که از ابعاد دکمه بیشتر است.transition: color 0.5s;
: تنظیم انتقال رنگ متن دکمه به مدت 0.5 ثانیه.این تنظیمات به منظور استایلدهی و ایجاد انیمیشن هنگام هاور بر روی دکمه استفاده میشوند.
button:hover{ color: white; }
این کد برای ایجاد یک دکمه به همراه انیمیشن هنگام هاور استفاده میشود.
button:before { content: "" position: absolute; top: 100%; left: 100%; width: 120%; height: 220%; background-color: #8800b5; border-radius: 50%; z-index: -1; transition: all 0.6s ease; } button:hover:before { top: -50%; left: -10%; }
button:before
، یک المان قبل از دکمه ایجاد میشود.position: absolute;
، المان قبل از دکمه به صورت مطلق قرار میگیرد.top: 100%;
و left: 100%;
، المان قبل از دکمه را در پایان دکمه قرار میدهد.width: 120%;
و height: 220%;
، ابعاد المان قبل از دکمه را تنظیم میکند تا بزرگتر از دکمه باشد.background-color: #8800b5;
، رنگ پس زمینه المان قبل از دکمه را به بنفش (#8800b5) تنظیم میکند.border-radius: 50%;
، شعاع گوشههای المان قبل از دکمه را به 50% تنظیم میکند.z-index: -1;
، عمق المان قبل از دکمه را به -1 تنظیم میکند تا پشت دکمه قرار بگیرد.transition: all 0.6s ease;
، تنظیم انتقال تمامی ویژگیهای المان قبل از دکمه به مدت 0.6 ثانیه.button:hover:before
، وقتی کاربر ماوس را روی دکمه قرار میدهد، المان قبل از دکمه به موقعیت دلخواه منتقل میشود.میتوانید این فایلها را در گیت هاب ببینید و ستاره دهید:
https://github.com/seyedahmaddv/buttons-hover-html-css/tree/main
تصویر متحرک بالا را دیدی؟ خوب حالا برویم سراغ چنین دکمه ای که با حرکت موس روی آن، هم ایکون و هم محتوای آن تغییر میکند. انگار که یک دکمه جدید روی آن حرکت میکند.
در این فایلها از هیچ کد جاوا اسکریپتی استفاده نشده است.
ابتدا فایل index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sample 2 of Button</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css"> <link rel="stylesheet" href="style.css"> </head> <body> <button> <div class="default-btn"> <i class="bi bi-download"></i> <span>Download</span> </div> <div class="hover-btn"> <i class="bi bi-currency-dollar"></i> <span>For Free</span> </div> </button> </body> </html>
در کد بالا در بدنه body، یک تگ دکمه ایجاد کردیم. داخل تگ دکمه button، دو تگ div ایجاد کردیم.
در یکی از تگهای دیو div کلاس default-btn به عنوان تصویر دکمه پیشفرض بدون هاور موس و برای تگ دیو div دیگر: کلاس hover-btn به عنوان تصویر دکمه در زمانی که موس روی آن برده میشود ایجاد کردیم. البته ما در اینجا از عکس استفاده نمیکنیم و این که از کلمه تصویر دکمه استفاده کردیم برای سادگی انتقال مطلب بود.
سپس درون هر دو تگ دیو div، یک تگ i و یک تگ span ایجاد میکنیم.
از این کد : <i class="bi bi-download"></i> برای نمایش ایکون دانلود از ایکونهای بوت استرپ که در تگ هد فایل html تعریف کردیم استفاده کردیم.
از این کد <span>Download</span> صرفا برای نمایش متن دانلود استفاده کردیم.
از این کد: <i class="bi bi-currency-dollar"></i> برای نمایش ایکون دلار از ایکونهای بوت استرپ که در تگ هد فایل html تعریف کردیم استفاده کردیم.
از این کد <span>For Free</span> صرفا برای نمایش متن به رایگان استفاده کردیم.
به فایل زیر توجه کنید:
style.css
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;1,300&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { height: 100vh; background-color: #090909; display: grid; place-items: center; } button { border: 0; color: white; font-size: 1.5rem; font-family: Poppins; cursor: pointer; } button { background-color: hsl(208, 58%, 50%); border-radius: 50px; position: relative; overflow: hidden; } .default-btn, .hover-btn { padding: 12px 24px; border-radius: inherit; display: flex; justify-content: center; align-items: center; gap: 16px; text-transform: uppercase; transition: 0.4s ease; } .hover-btn { position: absolute; inset: 0; border-radius: inherit; background-color: hsl(208, 76%, 40%); transform: translate(0%, 100%); } button:hover .hover-btn { transform: translate(0%, 0%); } button:hover .default-btn { transform: translate(0%, -100%); }
این کد CSS یک صفحه وب را استایل دهی میکند و از فونت Poppins استفاده میکند که از سرویس Google Fonts فراخوانی شده است. دستور اتساین import برای وارد کردن فونت به کد CSS استفاده شده است.
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;1,300&display=swap');
باقی کد، ویژگیهای ظاهری صفحه را تنظیم میکند:
- مشخص کنندهی تمام المانها (هر چیزی که با `*` انتخاب شود)، تنظیماتی اعمال میکند که حاصل از محاسبهی فاصلهها (`margin`)، اضافه کردن پدینگ (`padding`) و محاسبهی ابعاد با در نظر گرفتن حاشیهها (`box-sizing`) است.
- این المان، تنظیمات مربوط به صفحه اصلی را تعیین میکند.
- ارتفاع (`height`) برابر با ۱۰۰ درصد از ارتفاع نمایشگر (viewport) است.
- رنگ پس زمینه (`background-color`) سیاه (#090909) است.
- با استفاده از `grid` و `place-items`، محتوا به وسیلهی گرید در وسط نمایش داده میشود.
- تعیین خصوصیات کلی دکمهها.
- حذف حاشیه و پدینگ (`margin: 0; padding: 0`) و تنظیم مربع مرزی (`box-sizing: border-box`) روی تمام المانها.
- رنگ متن (`color`) سفید و اندازهی فونت (`font-size`) ۱.۵ رم است.
- از فونت Poppins برای متن استفاده میکند.
اکنون به کلاسهای تعریف شده برای دیو div میپردازیم:
- تنظیمات مربوط به حالت عادی و هاور دکمه(هاور : وقتی ماوس روی دکمه است) .
- `padding`، `border-radius`، `display`، `justify-content` و `align-items` برای هر دو کلاس یکسان هستند.
- `text-transform: uppercase` متن دکمه را به حروف بزرگ تبدیل میکند.
- `transition: 0.4s ease` تنظیمات انیمیشن هاور را اعمال میکند.
5. `.hover-btn`:
- در حالت هاور، این المان به صورت مطلق (position: absolute; inset: 0) در داخل دکمه قرار داده میشود.
- رنگ پس زمینه آن تغییر میکند (`background-color: hsl(208, 76%, 40%)`) و با `transform` به پایین (100%) حرکت میکند.
6. `button:hover .hover-btn` و `button:hover .default-btn`:
- در حالت هوور، با استفاده از `:hover`، انیمیشنهای ترکیبی اعمال میشوند. متن دکمه به بالا (-100%) حرکت میکند و المان مطلق درون دکمه به پایین (0%) حرکت میکند.