আমি আপনার সাথে কিছু ভাগ করতে চাইছিলাম। ঘটনা এবং ইভেন্টগুলির
সাথে আমি কিছুটা কঠিন সময় পেলাম । ng-mouseenterng-mouseleave
কেস স্টাডি:
আমি একটি ভাসমান নেভিগেশন মেনু তৈরি করেছি যা কার্সারটি যখন কোনও আইকন দিয়ে যায় তখন টগল হয়।
এই মেনুটি প্রতিটি পৃষ্ঠার উপরে ছিল।
- মেনুতে শো / লুকানোর জন্য, আমি একটি ক্লাস টগল করছি।
ng-class="{down: vm.isHover}"
- Vm.isHover টগল করতে , আমি এনজি মাউস ইভেন্টগুলি ব্যবহার করি।
ng-mouseenter="vm.isHover = true"
ng-mouseleave="vm.isHover = false"
আপাতত, সবকিছু ঠিকঠাক ছিল এবং প্রত্যাশার মতো কাজ করেছিল।
সমাধানটি পরিষ্কার এবং সহজ।
আগত সমস্যা:
একটি নির্দিষ্ট দৃষ্টিতে আমার কাছে উপাদানগুলির একটি তালিকা রয়েছে।
কার্সারটি তালিকার কোনও উপাদানকে ছাড়িয়ে যাওয়ার পরে আমি একটি অ্যাকশন প্যানেল যুক্ত করেছি।
আমি আচরণটি পরিচালনা করতে উপরের মত একই কোড ব্যবহার করেছি।
সমস্যাটি:
যখন আমার কার্সারটি ভাসমান নেভিগেশন মেনুতে এবং কোনও উপাদানের শীর্ষে উপস্থিত হয় তখন আমি একে অপরের মধ্যে দ্বন্দ্ব বোধ করি।
অ্যাকশন প্যানেলটি প্রদর্শিত হয়েছিল এবং ভাসমান নেভিগেশনটি লুকিয়ে ছিল।
জিনিসটি হ'ল কার্সারটি ভাসমান নেভিগেশন মেনুটির উপরে থাকলেও এনজি-মাউসেন্টার তালিকা উপাদানটি ট্রিগার করে।
এটি আমার কাছে কোনও ধারণা রাখে না, কারণ আমি মাউস প্রচারের ঘটনাগুলির একটি স্বয়ংক্রিয় বিরতি আশা করব।
আমার অবশ্যই বলতে হবে যে আমি হতাশ হয়েছি এবং আমি এই সমস্যাটি খুঁজে পেতে কিছুটা সময় ব্যয় করেছি।
প্রথম চিন্তা:
আমি এগুলি ব্যবহার করার চেষ্টা করেছি:
$event.stopPropagation()
$event.stopImmediatePropagation()
আমি প্রচুর এনজি পয়েন্টার ইভেন্টগুলি (মাউসমোভ, মাউওভার, ...) একত্রিত করেছিলাম তবে কেউই আমাকে সহায়তা করেনি।
সিএসএস সমাধান:
আমি একটি সহজ সিএসএস সম্পত্তি সহ সমাধানটি পেয়েছি যা আমি আরও এবং বেশি ব্যবহার করি:
pointer-events: none;
মূলত, আমি এটির মতো ব্যবহার করি (আমার তালিকার উপাদানগুলিতে):
ng-style="{'pointer-events': vm.isHover ? 'none' : ''}"
এই মুশকিলটির সাথে, এনজি-মাউস ইভেন্টগুলি আর ট্রিগার করা হবে না এবং কার্সারটি শেষ হয়ে গেলে এবং তালিকার কোনও উপাদান ছাড়াই আমার ভাসমান নেভিগেশন মেনু নিজেকে আর বন্ধ করবে না।
আরো যেতে:
আপনি যেমনটি আশা করতে পারেন, এই সমাধানটি কাজ করে তবে আমি এটি পছন্দ করি না।
আমরা আমাদের ইভেন্টগুলি নিয়ন্ত্রণ করি না এবং এটি খারাপ।
এছাড়াও, vm.isHoverএটি অর্জনের জন্য আপনার অবশ্যই সুযোগের অ্যাক্সেস থাকতে হবে এবং এটি সম্ভব বা সম্ভব না হলেও কোনওভাবে বা অন্য কোনওভাবে নোংরা হতে পারে।
কেউ দেখতে চাইলে আমি একটি ঝাঁকুনি তৈরি করতে পারি।
তবুও, আমার আর সমাধান নেই ...
এটি দীর্ঘ গল্প এবং আমি আপনাকে আলু দিতে পারি না তাই দয়া করে আমার বন্ধুকে ক্ষমা করুন।
যাইহোক, pointer-events: noneজীবন, তাই এটি মনে রাখবেন।