آگهی
article

سلکتور آی دی (ID) و کلاس (Class) در CSS

css-style-id-class

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

معنی سلکتور (Selector) در CSS


همان طور که گفتیم سلکتور (Selector) در واقع راهکاری در CSS است که با آن عنصر هدف در HTML برای استایل دهی مشخص می شود، سلکتورها الگوهای تعریف شده (Pattern) در CSS هستند که با آنها عنصر یا عناصری که می خواهیم استایل بر آنها تاثیر داشته باشد را انتخاب (Select) می کنیم لذا می توانیم در ترجمه تحت الفظی این عبارت به آن انتخابگر نیز بگوییم، برای مثال سلکتور p در CSS استایل را به تمام تگ های p موجود در کدنویسی HTML صفحه نسبت می دهد یا به عبارتی دیگر تمام تگ های p در صفحه را جهت اعمال استایل CSS مد نظر انتخاب می کند:
<style type="text/css">
p {
    font-size:16px;
    color:#818181;
}
</style>
<p>پاراگراف اول</p>
<p>پاراگراف دوم</p>
<p>پاراگراف سوم</p>
در مثال بالا استایل CSS به تمام تگ های p نسبت داده می شود، اما اگر بخواهیم فقط یک تگ p خاص را انتخاب کنیم باید به یکی از روش های تعریف آی دی (ID) یا کلاس (Class) در CSS مانند نمونه کد زیر عمل کنیم:
<style type="text/css">
.color-text {
    font-size:16px;
    color:#818181;
}
</style>
<p>پاراگراف اول</p>
<p class="color-text">پاراگراف دوم</p>
<p>پاراگراف سوم</p>
در نمونه کد بالا از سلکتور Class در CSS برای انتخاب یک پاراگراف خاص (تگ p دوم) استفاده شده و استایل صرفا به این تگ اعمال می شود.

نحوه تعریف آی دی (ID) و کلاس (Class) در CSS


گفتیم که سلکتورها الگوهای تعریف شده (Pattern) در CSS هستند، منظور از این عبارت قراردادی بودن نحوه تعریف سلکتورها در CSS با قواعد خاص خود است، آی دی (ID) و کلاس (Class) جزء پرکاربردترین سلکتورها هستند که بر اساس قانون الگو با علائم خاصی در کدهای CSS تعریف می شوند، برای تعریف آی دی از علامت # و برای کلاس از علامت نقطه در ابتدای الگو استفاده می کنیم:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | آی دی و کلاس در CSS</title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
#main{
    display:block;
    background-color:#069;
}
.text{
    color:#FFF;
}
</style>
</head>
<body>
<div id="main" class="text">
این یک متن در آی دی main و کلاس text است.
</div>
</body>
</html>
پیش نمایش
همان طور که در کد بالا مشخص است یک تگ HTML می تواند از چند سلکتور مختلف در CSS استایل دهی شود، در اینجا برخی خصوصیات تگ div از سلکتور آی دی و برخی موارد دیگر از سلکتور کلاس به آن نسبت داده شده اند.

کجا از آی دی (ID) و کی از کلاس (Class) استفاده کنیم؟


شاید با دیدن و بررسی این نمونه کدها این سوال به ذهنمان خطور کند که کجا باید از آی دی (ID) و کی از کلاس (Class) استفاده کنیم؟ در پاسخ باید گفت که هر سلکتوری در CSS با هدف خاصی ایجاد شده که در ارتباط مستقیم با کدنویسی HTML است، در HTML برای شناسایی تگ های مختلف از هم از ID استفاده می شود، به طور مثال:
<div id="id-1"></div>
<div id="id-2"></div>
<div id="id-3"></div>
هر تگ در HTML صرفا می تواند یک ID داشته باشد به عبارتی ID ها همیشه یکتا هستند و اگر در یک صفحه از یک ID در چند مورد استفاده شود، آن صفحه از لحاظ استاندارد کدنویسی معتبر (Valid) نیست، در مقابل اگر بخواهیم یک استایل CSS را به دفعات و برای تگ های مختلف HTML استفاده کنیم، از Class استفاده می کنیم، کلاس ها می توانند به هر تعداد در صفحه تکرار شوند، در واقع هدف از ایجاد این سلکتور تعریف یک استایل و استفاده از آن به دفعات متعدد در صفحه است، به مثال زیر توجه کنید:
<div id="id-1" class="class-1"></div>
<div id="id-2" class="class-1"></div>
<div id="id-3" class="class-1"></div>
همان طور که در تکه کد HTML بالا مشخص است آی دی ها یکتا هستند اما کلاس بین همه تگ ها مشترک است و چند تگ مختلف از یک کلاس مشترک استایل دهی شده اند.

تعریف ویژگی، بدون آی دی و کلاس در CSS


علاوه بر کلاس و آی دی، برخی از موارد در CSS به صورت سلکتورهای کلی قابل تعریف شدن هستند، به طور مثال سلکتور body استایل خود را در حالت پیش فرض به تگ body و زیر مجموعه آن اختصاص می دهد یا سلکتور p به تمام عناصر پاراگرافی (تگ های p) موجود در صفحه وب استایل خود را اختصاص می دهد:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | استایل دهی بدون آی دی و کلاس</title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
p,div{
    border:#CCC 1px solid;
    padding:4px;
    color:#000;
}
#main{
    display:block;
    background-color:#069;
}
.text{
    color:#FFF;
}
</style>
</head>
<body>
<div id="main">
<p class="text">
این یک متن در آی دی main و کلاس text است، برخی ویژگی های کلی از سلکتور div و p تاثیر می پذیرند.
</p>
</div>
</body>
</html>
پیش نمایش
در مثال بالا علاوه بر استفاده از آی دی main و کلاس text به عنوان سلکتورهای اصلی، به صورت کلی نیز استایلی را برای تگ های div و p موجود در صفحه اختصاص داده ایم، با این کار تمام عناصر پاراگراف و بلاک های div آن ویژگی را خواهند داشت، دقت کنیم که در CSS قوانینی برای اولویت بندی سلکتورها وجود دارد، به طور مثال اگر دو ویژگی مشترک (به فرض color) هم در سلکتور p و هم در کلاس تعریف شده باشند، CSS اولویت را به کلاس می دهد و color موجود در سلکتور p را که به صورت کلی تعریف شده نادیده می گیرد، در نمونه کد بالا color برای سلکتور p به صورت مقدار کد هگز 000 (رنگ مشکی) در نظر گرفته شده، اما در کلاس text این مقدار FFF (رنگ سفید) است، در نتیجه رنگ متن تگ های p که کلاس text داشته باشند سفید خواهد بود، برای آشنایی بیشتر با این موضوع در ادامه به طور مختصر به مسئله قانون اولویت بندی سلکتورها در CSS می پردازیم.

قانون اولویت بندی سلکتورها در CSS


در آموزش قبل در خصوص عبارت Cascading یا آبشاری بودن CSS توضیحاتی ارائه شد، گفتیم که منظور از این عبارت پیروی سلسه مراتبی مرورگر از استایل های CSS موجود در صفحه است، یعنی اگر دو استایل مشترک در صفحه وجود داشته باشند، خاصیتی غالب می شود که در پائین ترین سطح درج شده باشد، به طور مثال در استایل های زیر ویژگی دوم غالب می شود چون در سطح پائین تری در صفحه درج شده:
<style type="text/css">
p.text{
    font-size:16px;
}
</style>
<style type="text/css">
p.text{
    font-size:12px;
}
</style>
<p class="text">پاراگراف</p>
اما تداخل همیشه بین استایل های صفحه نیست، همواره این امکان وجود دارد که خاصیت های مختلف CSS از چند سلکتور متفاوت بر روی یک تگ HTML تاثیر مشترک داشته و بین سلکتورها به اصطلاح تداخل ایجاد شود، به طور مثال در نمونه کد زیر بین سلکتور p و p.text تداخل وجود دارد:
<style type="text/css">
p{
    font-size:12px;
    color:#D3181B;
}
p.text{
    font-size:16px;
    color:#1740DD;
}
</style>
<p>پاراگراف اول</p>
<p class="text">پاراگراف دوم</p>
اگر استایل بالا را در یک صفحه HTML قرار داده و آن را اجرا کنیم، خواهیم دید که CSS در حالتی که برای تگ p کلاس در نظر گرفته شده (p.text یعنی تگ های p در صفحه که کلاس text داشته باشند)، خاصیت ها را به جای تگ p از کلاس دریافت می کند، این رفتار بر اساس قانون اولویت بندی سلکتورها در CSS صورت می گیرد که در ادامه به اختصار در مورد آن خواهیم گفت.
بر اساس قانون اولویت، هر سلکتور CSS را می توان در چهار رده 
A, B, C, D
جای داد و با اعداد 0، 1 و... تعداد تکرار آنها را محاسبه کرد (این حروف و اعداد الگویی فرضی و قراردادی هستند و صرفا جهت درک بهتر و به حافظه سپردن موضوع استفاده می شوند)، در اولین رده این ساختار، استایل خطی یا Inline Style جای دارد که حرف متناظر آن A و عدد متناظر آن
1, 0, 0, 0
است، رده دوم مربوط به ID است که با حرف B و عدد متناظر
0, 1, 0, 0
مشخص می شود، در رده سوم اولویت Class قرار دارد که با حرف C و عدد متناظر
0, 0, 1, 0
متمایز می گردد، در آخرین رده سلکتور تگ یا Element قرار دارد که با حرف D و عدد متناظر
0, 0, 0, 1
مشخص می شود، به طور خلاصه و با مثال:
A - Inline Style => 1000 => <div style=""></div>
B - ID => 0100 => <style type="text/css">#your-id {}</style>
C - Class => 0010 => <style type="text/css">.your-class {}</style>
D - Element => 0001 => <style type="text/css">div {}</style>
چند مثال کاربردی از قانون اولویت بندی سلکتورها در CSS:
<style type="text/css">
p{
    font-size:12px;
    color:#D3181B;
}
</style>
<p style="font-size:24px;">پاراگراف</p>
در مثال بالا بین استایل خطی (خاصیت font-size) با سلکتور p یا Element تداخل وجود دارد، در این حالت استایل خطی برتری دارد (اندازه فونت 24 پیکسل خواهد بود) چون درجه آن A است و عدد متناظر آن
1, 0, 0, 0
تعریف می شود که از عدد
0, 0, 0, 1
بزرگتر است!
<style type="text/css">
div p.text{
    font-size:16px;
    text-decoration:underline;
}
#main p{
    font-size: 12px;
    text-decoration:overline;
}
</style>
<div id="main">
<p class="text">پاراگراف</p>
</div>
در مثال بالا سلکتور دوم ارجحیت دارد چرا که عدد متناظر آن به صورت
0, 1, 0, 1
محاسبه می شود (آی دی main به تعداد 1 مورد در رده B و تگ p به تعداد 1 مورد در جایگاه D که در نهایت عدد آن به صورت 0101 می شود) که از عدد 
0, 0, 1, 2
سلکتور اول بزرگتر است! (عدد 2 در این محاسبه یعنی 2 عنصر تگ یا Element در سلکتور وجود دارد لذا نمره متناظر آن 2 و در جایگاه D است، عدد 1 نیز به دلیل وجود یک کلاس در الگو است که جایگاه آن حرف C است).
با فهم این الگوها می توانیم درک روشنی از قوانین اولیت بندی در CSS داشته باشیم تا از سردرگمی و تعریف استایل های مبهم اجتناب کنیم.
sectionدسته بندی: آموزش مقدماتی » CSS
related مطالب بیشتر:
» ویژگی های Font و Text در CSS
» کاربرد خاصیت height و width در CSS
» نحوه تنظیم لیست با تگ ul li در CSS
» کاربرد ویژگی position و float در CSS
» کار با border و outline در CSS
commentنظرات (۵۰ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: داوود
زمان: ۱۲:۳۱:۱۵ - تاریخ: ۱۳۹۴/۰۴/۰۳
سلام
آقای مهندس آموزش یه کد آکاردئونی بود که خودم میخواستم انجام بدم و بعد به سورسش نگاه کنم. بعدش که انجام دادم برام چند تا سوال پیش اومد که هر روز یک بخشش رو می پرسم ازتون.
ببینید کل کدی که در نهایت از طرف مدرس نوشته شده بود بدین شرحه:
<style type="text/css">
*{
margin:0;
padding:0;
}
ul.accardion{
background-color:#9900FF;
min-height:100px;
width:400px;
}
ul.accardion li div{
color:yellow;
display:none;
}
ul.accardion li:hover span{
color:#00FF00;
}

ul.accardion li:hover div{
display:block;
}
</style>
</head>
<body>
<ul class="accardion">
<li>
<span>html</span>
<div><p>content 1</p></div>
</li>
<li>
<span>CSS</span>
<div><p>Contetn 2</p></div>
</li>
<li>
<span>java</span>
<div><p>Content 3</p></div>
</li>
</ul>
</body>
حالا ولی من 2 تا از سلکتورها رو رو اینجوری نوشته بودم و جواب هم میداد؛ میشه ملاحظه بفرمایین:
اولی :
ul.accardion li p{
color:yellow;
display:none;
}
و دومی:
ul.accardion li:hover p{
display:block;
}
ببنید الان به درستی و خوبی داره مثل کد مدرس جواب میده، در صورتی که میدونم روشی که من نوشتم درست و اصولی نیست و روش مدرس استاندارد تره! چون از یه جایی فهمیدم که تو سوال بعدیم ازتون می پرسم که از کجا فهمیدم.
حالا میخوام ببینم چرا مثلا کد اون بهتر از من شده؟؟ چرا من که p رو هدف قرار گرفتم اون اینکار رو نکرده و div رو هدف قرار داده؟؟ مگه نباید تقریبا به آخرین هدف property های خودمون رو اعمال کنیم؟
امکانش هست در این خصوص یه توضیح مبسوطی (مثل همیشه) بهم بدین؟؟ بازم ببخشید.
پاسخ: 
- منظورتان از بهتر شدن کدها مشخص نیست! در کدنویسی معمولا دو نکته اهمیت دارد:
مورد اول رعایت استاندار HTML یا HTML Semantic در نگارش کدهای HTML است و نکته دوم استفاده از CSS با توجه به نیاز و هدف، به طور مثال اگر با تگ P نیاز و استاندارد معمول طراحی برآورده می شود، استفاده از تگ اضافه ضرورتی ندارد، اما در برخی شرایط جهت اعمال کنترل بیشتر و سفارشی سازی ممکن است صرف یک تگ مناسب نباشد و نیاز به اعمال برخی خاصیت ها در تگ والد آن باشد.
مورد دوم اینکه هیچ الزامی به هدف قرار دادن تگ آخر وجود ندارد! همه چیز به شرایط، نیاز و هدف طراحی استایل صفحه وب برمی گردد.
نویسنده: داوود
زمان: ۱۰:۴۲:۲۴ - تاریخ: ۱۳۹۴/۰۴/۰۴
سلام و عرض صبح بخیر و احترام؛
ممنونم که دیشب وقت گذاشته و پاسخ رو دادین. اگه ایرادی نداشته باشه روی همون کد چند تا سوال دیگه رو به ترتیب می پرسم.
ببینید اینکه میگم چرا کد مدرس از نظر من ممکنه بهتر شده باشه برای این بود که:
الان کاربر روی هر گزینه ای که بره توضیحات بیشتر همون گزینه، در پایین همون گزینه قابل مشاهده ست.
(برای راحتی کار و اینکه کمتر وقت شما رو بگیرم و اصلا زحمت copy و paste رو نکشین تو این لینک کد اولیه رو گذاشتم:
http://www.cssdesk.com/AxH3u
)
خوب حالا من میخوام یه تغییر کوچولو تو نحوه نمایش توضیحات گزینه ها بدم و اونهم اینه که به جای اینکه در پایین هر گزینه توضیحات رو نشون بده بیاد و در روبروش نشون بده. برای اینکار اومدم و در کد مدرس این تغییر رو اعمال کردم و درست شد؛ ببینید:
کد شماره یک:
ul.accardion li:hover div{
display:inline-block;
}
حالا همین تغییر رو به کد خودم دادم و درست نشد: ببینید:
کد شماره 2:
ul.accardion li:hover p{
display:inline-block;
}
و باز هم توضیحات رو در پایین هر گزینه نشون میداد؛ سوالم اینه که آیا عدم تغییر نحوه نمایش در این حالت بخاطر متفاوت بودن تعاریف پیش فرض p و div هستش؟؟ آخه هر دوتاشون که از نوع block هستن!
پاورقی:
مشاهده نتیجه تصویر در حالت کد شماره یک:
http://jsfiddle.net/hh2x3za6/
مشاهده نتیجه تصویر در حالت کد شماره 2:
http://jsfiddle.net/hh2x3za6/1/
امیدوارم منظورم رو واضح رسونده باشم خدمتتون.
پاسخ: 
این موضوع به بهتر و بدتر بودن کدها مربوط نیست، علت این است زمانی که تگ p به صورت inline-block تغییر می کند، بلاک div لفاف آن استایل خود را از دست می دهد (استایل div را با ویرایش خود حذف می کنید!) و به صورت پیش فرض (block) می شود، در این حالت مرورگر تگ p را به صورت خطی پردازش می کند منتها درون تگ div، که خود تگ div به صورت block و غیر خطی است!
در تفسیر کدهای CSS نباید صرفا به تگ آخر توجه کرد، شبیه چیدمان دلخواه لوازم (تگ های آخر) در یک کمد (تگ لفاف) است که این کمد می تواند در هرکجای خانه (صفحه وب) قرار داده شود! در واقع همان طور که قبلا گفتیم، کدنویسی لایه لایه و تو در تو به علت کنترل بیشتر در هنگام سفارشی سازی است که اغلب درک آن با کسب تجربه و کار عملی به مرور به دست می آید، نکته دیگر رعایت بحث HTML Semantic (ِیعنی هر تگ HTML باید برای منظور مورد نظر خودش استفاده شود، به فرض تگ p باید با هدف نمایش یک پاراگراف استفاده شود و...) است که اهمیت دارد.
نویسنده: داوود
زمان: ۰۹:۰۰:۴۶ - تاریخ: ۱۳۹۴/۰۴/۰۶
سلام آقای مهندس
دست گلتون واقعا درد نکنه استاد عزیز و ارجمندم.
این رو اصلا نمیدونستم. یعنی در واقع با اینکار مثل این هستش که ما بگیریم یه شیئی رو که داخل کمد گذاشتیم، (حالا بهر وسیله ای) بزرگتر از کمدش کنیم که در این حالت کمد در حالت اولیه خودش درمیاد. اونوقت این قضیه همیشگی هستش؟؟ یعنی ما در هر تگی که این کار رو انجام بدیم در خصوص inline و بلاک بودنش، رو تگهای ماقبل که نگهدارنده اون هستن، تاثیر میذاره؟؟
بازهم ممنونم ازتون و دستتون درد نکنه. مرسی و متشکرم.
پاسخ: 
خیر! تگ درونی نمی تواند روی تگ ماقبل خود اثر بگذارد، در واقع منظور ما این بود که شما استایل در نظر گرفته شده برای div را حذف می کنید و استایل p را جایگزین می کنید در کدهای CSS و به این خاطر تگ div بدون استایل به حالت پیش فرض یعنی block بر می گردد.
نویسنده: داوود
زمان: ۰۹:۵۹:۴۱ - تاریخ: ۱۳۹۴/۰۴/۰۶
سلامی دوباره آقای مهندس؛
آقای مهندس طبق توضیحاتی که بهم دادین و اینجور که فهمیدم برای اینکه نتیجه مشابه div بگیرم اومدم و برای تگ div اینجوری تعریف کردم و درست شد. خیلی جالب شد. ممنونم ازتون.
div{
display:inline-block;
}
در واقع الان به کمد داریم میگیم تو هم بیا و inline-block شو! البته در اینجا کمد همون div هستش ها.
پاسخ: 
بله! مثال کمد صرفا جهت تفهیم موضوع بود، در سایر موارد خیلی ارتباط دقیقی بین کمد و div وجود ندارد! :-)
نویسنده: داوود
زمان: ۱۰:۴۰:۵۷ - تاریخ: ۱۳۹۴/۰۴/۱۱
سلام و وقت بخیر آقای مهندس؛
استاد وقتی که با دستور import یک فایلی رو به فایل css خودمون الحاق میکنیم، اولویتها چجوری میشه؟
الف) مثلا در فایل style.css ما دو تا فایل رو به ترتیب با نامهای test1 و test2 الحاق می کنیم! حالا در زمان اجرا فکر کنم اول بیاد و attribute های test1 رو اعمال کنه، بعدش test2 و در انتها style رو. یعنی اولویت style از دو تای دیگه بالاتر و ارجح تر هستش. درست میگم؟؟
ب) حالا اگه تو یکی از این فایلها که اولویت پایین تری داره (منظورم این هستش که پس از بقیه اعمال میشه مثل test2)، ما از import! استفاده کنیم، این رو که دیگه تحت تاثیر اولویتهای بالاتر قرار نمیده، مگه نه؟؟ مثلا در همین مثال بالا اولویت test 2 بنظرم از test1 و style پایینتره.
@import url('test1.css');
@import url('test2.css');
ج) اینکه میگن نباید زیاد از این روش استفاده کنیم، چون باعث کاهش Load صفحه میشه درسته؟؟ یا اینکه در حد یکی دو تا اشکال نداره؟؟ چون با اینکار نظم صفحه بیشتر میشه فکر کنم.
پاسخ: 
- اولویت در این حالت هم مشابه حالت معمول است، به عبارتی با فرض یکی بودن کدها باید اولویت آنها را مشخص کنید یعنی از هر کجا که فایل، import شده، در واقع کدهای آن از همانجا وارد استایل موجود می شود، لذا استایل نهایی شما که توسط مرورگر پردازش می شود در واقع ماحصل فایل هایتان و محل درج آنها است، به طور خلاصه هرچقدر هم که فایل import کنید، در نهایت مرورگر یک استایل واحد را پردازش خواهد کرد و لذا بحث ارجحیت مانند یک استایل واحد است (با رعایت اینکه هر فایل در هر کجا import شود، کدهای آن از همانجا با استایل موجود mix می شود!)
- استفاده از import در وب امر متداولی نیست (به جزء در موارد خاص مانند استفاده از media@ برای استایل دهی برای چاپ و...) و به جای آن از link استفاده می شود، دلیل این موضوع هم بحث سرعت بارگذاری link و بارگذاری چندگانه آن است، یعنی چندین فایل css. در یک زمان قابل بارگذاری است، اما در مورد import اینگونه نیست و مرورگر فایل به فایل منتظر بارگذاری می ماند، همچنین مطلب زیر را مطالعه کنید:
http://www.stevesouders.com/blog/2009/04/09/dont-use-import/
نویسنده: داوود
زمان: ۰۴:۲۲:۲۸ - تاریخ: ۱۳۹۴/۰۴/۱۲
با سلام؛ در این لحظات معنوی و زیبا از ماه مبارک رمضان؛ از خداوند بهترینها رو برای شما و سایر خوانندگان عزیز سایت خوبمون خواستارم. خدا خیرتون بده که همیشه پاسخگوی ما بودین بدون هیچ گونه کم و کاستی.
نویسنده: داوود
زمان: ۰۸:۱۴:۴۸ - تاریخ: ۱۳۹۴/۰۴/۱۸
سلام آقای مهندس،صبحتون بخیر و خوشی انشاالله؛
آقای مهندس این طور که نوشتم معنیش این میشه دیگه درسته؟
ابتدا کد رو ببینید:
#mybox#test{
border:2px solid #00FF99;
width:100px;
height:100px;
background:yellow;
}
اگه الان اینجا به جای # (ID) از . (class) استفاده می کردم یعنی اینکه تگی رو تحت تاثیر قرار بده که دارای کلاسهای mybox و test باشه.
حالا که از # استفاده می کنم چرا این قضیه صدق نمیکنه؟ الان معنی عبارت کد من این نمیشه؟
تگهایی رو تحت تاثیر قرار بده که دارای ID های mybox و test هستش (بطور همزمان)؛ یعنی اینجوری:
<div id="mybox test">the title for test</div>
ممنونم ازتون.
پاسخ: 
این حالت صحیح نیست، چون هدف از ID بر خلاف Class وجود پارامتر شناسایی یکتا است و لذا تگ های HTML نمی توانند چند ID هم زمان داشته باشند!، همچنین نمی توان یک ID را (در یک صفحه) به چند تگ نسبت داد، هر ID مخصوص یک تگ است.
نویسنده: داوود
زمان: ۰۸:۲۵:۰۵ - تاریخ: ۱۳۹۴/۰۵/۲۶
سلام و عرض صبح بخیر خدمت شما؛
آقای مهندس من چند روز قبل یه سوال ارسال کرده بودم در خصوص کدی که برای آقا علیرضا گذاشته بودین (تغییر رنگ title) و در اون در خصوص خاصیت after بعد از clear و همچنین کار تگ attr پرسیده بودم. شما هم محبت کردین و پاسخ دادین ولی چون اوایل بامداد بود گفتم صبح بیام و جواب رو کاملتر بخونم. البته همون لحظه هم تشکر خودم رو براتون فرستادم.
حالا که دارم دنبال میگردم راستش رو بخواین نه سوال قبلیم هستش و نه پیام تشکرم. میخواستم ببینم امکانش هست دوباره پاسخ رو برام بزارین؟؟ آخه احساس می کنم حذف شده. نمیدونم خودتون یادتون هست کدوم سوال رو میگم یا نه. ممنون میشم اگه پیگیری کنید چون اگه حذف بشه خیلی ناجور میشه ! ایکاش همون لحظه کپی میکردم صفحه رو.
اگه ممکنه یه رونوشت هم به ایمیلم بزنید که اگه اینجا حذف بشه دوباره تو اونجا بتونم بخونم جوابتون رو.
پاسخ: 
متاسفانه هنوز مشکلات سرور سایت به طور کامل بر طرف نشده و هر از چندگاهی شرکت هاستینگ بدون هماهنگی ما اقدام به رستور دیتابیس ها می کند که این باعث حذف پیام های بک آپ گرفته نشده همان روز رستور می شود! پیام شما نیز شامل همین قضیه شده، چند روز صبر کنید، پیام به همراه پاسخ جدید در همین قسمت منتشر خواهد شد!
نویسنده: داوود
زمان: ۲۲:۰۵:۴۲ - تاریخ: ۱۳۹۴/۰۵/۲۷
سلام
شما یه نمونه کد در پاسخ آقا علیرضا مبنی بر تغییر صفت مربوط به تگ title تو این لینک
http://jsfiddle.net/tDQWN
گذاشته بودین که من سعی کردم بدون نگاه کردن به کد شما اون رو انجام بدم.
بعد از اینکه یه خورده کارهاشو کردم و به مشکل برای اجرای صحیح و دقیق مثل کد شما برخورد کردم اومدم و اصل کد رو نگاه کردم. یکی دو مورد برام جالب اومد که گفتم اگه اشکال نداشته باشه ازتون بپرسم.
الف) کار خاصیت گزینه after رو که بعد از hover در انتخاب گر
a[title]:hover:after
گذاشتین رو میشه توضیح بدین؟
ب) همچنین
content: attr(title);
یعنی در واقع داره میگه اگه محتوای property صفت برابر با title بود بیا و این کار رو انجام بده؟؟ این خط از دستور رو میشه بفرمایین دقیقا چیکار میکنه؟؟ همون کلمه attr و content بیشتر مد نظرم هست.
ج) الان وقتی که ما postion مربوط به گزینشگر
a[title]:hover:after
رو absolute دادیم، دیدم که شما به left اون خاصیت صفر دادین، در واقع اینجا وقتی که خاصیت absolute رو میگیره ، مگه نمیاد و از Body پیروی کنه و خودش رو از عنصر والد جدا کنه در خصوص موقعیت قرار گیری؟؟ یا نسبت به عنصر والد میاد و موقعیت میگیره؟؟
مرسی و ممنونم ازتون.
پاسخ: 
- کد مربوطه توسط ما نوشته نشده، صرفا لینک آن برای کاربر درج شده است!
- after هم یک Selector در CSS است، با این تفاوت که حالت دستوری دارد، این دستور محتوای متنی یا تغییر خاصی را بعد از عنصر انتخاب شده اعمال می کند.
- دستور after با پارامتر content تکمیل می شود که خود می تواند در برگیرنده یک متن ساده یا یک تابع در CSS باشد.
- attr مخفف attribute یک تابع در CSS است که یک صفت از عنصر (در اینجا title) را برای اعمال دستور انتخاب می کند.
- عنصر absolute زمانی که زیرمجموعه عنصر relative (نسبی) باشد، از همان پیروی می کند، در اینجا a:hover به صورت relative است!
نویسنده: محسن
زمان: ۰۳:۵۳:۵۷ - تاریخ: ۱۳۹۴/۰۶/۰۸
خسته نباشید میگم واقعا کارتون عالیه
نویسنده: داوود
زمان: ۰۹:۳۸:۱۰ - تاریخ: ۱۳۹۴/۰۷/۰۹
سلام آقای مهندس، صبحتون بخیر و خوشی؛
استاد یه سوال دارم ازتون که شاید پیش پا افتاده باشه ولی چون مقدمه سوال بعدیم هستش گفتم که اول این رو ازتون بپرسم و بعدش برم سراغ سوال بعدیم. اونهم اینه که چرا گاهی اوقات تو کدهای css میان و از کلمه کلیدی div استفاده می کنن؟ و اینکه آیا اگه مثلا ما اینجوری
.div 
استفاده کنیم، دیگه div رو از حالت عمومیش خارج کردیم. درست میگم؟؟ بازم ببخشید اگه سوال پیش پا افتاده ای هستش.
الان در این مثالها شرحی که بابت هر کد دادم آیا درسته:
الف)
div span{
color:red;
}
کلیه span هایی که در کلیه div های موجود در صفحه (صرفنظر از هر نام div) واقع شده اند رو تحت تاثیر قرار میده.
ب)
div .span{
color:red;
}
کلیه div هایی که شامل کلاس span هستن رو تحت تاثیر قرار میده.
حالا امکانش هست بگید آیا این کدهای زیر درست هستن و اگه آره طرز تحت تاثیر قرار دادنشون به چه نحوی هستش:
ج)
span.div{
color:red;
}
د)
.div .span{
color:red;
}
هـ)
.div span{
color:red;
}
و)
.div.span{
color:red;
}
در پاسخ دادن به این سوال عجله ندارم استاد عزیز؛ البته ببخشید این سوال چون پیش مقدمه سوال بعدیم هستش.
پاسخ: 
قبلا به این موارد پاسخ داده شده! صرفا جهت یادآوری:
- زمانی که علامت . در CSS استفاده می کنیم، عبارت مورد نظر هر چه که باشد، تبدیل به یک class می شود و div یا هر چیز دیگر بودن تفاوتی ندارد (باید با سلکتور کلاس فراخوانی شود).
- زمانی که یک دستور از چند قسمت تشکیل می شود، معمولا عنصر هدف، تگ آخر است و تگ های ماقبل سلسله قرارگرفتن را نشان می دهد، مثال:
div .span
یعنی استایل بر روی کلیه span هایی اعمال می شود که کلاس span داشته و نیز در یک تگ div قرار گرفته باشند.
حالت زیر به معنی تگی است که هم کلاس اول و هم کلاس دوم را داشته باشد:
.div.span{
color:red;
}
همین طور مثال زیر:
<style type="text/css">
span.div{
color:#249FE4;
}
</style>
<span class="div">test</span>
نویسنده: فرهاد ف
زمان: ۲۰:۱۶:۴۱ - تاریخ: ۱۳۹۴/۰۸/۱۲
سلام استاد.
دست مریزاد.
آقای مهندس در پاسخ به کاربر آقا علیرضا که در صفحه اول سوال مطرح کردن، منظور از تغییر title یعنی چی؟ ما یه title داشتیم که مال بالای صفحه بود و عنوان سایت رو توش می نوشتیم حالا که میگن صفت title یعنی چی رو بیایم و عوض کنیم؟
این سوالشون بود: سلام می خواستم بدونم چطور میشه رنگ یا فونت صفت title رو با css تغییر داد
پاسخ: 
title مد نظر شما در واقع تگ title در HTML است، اما سوال کاربر مربوط به صفت یا Attribute تگ ها است، به فرض:
<a href="#" title="Hello, i am a link!">لینک</a>
این title در زمانی که چند لحظه ماوس را روی عبارت "لینک" نگهدارید، نمایان می شود!
نویسنده: زیبایی
زمان: ۰۹:۴۸:۵۸ - تاریخ: ۱۳۹۴/۰۸/۱۹
سلام من یک css نوشتم برای منو ابشاری تا دیروز درست کار می کرد از دیروز وقتی روی آیتم های منو موس را می برم آیتم قبلی کش میده و تغییر سایز می دهد و آیتمی که روی آن موس را گرفته ام کوچک می شود و زیر منو آن با فاصله دیده می شود و قابل انتخاب نیست
ایا می دانید مشکل چیست و چگونه حل می شه
پاسخ: 
تا زمانی که در صفحه خود استایل یا تغییر دیگری ایجاد نکنید، قاعدتا نباید تفاوتی در نحوه عمل منو وجود داشته باشد، لذا در ابتدا باید ببینید چه کد یا ابزاری به خروجی صفحه اضافه شده که می تواند روی منو تاثیر بگذارد، به فرض برخی از خاصیت ها در CSS بدون تعریف کلاس مخصوص به تمام تگ ها اختصاص داده می شوند، به طور مثال سلکتور a می تواند روی تمام لینک ها موثر باشد، مگر اینکه برای آنها کلاس و خاصیت منحصر به فرد تعریف کنید، به هر حال بدون دیدن سورس کدهای صفحه خیلی نمی توان پاسخ قاطعی ارائه کرد!
نویسنده: امیر
زمان: ۱۶:۲۴:۵۲ - تاریخ: ۱۳۹۴/۰۹/۰۱
ممنون
مشکلم حل شد
نویسنده: محسن(مبتدی)
زمان: ۲۱:۰۳:۰۵ - تاریخ: ۱۳۹۵/۰۶/۲۶
سلام استاد خسته نباشید
من چندتا قالب آماده وبسایت دانلود کردم ولی کدهای استایل و جاو اسکریپتش رو خلاصه کردن تو چندتا لینک تو قسمت head من چطور میتونیم این لینکهای خلاصه شده رو باز کنم تا بتونم قالبها رو ویرایش کنم؟
مثلا چنتاشون رو به این صورت قرار دادن تو قسمت head
<link rel="icon" type="image/png" href="img/favicon.png" />
<link rel="stylesheet" type="text/css" href="css/bootstrap.css">
<link rel=stylesheet href="css/bootstrap-responsive.css">
<link rel="stylesheet" type="text/css" href="css/pink-theme.css">
پاسخ: 
دقیقا متوجه منظورتان از "چطور میتونیم این لینکهای خلاصه شده رو باز کنم" نشدیم! اینها شیوه معمول طراحی قالب هستند و فایل های CSS باید در فولدر قالب موجود باشند که با یک برنامه ویرایش استایل مانند Adobe Dreamweaver یا PHPStorm می توانید فایل را باز کرده و قسمت های مورد نظر را تغییر دهید!
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




4 × 6
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form حامد
در:
عالی بود
۲۱:۳۸:۳۱ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام خیلی ممنون بابت پاسخ سریعتون خیلی دنبال همین دو خط کد بودم برای یادگیری سریع ریجکس ولی با سرچ پیدا نکردم و...
۱۸:۰۳:۴۳ ۱۳۹۸/۱۱/۰۷

form فرید
در:
درود بشما، میخواستم بدونم مثل کلمه @، کلمه ایی ساین هم داریم؟ با تشکر
۱۲:۱۹:۰۷ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام میشه لطفا به سوالم جواب بدید من می خوام با استفاده از عبارات با قاعده تمام تگ های html رو تشخیص بدم...
۱۰:۱۳:۰۵ ۱۳۹۸/۱۱/۰۷

form PewDiePie
در:
سلام چطور می تونم این کد رو یه لینک هم بهش اضافه کنم یعنی این که وقتی عکس رو می بینی طرف بتونه...
۲۳:۳۶:۲۶ ۱۳۹۸/۱۱/۰۶

form رسول
در:
سلام میخوام بجای نمایش متن، متن موجود در یه لینکو بهم نشون بده ممنون میشم کمکم کنید
۱۳:۳۸:۱۸ ۱۳۹۸/۱۱/۰۶

form حسن
در:
من مطابق کد نوشته شده شما میخواستم آدرس
۱۴:۱۰:۱۳ ۱۳۹۸/۱۱/۰۵

form saemrezaei
در:
سلام واقعا عالییه خیلی استفاده کردم به وبلاگم سر بزن لطفا.
۱۳:۳۷:۳۴ ۱۳۹۸/۱۱/۰۵

form نصراله رضایی
در:
سلام در ادمین های گذشته که باز می کنم تصاویر مشاهده نمی شود و من را به آدرس Huge domains.com ارجاع می...
۲۲:۳۹:۵۳ ۱۳۹۸/۱۱/۰۴

form نقدی زاده
در:
واقعا مرسی یه overflow-y:hidden به body دادم اسکرل افقی برای صفحه نمایش تبلت از بین رفت
۱۴:۴۴:۱۳ ۱۳۹۸/۱۱/۰۴

form وحید پوربشیری
در:
سلام لطفا یکی که خوب جاوا اسکریپت بلده بیاد به این آیدی ت.ل.گ.ر.ا.م Alpha2020@ یه کد برام بنویسه پول هم میدم
۱۱:۱۲:۳۲ ۱۳۹۸/۱۱/۰۲

form امین
در:
سلام تشکر بابت راهنماییتون. منظور من این بود که: الان با ثبت نام کاربر a در سایت اطلاعاتش در دیتابیس ثبت میشه و یک پوشه...
۰۳:۱۲:۴۰ ۱۳۹۸/۱۱/۰۲

form شریفی
در:
سلام معنی متن زیر چیست؟
۱۸:۲۸:۰۹ ۱۳۹۸/۱۱/۰۱

form امین
در:
سلام خسته نباشید یه اسکریپت دارم که وقتی کاربر ثبت نام میکنه یه پوشه و محتواش ایجاد میشه. میخوام یه صفحه با هر ثبت نام...
۱۴:۱۸:۵۱ ۱۳۹۸/۱۰/۳۰

form Admin
در:
سلام دوست عزیز. میشه بگویید چگونه میتوان در وبلاگ کادری را باز کرد که بازدید کنندگان بتوانند در آن چیزی بنویسند. ممنون میشم...
۱۱:۲۸:۵۰ ۱۳۹۸/۱۰/۳۰
آگهی