SnappySnippet
অবশেষে আমি এই সরঞ্জামটি তৈরি করতে কিছু সময় পেয়েছি। আপনি গিথুব থেকে স্ন্যাপ্পি স্নিপেট ইনস্টল করতে পারেন । এটি নির্দিষ্ট (শেষ পরিদর্শন করা) ডোম নোড থেকে সহজ এইচটিএমএল + সিএসএস এক্সট্রাকশনকে অনুমতি দেয়। অতিরিক্তভাবে, আপনি আপনার কোডটি সরাসরি কোডপেন বা জেএসফিডেলে প্রেরণ করতে পারেন। উপভোগ করুন!
অন্যান্য বৈশিষ্ট্য
- এইচটিএমএল পরিষ্কার করে (অপ্রয়োজনীয় বৈশিষ্ট্য অপসারণ, প্রবর্তন স্থির করে)
- সিএসএসকে এটি পঠনযোগ্য করার জন্য অনুকূল করে
- সম্পূর্ণরূপে কনফিগারযোগ্য (সমস্ত ফিল্টার বন্ধ করা যেতে পারে)
- সাথে কাজে
::before
এবং ::after
সিউডো-উপাদানের
- বুটস্ট্র্যাপ এবং ফ্ল্যাট-ইউআই প্রকল্পগুলির জন্য দুর্দান্ত ইউআই ধন্যবাদ
কোড
স্নেপ্পসনিপেট ওপেন সোর্স এবং আপনি গিটহাবের কোডটি খুঁজে পেতে পারেন ।
বাস্তবায়ন
যেহেতু এটি তৈরি করার সময় আমি অনেক কিছু শিখেছি, তাই আমি অভিজ্ঞ হয়েছি এমন কিছু সমস্যা এবং সেগুলির জন্য আমার সমাধানগুলি ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি, সম্ভবত কেউ এটি আকর্ষণীয় বলে মনে করবে।
প্রথম প্রচেষ্টা - getMatchedCSSRules ()
প্রথমে আমি মূল সিএসএস বিধি পুনরুদ্ধার করার চেষ্টা করেছি (ওয়েবসাইটে সিএসএস ফাইল থেকে আসা)। বেশ আশ্চর্যজনকভাবে, এটি খুব সাধারণ ধন্যবাদ window.getMatchedCSSRules()
, তবে এটি ভাল কার্যকর হয়নি। সমস্যাটি হ'ল আমরা এইচটিএমএল এবং সিএসএস নির্বাচকদের কেবল একটি অংশ নিয়ে যাচ্ছিলাম যা পুরো ডকুমেন্টের প্রসঙ্গে মিলছে, যা এইচটিএমএল স্নিপেটের প্রসঙ্গে আর মেলে না। যেহেতু নির্বাচকদের পার্সিং এবং সংশোধন করা ভাল ধারণা বলে মনে হচ্ছে না, তাই আমি এই প্রচেষ্টাটি ছেড়ে দিয়েছি।
দ্বিতীয় প্রচেষ্টা - getComputesStyle ()
তারপর, আমি কিছু থেকে শুরু করেছি যে @CollectiveCognition প্রস্তাব - getComputedStyle()
। যাইহোক, আমি সত্যিই সমস্ত স্টাইলের ইনলাইনিংয়ের পরিবর্তে সিএসএস ফর্ম এইচটিএমএল আলাদা করতে চেয়েছিলাম।
সমস্যা 1 - সিএসএসকে এইচটিএমএল থেকে পৃথক করা
এখানে সমাধানটি খুব সুন্দর ছিল না তবে বেশ সোজা ছিল। আমি নির্বাচিত সাবট্রির সমস্ত নোডকে আইডি নিয়োগ করেছি এবং উপযুক্ত সিএসএস বিধি তৈরি করতে সেই আইডি ব্যবহার করেছি।
সমস্যা 2 - ডিফল্ট মান সহ বৈশিষ্ট্য অপসারণ
নোডগুলিতে আইডি বরাদ্দ করা খুব সুন্দরভাবে কাজ করেছে, তবে আমি জানতে পেরেছি যে আমার প্রতিটি সিএসএস বিধিতে CSS 300 এর সম্পূর্ণ বৈশিষ্ট্য পুরো সিএসএসকে অপঠনযোগ্য করে তোলে।
দেখা যাচ্ছে যে getComputedStyle()
প্রদত্ত উপাদানটির জন্য গণনা করা সমস্ত সম্ভাব্য সিএসএস বৈশিষ্ট্য এবং মানগুলি প্রদান করে। তাদের কিছু খালি যেখানে কারওর ব্রাউজারের ডিফল্ট মান রয়েছে। ডিফল্ট মানগুলি সরাতে আমাকে ব্রাউজার থেকে প্রথমে এগুলি পেতে হয়েছিল (এবং প্রতিটি ট্যাগের আলাদা আলাদা ডিফল্ট মান থাকে)। সমাধানটি হ'ল ওয়েবসাইট থেকে আগত উপাদানগুলির শৈলীর সাথে একই উপাদানের সাথে খালি intoোকানো তুলনা করা হবে <iframe>
। যুক্তিটি এখানে ছিল যে কোনও খালি শৈলীর শীট নেই <iframe>
, সুতরাং আমি যুক্ত প্রতিটি উপাদানটিতে কেবলমাত্র ডিফল্ট ব্রাউজার শৈলী ছিল। এইভাবে আমি বেশিরভাগ সম্পত্তি যে তুচ্ছ ছিল তা থেকে মুক্তি দিতে সক্ষম হয়েছি।
সমস্যা 3 - কেবল শর্টহ্যান্ডের বৈশিষ্ট্যগুলি রাখা
পরবর্তী জিনিস আমি স্পষ্ট করেছিলাম যে শর্টহ্যান্ড সমতুল্য সম্পত্তিগুলি অযথা মুদ্রিত হয়েছিল (যেমন সেখানে ছিল border: solid black 1px
এবং তখন border-color: black;
, এটি border-width: 1px
) it
এটির সমাধানের জন্য আমি সংখ্যার সমান সংখ্যক বৈশিষ্ট্যগুলির একটি তালিকা তৈরি করেছি এবং ফলাফলগুলি থেকে সেগুলি ছাঁটাই করেছি।
সমস্যা 4 - উপসর্গযুক্ত বৈশিষ্ট্যগুলি সরানো
প্রতিটি নিয়ম সম্পত্তি সংখ্যা উল্লেখযোগ্যভাবে পূর্ববর্তী অপারেশনের পর কম হয়, কিন্তু আমি দেখেছি যে, আমি অনেক ছিল গোবরাট -webkit-
পূর্বে সমাধান বৈশিষ্ট্য যে আমি কখনো শুনতে করেছি ( -webkit-app-region
? -webkit-text-emphasis-position
?)।
আমি এই বৈশিষ্ট্য কোনো রাখা উচিত, কারণ এগুলির কয়েকটি দরকারী করলো (হতাশ ছিল -webkit-transform-origin
, -webkit-perspective-origin
ইত্যাদি)। এটি কীভাবে যাচাই করা যায় তা আমি খুঁজে পাইনি, এবং যেহেতু আমি জানতাম যে এই সম্পত্তিগুলি বেশিরভাগ সময় কেবল আবর্জনা থাকে, তাই আমি সেগুলি মুছে ফেলার সিদ্ধান্ত নিয়েছিলাম।
সমস্যা 5 - একই সিএসএস বিধি সমন্বিত
পরবর্তী সমস্যাটি আমি স্পষ্ট করেছিলাম হ'ল একই সিএসএস বিধিগুলি বারবার পুনরাবৃত্তি হয় (যেমন প্রতিটি <li>
সিএসএস আউটপুটে একই শৈলীর সাথে একই নিয়ম তৈরি হয়েছিল)।
এটি কেবল একে অপরের সাথে নিয়মের তুলনা করার এবং এগুলির সাথে সংযুক্ত করার মতো বিষয় যা ঠিক একই বৈশিষ্ট্য এবং মানগুলির সেট করেছিল। ফলস্বরূপ, পরিবর্তে #LI_1{...}, #LI_2{...}
আমি পেয়েছিলাম #LI_1, #LI_2 {...}
।
সমস্যা 6 - পরিষ্কার করা এবং এইচটিএমএল ইনডেন্টেশন ফিক্সিং
যেহেতু আমি ফলাফলটি নিয়ে খুশি ছিলাম, তাই আমি এইচটিএমএল এ চলেছি। এটি একটি জগাখিচুড়ি মনে হয়েছিল, বেশিরভাগ কারণ outerHTML
সম্পত্তিটি সার্ভার থেকে ফিরে আসার মতোই এটি ফর্ম্যাট করে।
এইচটিএমএল কোডটি outerHTML
প্রয়োজনীয় জিনিসগুলি থেকে নেওয়া কেবলমাত্র একটি সাধারণ কোডের পুনরায় ফর্ম্যাটিং। যেহেতু এটি প্রতিটি আইডিইতে কিছু উপলভ্য, তাই আমি নিশ্চিত ছিলাম যে কোনও জাভাস্ক্রিপ্ট লাইব্রেরি রয়েছে যা হুবহু এটি করে। এবং দেখা যাচ্ছে যে আমি ঠিক ছিলাম (জ্যাকিউরি-ক্লিন) । আরো কি, আমি অপ্রয়োজনীয় বৈশিষ্ট্যাবলী অপসারণ অতিরিক্ত (পেয়েছেন style
, data-ng-repeat
ইত্যাদি)।
সমস্যা 7 - ফিল্টারগুলি সিএসএস ভেঙে
যেহেতু এমন একটি সম্ভাবনা রয়েছে যে কিছু পরিস্থিতিতে উপরে উল্লিখিত ফিল্টারগুলি স্নিপেটে সিএসএসকে ভেঙে ফেলতে পারে, তাই আমি তাদের সকলকে optionচ্ছিক করে তুলেছি। আপনি সেটিংস মেনু থেকে তাদের অক্ষম করতে পারেন ।