View Full Version : مشکلات مربوط به HOVER
omidkhosravifar
شنبه 16 آبان 1394, 23:52 عصر
با عرض سلام و ادب خدمت مدیران و کاربران محترم فروم
این اولین پست من است و چنانچه سوالم را در محل مناسب نمی پرسم ، پیشاپیش عذرخواهی میکنم
دوستان، من تازه اموزش HTML و CSS را شروع کردم . به یک مشکلی برخورد کردم. میخواهم در کد زیر، وقتی که بر روی لینک Home کلیک می شود، پاراگراف ظاهر شود !
اما هر کاری میکنم ، موفق نمیشم
ممنون میشم راهنمایی بفرمایید
<!doctype html>
<html>
<head>
<style>p{display:none;}
a:hover p{display:block;}</style>
</head>
<body>
<a href="#">Home</a>
<p class="test3">This example prepare for hover </p>
</body></html>
siros1983
یک شنبه 17 آبان 1394, 10:00 صبح
hover واسه کلیک نیست
وقتی شما ماوس روی a میبرید hover اتفاق میفته
omidkhosravifar
یک شنبه 17 آبان 1394, 11:31 صبح
سلام
بله درست می فرمایید. اشتباه تایپی بوده
به هر حال من کدی را نوشتم که میخواهم وقتی ماوس روی Home قرار می گیره ، پارارگراف از حالت display:none به حالت display:block تغییر پیدا بکنه
متاسفاتنه این امر صورت نمی گیره !! نمدونممشکل از کجاست
ممنون از توجه شما
frednasri
یک شنبه 17 آبان 1394, 12:42 عصر
سلام
بله درست می فرمایید. اشتباه تایپی بوده
به هر حال من کدی را نوشتم که میخواهم وقتی ماوس روی Home قرار می گیره ، پارارگراف از حالت display:none به حالت display:block تغییر پیدا بکنه
متاسفاتنه این امر صورت نمی گیره !! نمدونممشکل از کجاست
ممنون از توجه شما
سلام.
تو کد CSS، یه + بین a:hover و p اضافه کنید، درست میشه انشاا....
با کد خوتون، اینجا (http://jsfiddle.net/frednasri/p23y2oLh/) یه نمونه ساختم.
موفق باشید.
omidkhosravifar
یک شنبه 17 آبان 1394, 14:09 عصر
سلام.
تو کد CSS، یه + بین a:hover و p اضافه کنید، درست میشه انشاا....
با کد خوتون، اینجا (http://jsfiddle.net/frednasri/p23y2oLh/) یه نمونه ساختم.
موفق باشید.
سلام . کمک بسیار ارزشمندی بود . این علامت مثبت به چه دلیل اظافه میشه . ؟؟ ممنون . درست کار می کنه الان
میشه بیشتر توضیح بفرمایید
frednasri
یک شنبه 17 آبان 1394, 16:07 عصر
سلام . کمک بسیار ارزشمندی بود . این علامت مثبت به چه دلیل اظافه میشه . ؟؟ ممنون . درست کار می کنه الان
میشه بیشتر توضیح بفرمایید
خواهش می کنم.
hover روی تمام المان ها (نه فقط لینک ها) قابلیت اجرا داره.
در واقع، در CSS اگه بخواین با hover روی یک المان، المان دیگه ای تغییر کنه، المان دوم باید یا درون المان اول باشه (یعنی رابطه child و parent داشته باشن) و یا اینکه المان دوم باید sibling المان اول باشه (یعنی هر دو المان درون یه المان رده بالاتر قرار داشته باشن).
سعی می کنم با کدهای خودتون، چند مثال از این موارد رو برای شما توضیح بدم:
مورد (1): p درون a قرار داره (یعنی p در واقع child یا descendant تگ a هست):
<head>
<style>
p {
display:none;
}
a:hover p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home
<p class="test3">This is shown on hover</p>
</a>
</body>
در این مورد با همون کد CSS شما hover اتفاق می افته.
اما کد html شما از نوع مورد (2) هست که p بعد از a قرار گرفته و باهاش رابطه sibling داره (یعنی هر دو توی یک المان رده بالاتر قرار دارن)
مورد (2): p بلافاصله بعد از تگ a اومده و هر دو توی یک المان رده بالاتر (مثل تگ body در مثال زیر) قرار دارن:
<head>
<style>
p {
display:none;
}
a:hover + p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home</a>
<p class="test3">This is shown on hover</p>
</body>
در اینجا، برای اینکه hover اتفاق بیفته باید از + که بهش adjacent sibling selector میگن استفاده کنید؛ a + p یعنی المان p که بلافاصله بعد از المان a می آد در حالی که هر دوی اینا هم رده هستن.
مورد (3): p بعد از تگ a اومده و هر دو توی یک المان رده بالاتر (مثل تگ body در مثال زیر) قرار دارن، اما تگ های دیگه ای بین p و a فاصله انداخته:
<head>
<style>
p {
display:none;
}
a:hover ~ p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home</a>
<h1>Contens</h1>
<div>content 1</div>
<div>content 2</div>
<p class="test3">This is shown on hover</p>
</body>
در اینجا، برای اینکه hover اتفاق بیفته باید از ~ که بهش general sibling selector میگن استفاده کنید؛ a ~ p یعنی تمام المان های p که بعد از المان a می آد (یا بلافاصله یا با فاصله) در حالی که همه اینا هم رده هستن. در واقع ~ برای مورد (2) به جای + هم جواب می ده.
با به کار بردن ~ ، هر چند تا تگ p که بعد از تگ a وجود داره (به شرطی که هم رده باشن)، با hover روی a نمایان می شن. مثلاً تو کد زیر تمام المان های p با class=test3 ظاهر می شن نه بقیه المان های p:
<head>
<style>
p {
display:none;
}
a:hover ~ p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home</a>
<p class="test3">This is shown on hover</p>
<h1>Contens</h1>
<p class="test3">This is also shown on hover</p>
<div>content 1<p>Not Shown</p></div>
<div>content 2<p>Not Shown</p></div>
<p class="test3">This is also shown on hover</p>
<p class="test3">This is also shown on hover</p>
</body>
امیدوارم این اطلاعات مفید باشه.
موفق باشید.
omidkhosravifar
یک شنبه 17 آبان 1394, 16:38 عصر
خواهش می کنم.
hover روی تمام المان ها (نه فقط لینک ها) قابلیت اجرا داره.
در واقع، در CSS اگه بخواین با hover روی یک المان، المان دیگه ای تغییر کنه، المان دوم باید یا درون المان اول باشه (یعنی رابطه child و parent داشته باشن) و یا اینکه المان دوم باید sibling المان اول باشه (یعنی هر دو المان درون یه المان رده بالاتر قرار داشته باشن).
سعی می کنم با کدهای خودتون، چند مثال از این موارد رو برای شما توضیح بدم:
مورد (1): p درون a قرار داره (یعنی p در واقع child یا descendant تگ a هست):
<head>
<style>
p {
display:none;
}
a:hover p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home
<p class="test3">This is shown on hover</p>
</a>
</body>
در این مورد با همون کد CSS شما hover اتفاق می افته.
اما کد html شما از نوع مورد (2) هست که p بعد از a قرار گرفته و باهاش رابطه sibling داره (یعنی هر دو توی یک المان رده بالاتر قرار دارن)
مورد (2): p بلافاصله بعد از تگ a اومده و هر دو توی یک المان رده بالاتر (مثل تگ body در مثال زیر) قرار دارن:
<head>
<style>
p {
display:none;
}
a:hover + p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home</a>
<p class="test3">This is shown on hover</p>
</body>
در اینجا، برای اینکه hover اتفاق بیفته باید از + که بهش adjacent sibling selector میگن استفاده کنید؛ a + p یعنی المان p که بلافاصله بعد از المان a می آد در حالی که هر دوی اینا هم رده هستن.
مورد (3): p بعد از تگ a اومده و هر دو توی یک المان رده بالاتر (مثل تگ body در مثال زیر) قرار دارن، اما تگ های دیگه ای بین p و a فاصله انداخته:
<head>
<style>
p {
display:none;
}
a:hover ~ p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home</a>
<h1>Contens</h1>
<div>content 1</div>
<div>content 2</div>
<p class="test3">This is shown on hover</p>
</body>
در اینجا، برای اینکه hover اتفاق بیفته باید از ~ که بهش general sibling selector میگن استفاده کنید؛ a ~ p یعنی تمام المان های p که بعد از المان a می آد (یا بلافاصله یا با فاصله) در حالی که همه اینا هم رده هستن. در واقع ~ برای مورد (2) به جای + هم جواب می ده.
با به کار بردن ~ ، هر چند تا تگ p که بعد از تگ a وجود داره (به شرطی که هم رده باشن)، با hover روی a نمایان می شن. مثلاً تو کد زیر تمام المان های p با class=test3 ظاهر می شن نه بقیه المان های p:
<head>
<style>
p {
display:none;
}
a:hover ~ p {
display:block;
}
</style>
</head>
<body>
<a href="#">Home</a>
<p class="test3">This is shown on hover</p>
<h1>Contens</h1>
<p class="test3">This is also shown on hover</p>
<div>content 1<p>Not Shown</p></div>
<div>content 2<p>Not Shown</p></div>
<p class="test3">This is also shown on hover</p>
<p class="test3">This is also shown on hover</p>
</body>
امیدوارم این اطلاعات مفید باشه.
موفق باشید.
سلام / خیلی خیلی مفید بود. از شما متشکرم . می بخشید یک رفرانس خوب در مورد CSS می فرمایید ؟ رفرانسی که بشه این جور مطالب ریز رو از اونجا استخراج کرد
ممنون . کمک شاسان توجهی بود. بازم ممنون
frednasri
یک شنبه 17 آبان 1394, 18:24 عصر
سلام / خیلی خیلی مفید بود. از شما متشکرم . می بخشید یک رفرانس خوب در مورد CSS می فرمایید ؟ رفرانسی که بشه این جور مطالب ریز رو از اونجا استخراج کرد
ممنون . کمک شاسان توجهی بود. بازم ممنون
برای آموزش های زبان فارسی، می تونید تو گوگل "آموزش CSS" (https://www.google.com/search?q=%D8%A2%D9%85%D9%88%D8%B2%D8%B4+css&ie=utf-8&oe=utf-8) رو جستجو کنید.
اما سایت های انگلیسی زبان w3schools (http://www.w3schools.com/css/) و mozilla (https://developer.mozilla.org/en-US/docs/Web/CSS) می تونن در زمینه آموزش CSS به شما کمک کنن (در کنار دیگر آموزش هایی که تو این سایت ها هست). اولی یه سایت آموزشیه که زبانش ساده اس و این مزیت رو داره که هر کد رو شما می تونین همونجا به طور زنده امتحان کنید. دومی اطلاعاتش کامل تر و تخصصی تره.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.