অন্যান্য উত্তরে যেমন বলা হয়েছে, আইওএস সাফারি :activeসিউডো-ক্লাসটি ট্রিগার করে না যদি উপাদানটির সাথে কোনও স্পর্শ ইভেন্ট সংযুক্ত না করা হয় তবে এখনও পর্যন্ত এই আচরণটি "জাদুকরী" হয়েছে। আমি সাফারি বিকাশকারী লাইব্রেরিতে এই সামান্য ব্লার্ব পেরিয়ে এসেছি যা এটি ব্যাখ্যা করে (আমার উপর):
আপনি -webkit-tap-highlight-colorডেস্কটপের অনুরূপ আচরণের জন্য বোতামগুলি কনফিগার করতে কোনও টাচ ইভেন্ট সেট করার সাথে সিএসএস সম্পত্তি ব্যবহার করতে পারেন । আইওএস-এ, মাউস ইভেন্টগুলি এত তাড়াতাড়ি পাঠানো হয় যে ডাউন বা সক্রিয় রাষ্ট্রটি কখনই গ্রহণ না করে। সুতরাং, :activeসিউডো রাষ্ট্রটি তখনই ট্রিগার করা হয় যখন এইচটিএমএল উপাদানটিতে কোনও স্পর্শ ইভেন্ট সেট থাকে example উদাহরণস্বরূপ, যখন অ্যান্টচার্ট্টটি উপাদানটির উপর নীচে সেট করা থাকে:
<button class="action" ontouchstart=""
style="-webkit-tap-highlight-color: rgba(0,0,0,0);">
Testing Touch on iOS
</button>
এখন যখন বোতামটি ট্যাপ করে আইওএস এ রাখা হয়, তখন বোতামটি আশেপাশের স্বচ্ছ ধূসর বর্ণের উপস্থিতি ছাড়াই নির্দিষ্ট রঙে পরিবর্তিত হয়।
অন্য কথায়, একটি ontouchstartইভেন্ট সেট করা (এটি খালি থাকলেও) স্পষ্টভাবে ব্রাউজারকে ইভেন্টগুলির স্পর্শে প্রতিক্রিয়া জানাতে বলছে।
আমার মতে, এটি ত্রুটিযুক্ত আচরণ, এবং সম্ভবত সেই সময়ের থেকে ফিরে আসে যখন "মোবাইল" ওয়েবটি মূলত অস্তিত্বহীন ছিল (আমার অর্থ কী তা বোঝার জন্য লিঙ্কযুক্ত পৃষ্ঠায় এই স্ক্রিনশটগুলি দেখুন) এবং সমস্ত কিছুই মাউসমুখী ছিল। এটি লক্ষণীয় যে আকর্ষণীয় যে অ্যান্ড্রয়েডের মতো আরও নতুন মোবাইল ব্রাউজারগুলি আইওএসের জন্য প্রয়োজনীয় হ্যাকগুলি ছাড়াই স্পর্শে সিউডো-স্টেটের স্পর্শে 'সক্রিয়' প্রদর্শন করে।
(পার্শ্ব-নোট: আপনি যদি আইওএসে নিজস্ব কাস্টম শৈলী ব্যবহার করতে চান তবে উপরের একই লিঙ্কযুক্ত পৃষ্ঠায় বর্ণিত হিসাবে সিএসএস সম্পত্তি :activeব্যবহার করে আইওএস সিউডো-স্টেটের জায়গায় আইওএস যে ডিফল্ট ধূসর ট্রান্সলুসেন্ট বক্স ব্যবহার করে সেটিও অক্ষম করতে পারেন you -webkit-tap-highlight-color।)
কিছু পরীক্ষা-নিরীক্ষার পরে, সমস্ত স্পর্শ ইভেন্টগুলি পুরোপুরি কাজ করে না এমন বুকে বুদবুদ করার ontouchstartজন্য <body>উপাদানটিতে একটি ইভেন্ট স্থাপনের প্রত্যাশিত সমাধান । পৃষ্ঠাটি লোড হওয়ার পরে যদি উপাদানটি ভিউপোর্টে দৃশ্যমান হয়, তবে এটি ঠিক কাজ করে, তবে ভিউপোর্টের বাইরে থাকা কোনও উপাদানটিকে স্ক্রোল করে ট্যাপ করা তার সিউডো-স্টেটের মতো ট্রিগার করে না । সুতরাং, পরিবর্তে:active
<!DOCTYPE html>
<html><body ontouchstart></body></html>
ইভেন্টটি শরীরের উপর বুদবুদ হয়ে উঠার পরিবর্তে সমস্ত উপাদানগুলির সাথে সংযুক্ত করুন (jQuery ব্যবহার করে):
$('body *').on('touchstart', function (){});
তবে এর পারফরম্যান্সের প্রভাব সম্পর্কে আমি সচেতন নই, তাই সাবধান হন।
সম্পাদনা: এই সমাধানটির সাথে একটি গুরুতর ত্রুটি রয়েছে: পৃষ্ঠাটি স্ক্রোল করার সময় এমনকি কোনও উপাদানকে স্পর্শ করা :activeছদ্ম অবস্থাটি সক্রিয় করবে । সংবেদনশীলতা খুব শক্তিশালী। অ্যান্ড্রয়েড রাজ্যটি দেখানোর আগে খুব অল্প বিলম্ব প্রবর্তন করে এটি সমাধান করে, যা পৃষ্ঠাটি স্ক্রল করা থাকলে বাতিল করা হয়। এর আলোকে, আমি এটি কেবলমাত্র নির্বাচিত উপাদানগুলিতে ব্যবহার করার পরামর্শ দিচ্ছি। আমার ক্ষেত্রে, আমি ক্ষেত্রটিতে ব্যবহারের জন্য একটি ওয়েব-অ্যাপ বিকাশ করছি যা মূলত পৃষ্ঠাগুলি নেভিগেট করতে এবং ক্রিয়া জমা দেওয়ার জন্য বোতামগুলির একটি তালিকা। পুরো পৃষ্ঠাটি বেশ কয়েকটি ক্ষেত্রে বোতামগুলির বেশিরভাগ ক্ষেত্রে, এটি আমার পক্ষে কার্যকর হবে না। আপনি তবে এর :hoverপরিবর্তে সিউডো-স্টেটটি পূরণ করতে পারেন। ডিফল্ট ধূসর বাক্সটি অক্ষম করার পরে, এটি পুরোপুরি কার্যকর করে।
ontouchstartছাড়া কেবল যোগ করার পক্ষে কি যথেষ্ট নয়=""? (এইচটিএমএল 5)