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

در آموزش قبل اشاره شد که 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 داشته باشیم تا از سردرگمی و تعریف استایل های مبهم اجتناب کنیم.

مقدمه ای بر CSS و استایل دهی صفحات وب
کاربرد ویژگی position و float در CSS
نحوه تنظیم استایل لینک (Link) در CSS
ویژگی های Font و Text در CSS
کار با ویژگی margin و padding در CSS


آقای مهندس آموزش یه کد آکاردئونی بود که خودم میخواستم انجام بدم و بعد به سورسش نگاه کنم. بعدش که انجام دادم برام چند تا سوال پیش اومد که هر روز یک بخشش رو می پرسم ازتون.
ببینید کل کدی که در نهایت از طرف مدرس نوشته شده بود بدین شرحه:
<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/
امیدوارم منظورم رو واضح رسونده باشم خدمتتون.در تفسیر کدهای CSS نباید صرفا به تگ آخر توجه کرد، شبیه چیدمان دلخواه لوازم (تگ های آخر) در یک کمد (تگ لفاف) است که این کمد می تواند در هرکجای خانه (صفحه وب) قرار داده شود! در واقع همان طور که قبلا گفتیم، کدنویسی لایه لایه و تو در تو به علت کنترل بیشتر در هنگام سفارشی سازی است که اغلب درک آن با کسب تجربه و کار عملی به مرور به دست می آید، نکته دیگر رعایت بحث HTML Semantic (ِیعنی هر تگ HTML باید برای منظور مورد نظر خودش استفاده شود، به فرض تگ p باید با هدف نمایش یک پاراگراف استفاده شود و...) است که اهمیت دارد.
دست گلتون واقعا درد نکنه استاد عزیز و ارجمندم.
این رو اصلا نمیدونستم. یعنی در واقع با اینکار مثل این هستش که ما بگیریم یه شیئی رو که داخل کمد گذاشتیم، (حالا بهر وسیله ای) بزرگتر از کمدش کنیم که در این حالت کمد در حالت اولیه خودش درمیاد. اونوقت این قضیه همیشگی هستش؟؟ یعنی ما در هر تگی که این کار رو انجام بدیم در خصوص inline و بلاک بودنش، رو تگهای ماقبل که نگهدارنده اون هستن، تاثیر میذاره؟؟
بازهم ممنونم ازتون و دستتون درد نکنه. مرسی و متشکرم.
آقای مهندس طبق توضیحاتی که بهم دادین و اینجور که فهمیدم برای اینکه نتیجه مشابه div بگیرم اومدم و برای تگ div اینجوری تعریف کردم و درست شد. خیلی جالب شد. ممنونم ازتون.
div{
display:inline-block;
}
در واقع الان به کمد داریم میگیم تو هم بیا و inline-block شو! البته در اینجا کمد همون 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 در وب امر متداولی نیست (به جزء در موارد خاص مانند استفاده از 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>
ممنونم ازتون.آقای مهندس من چند روز قبل یه سوال ارسال کرده بودم در خصوص کدی که برای آقا علیرضا گذاشته بودین (تغییر رنگ 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 تغییر داد
<a href="#" title="Hello, i am a link!">لینک</a>
این title در زمانی که چند لحظه ماوس را روی عبارت "لینک" نگهدارید، نمایان می شود!ایا می دانید مشکل چیست و چگونه حل می شه
مشکلم حل شد
من چندتا قالب آماده وبسایت دانلود کردم ولی کدهای استایل و جاو اسکریپتش رو خلاصه کردن تو چندتا لینک تو قسمت 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">

پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.