সিএসএসে `পয়েন্টার-ইভেন্টগুলি: হোভারঅনলি` বা অনুরূপ কি আছে?


104

সিএসএসে pointer-eventsসবেমাত্র সম্পত্তি নিয়ে খেলছি ।

আমার কাছে এমন একটি রয়েছে divযা আমি বাদে সমস্ত মাউস ইভেন্টে অদৃশ্য হতে চাই :hover

সুতরাং সমস্ত ক্লিকের আদেশগুলি divনীচের দিকের একটির মধ্যে দিয়ে যায় , তবে ডিভটি মাউসটির উপরে রয়েছে কিনা তা এখনও রিপোর্ট করতে পারে বা এখনও নেই।

কেউ কি আমাকে বলতে পারবেন এটি করা যায় কিনা?

এইচটিএমএল:

<div class="layer" style="z-index:20; pointer-events:none;">Top layer</div>
<div class="layer" style="z-index:10;">Bottom layer</div>

সিএসএস:

.layer {
    position:absolute;
    top:0px;
    left:0px;
    height:400px;
    width:400px;
}

4
শুধু একটি নোট, IE তে সমর্থিতpointer-events নয় ।
ভাকো

4
মনে হচ্ছে আপনার জাভাস্ক্রিপ্টের দরকার
পিট

পিটের সাথে সম্মত হন, আমি জানি যে এটি বিশেষত সিএসএসের জন্য জিজ্ঞাসা করছে, তবে একই সমস্যা ছিল এবং আমার পক্ষে সহজ সমাধানটি ছিল জাভাস্ক্রিপ্ট স্ট্যাকওভারফ্লো.com
জেরি শা

উত্তর:


12

আমি মনে করি না যে কেবলমাত্র সিএসএসে আপনার লক্ষ্য অর্জন সম্ভব। যাইহোক, অন্যান্য অবদানকারীরা যেমন উল্লেখ করেছেন, JQuery এ করা যথেষ্ট সহজ। আমি এটি কীভাবে করেছি তা এখানে:

এইচটিএমএল

<div
  id="toplayer"
  class="layer"
  style="
    z-index: 20;
    pointer-events: none;
    background-color: white;
    display: none;
  "
>
  Top layer
</div>
<div id="bottomlayer" class="layer" style="z-index: 10">Bottom layer</div>

সিএসএস (অপরিবর্তিত)

.layer {
    position:absolute;
    top:0px;
    left:0px;
    height:400px;
    width:400px;
}

জিকুয়েরি

$(document).ready(function(){
    $("#bottomlayer").hover(
        function() {
            $("#toplayer").css("display", "block");
        },
        function() {
            $("#toplayer").css("display", "none");
        }
    );
});

এখানে জেএসফিডাল: http://www.jsfiddle.net/ReZ9M


107

শুধু ঘোরা। এটা খুব সহজ. জেএস নেই ... লিঙ্কের ডিফল্ট ক্রিয়াটিও আটকাবেন।

a:hover {
	color: red;
}
a:active {
	pointer-events: none;
}
<a href="www.google.com">Link here</a>

সম্পাদনা করুন: আইই 11 এবং তারপরে http://caniuse.com/#search=pointer-events এ সমর্থিত


23
এটি 'কাজ করে' - তবে এটি নীচের উপাদানগুলিতে ক্লিক করার অনুমতি দেয় না (কমপক্ষে সেই উপাদানটি ইউটিউব ভিডিও হওয়ার সময় নয়) - এটি সম্ভবত একমাত্র কারণ যার কারণে সবার আগে এই আচরণের প্রয়োজন হবে
সাইমন_উইভার

4
এর জন্য আরও পয়েন্টার-ইভেন্টগুলি অক্ষম করার জন্য উপাদানটিতে ক্লিক করার দরকার নেই?
মাইন্ডউইন

4
এটি
beutifull

4
@ প্রিয়াংশুজাইন ব্যবহারকারীদের বোতামে ক্লিক করলে কি হবে বলে আপনি মনে করেন?
5 Роб

4
চতুর 💐 (এটাই বলতে চাই)
ডেভিস

24

"চুরি করা" জাঙ্কোর উত্তর কিন্তু সেই কুৎসিত, কুরুচিপূর্ণ jQuery ছাড়াই।

স্নিপেট : বিজ্ঞপ্তি ডিআইভিগুলি বিপরীত ক্রমে রয়েছে

.layer {
  position: absolute;
  top: 0px;
  left: 0px;
  height: 400px;
  width: 400px;
}

#bottomlayer {
  z-index: 10
}

#toplayer {
  z-index: 20;
  pointer-events: none;
  background-color: white;
  display: none
}

#bottomlayer:hover~#toplayer {
  display: block
}
<div id="bottomlayer" class="layer">Bottom layer</div>
<div id="toplayer" class="layer">Top layer</div>


4
দুঃখিত, আমি যাইহোক কুৎসিত jquery ব্যবহার করছি। তবে কেবলমাত্র সিএসএসের সমাধানের জন্য একটি উত্সাহ রয়েছে!
জিম্মি

এটি দুর্দান্ত - কেবল এফওয়াইআই দুর্ভাগ্যক্রমে নীচে স্তরটিতে যদি একটি আইফ্রেমে থাকে তবে এটি সঠিকভাবে কাজ করে না: jsfiddle.net/ReZ9M/82
সাইমন_উইভার

4
এটি কীভাবে সমস্যার সমাধান করে? ওপি প্রাথমিকভাবে দৃশ্যমান উপাদানটির মধ্য দিয়ে যেতে ক্লিক কমান্ডের জন্য বলেছিল। আপনার সমাধানে তারা তা করে না, লক্ষ্য করুন কীভাবে "শীর্ষ স্তর" পাঠ্যটি হাইলাইট করা যায় না ...
ট্র্যাভার থম্পসন

6

আপনি বিভিন্ন উপাদানের উপর হোভার সনাক্ত করতে পারেন এবং তার সন্তানের সাথে স্টাইল প্রয়োগ করতে পারেন, বা অন্যান্য সিএসএস নির্বাচক যেমন সংলগ্ন শিশু ইত্যাদি ব্যবহার করে

যদিও এটি আপনার ক্ষেত্রে নির্ভর করে।

প্যারেন্ট এলিমেন্ট হোভারে। আমি এটা করেছি:

.child {
    pointer-events: none;
    background-color: white;
}

.parent:hover > .child {
    background-color: black;
}

1

আমি ব্যবহার :hoverএকটি সমান আকারের পিতা বা মাতা / পাত্রের সিউডো-উপাদান আমার আস্তরণ DIV উপর হোভার ভান, তারপর আস্তরণ এর সেট pointer-eventsথেকে noneনীচের উপাদান ক্লিকের মাধ্যমে পাস।


0

আপনার অনুরোধের খাঁটি সিএসএস সমাধান (অস্বচ্ছতার সম্পত্তিটি কেবলমাত্র স্থানান্তরের প্রয়োজনীয়তার জন্য চিত্রিত করার জন্য রয়েছে):

.hoverOnly:hover {
    pointer-events: none;
    opacity: 0.1;
    transition-delay: 0s;
}
.hoverOnly {
    transition: ,5s all;
    opacity: 0.75;
    transition-delay: 2s;
}

এর মানে কি:

মাউস বাক্সে প্রবেশ করার পরে, এটি :hoverরাষ্ট্রকে ট্রিগার করে । তবে সেই অবস্থায়, পয়েন্টার-ইভেন্টগুলি অক্ষম করা হয় are

তবে আপনি যদি ট্রানজিশন টাইমার সেট না করেন তবে মাউস সরে গেলে Div হোভারের অবস্থা বাতিল করে দেবে; মাউস এলিমেন্টের ভিতরে চলাকালীন হোভারের অবস্থা ঝাঁকুনিযুক্ত হবে। অস্বচ্ছ বৈশিষ্ট্যগুলির সাথে উপরের কোডটি ব্যবহার করে আপনি এটি বুঝতে পারবেন।

হোভারের স্থিতি থেকে উত্তরণের জন্য বিলম্ব নির্ধারণ করা এটি ঠিক করে। 2sমান আপনার প্রয়োজন অনুসারে tweaked করা যেতে পারে।

ট্রানজিশনগুলিতে ক্রেডিটগুলি টুইট : এই উত্তরটির উপর প্যাটড


যখন আমি এই সমাধানটি চেষ্টা করেছি তখন উপাদানটি "হোভার" অবস্থায় আটকে যায়।
ফ্লাইম

0

শুধু খাঁটি সিএসএস , জ্যাকুরির দরকার নেই :

div:hover {pointer-events: none}
div {pointer-events: auto}

হাই - এর জন্য অনেক ধন্যবাদ - আপনি কি নিজের উত্তরে একটি ডেমো যুক্ত করতে পারেন (কোড স্নিপেটের মতো বা কোডেপেন বা জসফিডেলে এর কোনও লিঙ্ক?) - এবং জানেন কী এর সাথে সামঞ্জস্যতা রয়েছে? এটি একটি নতুন CSS3 বৈশিষ্ট্য? যদি এটি কাজ করে তবে আমি অবশ্যই আপনাকে একটি টিক দেব :)
জিমেরি

দুঃখিত আমি একটি ডেমো তৈরি করতে পারি না। তবে আমার যুক্তিতে, এটি অবশ্যই সমস্ত ব্রাউজারে কাজ করছে (আমি ie সম্পর্কে জানি না, কারণ আমার কাছে নেই)। এবং, এটি CSS1 থেকে সমর্থন করে :)
বারিক ধর্মওয়ান

caniuse.com/#feat=pointer-events - 11 ব্যতীত অন্য কোনও আইইতে কাজ করবে না ... আপনি এখানে কোডেপেন.ইও যা বোঝাতে চান তার একটি ওয়ার্কিং ডেমো তৈরি করে নিলে আমি এটি আপনার জন্য পরীক্ষা করব এবং যদি এটি কাজ করে তবে আমি করব আপনাকে সঠিক উত্তরের সাথে পুরষ্কার - দুঃখিত, আমি এটি তাত্ত্বিক
কোডটিতে

@ ব্রিলআউট আপনি একটি স্নিপেট যোগ করতে পারেন? বিসিজেড এটি আমার পক্ষে কাজ
বারিক ধর্মওয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.