از ویژگی cursor برای تعیین شکل ظاهری مکاننما (نشانگر موس) در زمانی که بر روی یک عنصر قرار میگیرد استفاده میشود.
با استفاده از این ویژگی می توان ظاهر مکاننما را به اشکال گوناگونی تغییر داد و یا حتی می توان یک تصویر خاص برای آن تعیین کرد.
کاربرد ویژگی cursor
زمانی است که ما بخواهیم کاربر را از عملکرد یک عنصر با خبر کنیم، مثلا فرض کنید مکاننما روی عنصری قرار میگیرد و ظاهر آن به شکل دست تغییر میکند، این نشان دهنده این است که آن عنصر قابل کلیک شدن است و می تواند یک دکمه یا لینک باشد.
توجه داشته باشید که اشکال موجود برای این ویژگی امکان دارد در مرورگرها و سیستم عامل های مختلف متفاوت نمایش داده شود، پس حتما خروجی کار را در شرایط مختلف بررسی کنید. البته اگر این موضوع برای کاربران شما حیاتی است می توانید از یک تصویر استفاده کنید تا دیگر در همه جا یکسان نمایش داده شود.
سینتکس و مقادیر این ویژگی بصورت زیر می باشد:
/* Keyword values */
cursor: [ [<url> [<x> <y>]?,]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | grab | grabbing | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out ] ]
cursor: pointer;
cursor: auto;
/* URL, with a keyword fallback */
cursor: url(hand.cur), pointer;
/* URL and coordinates, with a keyword fallback */
cursor: url(cursor1.png) 4 12, auto;
cursor: url(cursor2.png) 2 2, pointer;
/* Global values */
cursor: inherit;
cursor: initial;
cursor: unset;
/* Global values */
cursor: inherit;
cursor: initial;
cursor: unset;
در ادامه مقادیر ویژگی cursor
بصورت دسته بندی شده شرح داده می شوند:
عمومی
auto
auto
مقدار اولیه برای این ویژگی می باشد که باعث می شود مرورگر بر اساس شرایط عنصری که مکاننما بر روی آن قرار داد شکل مورد نظر را به مکاننما بدهد. مثلا وقتی روی عنصری با محتوای متن هستیم مکاننما به شکل مورد نظر تغییر خواهد کرد.
default
با این مقدار مکاننما به شکل مکاننمای پیشفرض سیستم عاملی که کاربر با آن سایت ما را مشاهده می کند در می آید که معمولا به شکل فلش می باشد.
.element {
cursor: default;
}
none
با این مقدار هیچ مکاننمایی برای عنصر مورد نظر نمایش داده نخواهد شد.
تصویر
<uri>
برای cursor
می توان تصویر نیز تعیین کرد، کافی است یک یا چند آدرس تصویر را با استفاده از ویرگول از هم جدا کرده و در آخر یک مقدار از مقادیر دیگر مربوط به این ویژگی را قرار داد. در این صورت مرورگر تلاش می کند تا تصویر تعیین شده اول را به عنوان مکاننما برای عنصر نمایش دهد اگر به هر دلیلی قادر به این کار نباشد به تصویر دوم مراجعه می کند و اگر باز هم این امکان برایش وجود نداشته باشد مقدار آخر را به عنوان مکاننما عنصر در نظر می گیرد. در نتیجه می توان مقادیر پشتیان برای این ویژگی تعیین کرد.
.element {
cursor: url(1.png), url(2.png), url(example.svg#linkcursor), url(example-2.cur), auto;
}
<x> <y>
هر کدام یک مقدار مثبت کمتر از 32 است که تعیین کننده مکان دقیق مکاننما نسبت به گوشه بالا و سمت چپ تصویر تعیین شده می باشد. تعیین این مقادیر اجباری نیست و اگر نوشته نشوند مرورگر این مختصات را از فایل تصویر می خواند (اگر فایل تصویر از نوع CUR یا XBM باشد) و در غیر این صورت مختصات برابر با گوشه بالا سمت چپ تصویر خواهد بود.
.element {
cursor: url(name.png), 12 27, auto;
}
در مثال بالا اگر مرورگر قادر به نمایش تصویر name.png
باشد مختصات دقیق مکاننما را 12 پیکسل فاصله از لبه سمت چپ تصویر و 27 پیکسل فاصله از لبه بالای تصویر قرار می دهد. اگر هم نتواند تصویر را بارگزاری کند در نتیجه مقدار cursor
را برابر با auto
در نظر می گیرد.
لینکها و وضعیتها
context-menu
یک منوی گرافیکی در کنار فلش برای نمایش مکاننما وجود خواهد داشت. (در زمان نوشتن این مطلب تنها IE10 به بالا این مورد را پیاده سازی کرده اند)
help
این ویژگی باعث می شود تا معمولا مکاننما برای عنصر مورد نظر به شکل علامت سوال یا بادكنك نمایش داده شود.
pointer
مکاننما طوری نمایش داده می شود که مشخص کند عنصر مربوطه قابل تعامل است (مثل یک لینک) و معمولا به شکل دست خواهد بود.
progress
این مقدار تعیین کننده این است که مرورگر در حال انجام عملیاتی در پس زمینه است اما کاربر می تواند همچنان با سایت در تعامل باشد.
wait
این مقدار نشان می دهد که مرورگر مشغول انجام کاری است که کاربر باید تا اتمام آن صبر کند و نمی تواند با سایت تعامل داشته باشد (برعکس مقدار progress
)
انتخاب کردن
cell
این مقدار نشان می دهد که سلول جدول می تواند انتخاب شود.
crosshair
نشان دهنده حالت انتخاب یک بیتمپ (تصویر) دو بعدی می باشد.
text
نشان دهنده حالت انتخاب متن می باشد.
vertical-text
نشان دهنده حالت انتخاب متن عمودی می باشد.
کشیدن و رهاکردن
alias
نشان دهنده این است که می توان یک مستعار یا میانبری برای عنصر موجود بوجود آورد.
copy
با استفاده از این مقدار می توان مشخص کرد که عنصر می تواند کپی شود.
move
با استفاده از این مقدار می توان مشخص کرد که عنصر می تواند تغییر مکان داده شود.
no-drop
نشان می دهد که آیتم نمی تواند روی عنصر مورد نظر رها شود.
not-allowed
نشان می دهد که یک عملیات نمی تواند انجام بپذیرد.
تغییر اندازه و اسکرول کردن
all-scroll
امکان اسکرول در تمامی جهتها وجود داد.
col-resize
امکان تغییر اندازه در جهت افقی وجود دارد.
row-resize
امکان تغییر اندازه در جهت عمودی وجود دارد.
در ادامه مقادیری که نشان دهنده تغییر مکان لبه ها هستند را مشاهده خواهیم کرد، توجه داشته باشید کلمات north، south، east و west به ترتیب برابر شرق، جنوب، شمال و غرب می باشند پس در نتیجه به عنوان مثال ne نشان دهنده شمال شرقی می باشد که در اینجا به این معنی است که انجام عملیات تغییر مکان یا اندازه از سمت شمال شرقی شروع می شود. در برخی محیط ها بعضی از این مقدایر خروجی یکسانی را نمایش می دهند:
n-resize
e-resize
s-resize
w-resize
ne-resize
nw-resize
se-resize
sw-resize
همچنین مقادیر زیر امکان تغییر اندازه دوجهته را نمایش می دهند:
ew-resize
ns-resize
nesw-resize
nwse-resize
بزرگنمایی یا زوم کردن
مقادیر نشان دهنده تغییر بزرگنمایی و زوم:
zoom-in
zoom-out
گرفتن
مقادیر نشان دهنده حالت گرفتن و یا گرفتن و کشیدن آیتم:
grab
grabbing
مثال
به عنوان نمونه در مثال زیر به کاربر کمک می کنیم تا متوجه شود امکان عمیات مورد نظر بر روی عنصر input
ی که غیر فعال است وجود ندارد:
input[disabled] {
cursor: not-allowed;
background-color: rgba(255, 0, 0, 0.2);
/* ... */
}
همچنین در مثال زیر تمام لینک ها چه بازدید شده باشند چه نه، باید مکان نمای مورد نظر را داشته باشند:
:link,
:visited {
cursor: url(example.svg#linkcursor),
url(hyper.cur),
url(hyper.png) 2 3,
pointer
}
در این مثال مرورگر سعی بر استفاده از مکان نمای تعیین شده از نوع SVG می کند و اگر آن مرورگر فرمت SVG را پشتیبانی نکند به سراغ گزینه دوم خواهد رفت و اگر در نمایش آن هم مشکل داشته باشد تصویر نهایی یعنی hyper.png
را با مختصات تعیین شده 2 و 3 نمایش می دهد. اگر آن تصویر هم در دسترس نباشد در نهایت مرورگر pointer
را به عنوان مقدار این ویژگی لحاظ می کند.
روش های دیگری هم برای فراخوانی تصاویر برای این ویژگی می باشد که می توانید آن را در این دمو بررسی کنید.
همچنین در دموی زیر تمامی مقادیر ویژگی cursor
را می توانید بررسی کنید:
See the Pen CSS Cursors by Mojtaba Seyedi (@seyedi) on CodePen.
پشتیبانی مرورگر ها
بررسی بهتر پشتیبانی مرورگرها را در مورد هر یک از مقادیر را می توانید در سایت موزیلا انجام دهید.
سلام
دستتون درد نکنه
اموزش هاتون عالین
لطفا زود به زود اموزش بزارین.
از html هم اگه میشه اموزش قرار بدید.
سلام اقای سیدی خسته نباشید.
خواستم بپرسم برای تبدیل psd به html و css دیگه نیازی به نمونه برداری و اسلایس نیست با این همه امکانات ؟
سلام . دمت گرم
سلام . ممنون . می خاستم بپرسم که ایا برنامه ی atom برای ساخت سایت مناسب است ؟
سلام، اتم هم خوبه ولی از vscode استفاده کنید.
https://code.visualstudio.com