পিতা-মাতাকে আটকানো অবস্থায় সন্তানের উপাদানগুলির সিএসএস পরিবর্তন করা


159

প্রথমত, আমি ধরে নিচ্ছি যে এটি CSS3 এর জন্য খুব জটিল, তবে যদি কোথাও কোনও সমাধান থাকে তবে আমি তার পরিবর্তে সেটিকে পছন্দ করব।

এইচটিএমএল বেশ সোজা।

<div class="parent">
    <div class="child">
        Text Block 1
    </div>
</div>

<div class="parent">
    <div class="child">
        Text Block 2
    </div>
</div>

শিশু ডিভ প্রদর্শন করতে সেট করা হয়েছে: কিছুই নয়; ডিফল্ট হিসাবে, কিন্তু তারপরে পরিবর্তিত হয়: ব্লক; যখন মাউসটি পিতামহ বিভাজনের উপরে আবৃত থাকে। সমস্যাটি হ'ল এই মার্কআপটি আমার সাইটে বেশ কয়েকটি স্থানে উপস্থিত হয়েছে এবং আমি কেবলমাত্র মাউসটি তার পিতামাতার উপরে থাকলেই বাচ্চাকে প্রদর্শিত হবে এবং মাউস অন্য পিতামাতার কোনওটির উপরে থাকলে নয় (তাদের সবার একই শ্রেণি রয়েছে নাম এবং কোনও আইডি নেই)।

আমি চেষ্টা করে দেখেছি $(this)এবং .children()কোন লাভ হয়নি।

$('.parent').hover(function(){
            $(this).children('.child').css("display","block");
        }, function() {
            $(this).children('.child').css("display","none");
        });

উত্তর:


260

শুধু সিএসএস ব্যবহার করবেন না কেন?

.parent:hover .child, .parent.hover .child { display: block; }

এবং তারপরে আই 6 এর জন্য জেএস যুক্ত করুন (উদাহরণস্বরূপ শর্তাধীন মন্তব্যের অভ্যন্তরে) যা সমর্থন করে না: সঠিকভাবে হোভার করুন:

jQuery('.parent').hover(function () {
    jQuery(this).addClass('hover');
}, function () {
    jQuery(this).removeClass('hover');
});

এখানে একটি দ্রুত উদাহরণ: ফিডল


কোডটি আমার পক্ষে কাজ করছে না। "। পিতামহুল" ও "না" বলে অভিহিত করার কথা? কেস আমি আপনার আগে কি কখনও দেখিনি। এবং কমাটি একই স্টাইলগুলি গ্রহণ করে একাধিক নির্বাচককে নির্দেশ করে না? আমি কিভাবে এখানে সাহায্য করে তা দেখছি না। এই সিএসএসে আরও কিছু তথ্য দিন, তবে দয়া করে 0 =]
হার্টলি ব্রোডি 21'11

6
:hoverCSS2 দ্বারা সংজ্ঞায়িত "ডায়নামিক সিউডো-ক্লাসগুলির মধ্যে একটি" এটি এখানে অনুমান করা যায় )। এখানে একটি দ্রুত উদাহরণ: http://jsfiddle.net/5FLr4/ । এটা আমার জন্য কাজ করে.
লি

আহ অনেক ধন্যবাদ! আমার আসলে কিছু আপেক্ষিক অবস্থান ছিল যা শিশু পাঠ্যটিকে দৃষ্টিতে ঠেলে দিচ্ছিল ... দোহ! >। <আমি সাহায্যের প্রশংসা করি!
হার্টলে ব্রডি

স্পষ্টতই এটি .child :: - ওয়েবকিট-স্ক্রোলবার-থাম্বের পক্ষে কাজ করবে না যদি আপনি সন্তানের উপাদানগুলির মধ্যে স্ক্রোলবারের হাইলাইটটি পরিবর্তন করতে চান।
thdoan

1
.parent:not(:hover) .child { display: none; }আমার পক্ষে ভাল কাজ করছে বলে মনে হচ্ছে, যদিও আমি অবশ্যই আই 6 সম্পর্কে উদ্বিগ্ন নই। তবে এই উপায়টি আমি এমন উপাদানগুলিতে ব্যবহার করতে পারি যা আমি অভিন্ন displayসম্পত্তি পেতে চাই না ।
ব্লেয়ার কনলি


9

ব্যবহার toggleClass()

$('.parent').hover(function(){
$(this).find('.child').toggleClass('color')
});

colorক্লাস কোথায় আপনি যে আচরণটি চান তা অর্জন করতে পছন্দ করে ক্লাসকে স্টাইল করতে পারেন। উদাহরণটি প্রদর্শন করে যে কীভাবে শ্রেণিবদ্ধ করা হয় এবং মাউসটি ভিতরে এবং বাইরে বের করা হয়।

এখানে কাজের উদাহরণ পরীক্ষা করুন



3

স্টিফেনের উত্তরটি সঠিক তবে এখানে তার উত্তরটির আমার অভিযোজনটি এখানে:

এইচটিএমএল

<div class="parent">
    <p> parent 1 </p>
    <div class="child">
        Text Block 1
    </div>
</div>

<div class="parent">
    <p> parent 2 </p>
    <div class="child">
        Text Block 2
    </div>
</div>

সিএসএস

.parent { width: 100px; min-height: 100px; color: red; }
.child { width: 50px; min-height: 20px; color: blue; display: none; }
.parent:hover .child, .parent.hover .child { display: block; }

jQuery এর

//this is only necessary for IE and should be in a conditional comment

jQuery('.parent').hover(function () {
    jQuery(this).addClass('hover');
}, function () {
    jQuery(this).removeClass('hover');
});

আপনি এই উদাহরণটি jsFiddle এ কাজ করে দেখতে পারেন ।


3

আমার কাছে যা আমি মনে করি এটি একটি আরও ভাল সমাধান, যেহেতু এটি কেবল মাত্র দুই বা তিনটি নয়, আরও বেশি মাত্রায় স্কেলযোগ্য।

আমি সীমানা ব্যবহার করি, তবে এটি পটভূমির মতো রঙের শৈলীর সাথেও করা যায়।

সীমান্তের সাথে, ধারণাটি হ'ল:

  • একটি আলাদা সীমানার রঙের একটি মাত্র ডিভ থাকুন, যেখানে মাউস থাকে সেখানে কোনও ডিভ, কোনও পিতা-মাতার উপর নয়, কোনও সন্তানের উপর নয়, তাই এটি কেবল এইরকম ডিভ সীমানাকে ভিন্ন বর্ণে দেখা যায় যখন বাকী সাদা থাকে।

আপনি এটি পরীক্ষা করতে পারেন: http://jsbin.com/ubiyo3/13

এবং এখানে কোড:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Hierarchie Borders MarkUp</title>
<style>

  .parent { display: block; position: relative; z-index: 0;
            height: auto; width: auto; padding: 25px;
          }

  .parent-bg { display: block; height: 100%; width: 100%; 
               position: absolute; top: 0px; left: 0px; 
               border: 1px solid white; z-index: 0; 
             }
  .parent-bg:hover { border: 1px solid red; }

  .child { display: block; position: relative; z-index: 1; 
           height: auto; width: auto; padding: 25px;
         }

  .child-bg { display: block; height: 100%; width: 100%; 
              position: absolute; top: 0px; left: 0px; 
              border: 1px solid white; z-index: 0; 
            }
  .child-bg:hover { border: 1px solid red; }

  .grandson { display: block; position: relative; z-index: 2; 
              height: auto; width: auto; padding: 25px;
            }

  .grandson-bg { display: block; height: 100%; width: 100%; 
                 position: absolute; top: 0px; left: 0px; 
                 border: 1px solid white; z-index: 0; 
               }
  .grandson-bg:hover { border: 1px solid red; }

</style>
</head>
<body>
  <div class="parent">
    Parent
    <div class="child">
      Child
      <div class="grandson">
        Grandson
        <div class="grandson-bg"></div>
      </div>
      <div class="child-bg"></div>
    </div>
    <div class="parent-bg"></div>
  </div>
</body>
</html>

এটি প্রশ্নটি যা বলেছিল তা করে না। এটি overedেকে দেওয়া উপাদানটির চারপাশে সীমানা পরিবর্তন করে। কোনও শিশু উপাদানটির চারপাশে সীমানা নয়।
jenniwren

2

আপনি যদি একটি ড্রপ ডাউন মেনুর জন্য টুইটার বুটস্ট্র্যাপ স্টাইলিং এবং বেস জেএস ব্যবহার করছেন:

.child{ display:none; }
.parent:hover .child{ display:block; }

এটি স্টিকি-ড্রপডাউনগুলি তৈরি করার জন্য অনুপস্থিত অংশ (যা বিরক্তিকর নয়)

  • আচরণটি হ'ল:
    1. ক্লিক করা অবস্থায় খোলা থাকুন, পৃষ্ঠার অন্য কোথাও আবার ক্লিক করার সময় বন্ধ করুন
    2. মেনুটির উপাদানগুলির বাইরে মাউস স্ক্রোল করলে স্বয়ংক্রিয়ভাবে বন্ধ করুন।

2

এটি করার বা না করার ভয়ঙ্কর কারণ রয়েছে কিনা তা নিশ্চিত নন তবে পৃষ্ঠায় বেশ কয়েকটি উপাদান সহ কোনও দৃশ্যমান পারফরম্যান্স সমস্যা ছাড়াই ক্রোম / ফায়ারফক্সের সর্বশেষ সংস্করণে এটি আমার সাথে কাজ করবে বলে মনে হচ্ছে।

*:not(:hover)>.parent-hover-show{
    display:none;
}

তবে এইভাবে, আপনাকে কেবলমাত্র parent-hover-showএকটি উপাদান প্রয়োগ করতে হবে এবং বাকীটি যত্ন নেওয়া উচিত এবং আপনি সর্বদা "ব্লক" না হয়ে এবং প্রতিটি ধরণের জন্য একাধিক ক্লাস না করে আপনি যে কোনও ডিফল্ট প্রদর্শন টাইপ রাখতে পারেন keep


0

সিএসএস থেকে এটিকে পরিবর্তন করতে আপনার এমনকি শিশু শ্রেণি সেট করা প্রয়োজন

.parent > div:nth-child(1) { display:none; }
.parent:hover > div:nth-child(1) { display: block; }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.