বক্স মডেল: ইন্টারনেট এক্সপ্লোরার বনাম ডাব্লু 3 সি


25

বর্তমানে, ইন্টারনেট এক্সপ্লোরার বক্স মডেল সমস্যা বেশিরভাগই একটি নন-ইস্যু। বেশিরভাগ ওয়েব বিকাশকারীগণ <!DOCTYPE>মান মেনে চলার জন্য একটি ট্যাগ রাখে এবং কেউই আর ইন্টারনেট এক্সপ্লোরার 5.5 সমর্থন করার বিষয়ে সত্যই চিন্তা করে না।

যাইহোক, কিছু বিকাশকারী আইই বাক্স মডেলটির প্রতিরক্ষায় বিষয়গত, ধারণামূলক যুক্তি দিয়ে এসেছেন। তারা দাবি করেছে যে আইই বক্স মডেলটি ডাব্লু 3 সি মডেলের চেয়ে বেশি "স্বজ্ঞাত", কারণ ডাব্লু 3 সি মডেলটি বাক্সের বিষয়বস্তু পরিমাপ করে , যেখানে আইই মডেল বাক্সটি নিজেই পরিমাপ করে:

এখানে চিত্র বর্ণনা লিখুন

আমি তাদের দৃষ্টিকোণ দেখতে পাচ্ছি, তবে এটি মূলত একটি বিষয়গত যুক্তি, এবং সর্বাধিক গুরুত্বপূর্ণ বিষয় হল মান সম্মতি।

তবে, সম্প্রতি আমি গুরুতর ব্যবহারিক কারণে আই বাক্স মডেলটি পছন্দ করতে এসেছি । ডাব্লু 3 সি বক্স মডেলটিকে অন্য উপাদানটির যথাযথ অনস্ক্রিন পিক্সেল প্রস্থের গতিগতভাবে আকার পরিবর্তন করতে সমস্যা করে। কারণটি হ'ল যে style.widthকোনও উপাদানটির সম্পত্তি উপাদানটির মোট স্ক্রিন আকারের জন্য অ্যাকাউন্ট করে না: আপনার কোনও অতিরিক্ত সীমানা এবং প্যাডিংও অ্যাকাউন্টে নেওয়া উচিত। উভয় উপাদান একই সিএসএস ক্লাস ব্যবহার করে তবে এটি কোনও সমস্যা নয় - তবে যদি তাদের আলাদা সিএসএস ক্লাস থাকে তবে এটি অবিশ্বাস্যভাবে চ্যালেঞ্জিং হয়ে উঠতে পারে।

ধরুন আমাদের দুটি ডিভ রয়েছে: এ এবং বি এ, এইচটিএমএলে একটি 400px ডিভ হিসাবে হার্ড-কোডড, অন্যদিকে জাভাস্ক্রিপ্ট ব্যবহার করে বি গতিশীলভাবে তৈরি করা হয়েছে। দৃশ্যত, আমরা বি এর পুরানো আই বক্স মডেলের অধীনে এ এর ​​সঠিক প্রস্থ হতে চাই। এটি তুচ্ছ। আমরা কেবল বলি: B.style.width = A.style.widthবা এমনকি B.style.width = A.offsetWidth + "px"

তবে ডাব্লু 3 সি বক্স মডেলের সাথে, এটি এত সহজ নয়। স্টাইল শীট সম্পর্কে এখন আমাদেরও চিন্তিত হতে হবে। যদি বি এর একই সিএসএস ক্লাস থাকে তবে আমরা কেবল বলতে পারি B.style.width = A.style.width। তবে যদি তা না হয় - এবং আমরা নান্দনিক কারণে এটি নাও চাই - আমরা সমস্যায় আছি। এখন আমাদের সীমান্তের মোট পিক্সেল এবং এ এবং বি উভয়ের প্যাডিংগুলি বিবেচনা করতে হবে এটি বিশেষত কঠিন হতে পারে যদি সীমান্ত এবং প্যাডিংগুলি বেমানান ইউনিটে নির্দিষ্ট করা হয় (যেহেতু সীমানা প্রায়শই 1px লাইন থাকে, তবে প্যাডিং হয়) ইএমএসে নির্দিষ্ট করা হতে পারে)। তারপরে আমরা একটি সাধারণ এককে (এম থেকে পিএক্স বা পিক্সে ইমে) রুপান্তর করার অর্ধ-অসম্ভব কাজের মুখোমুখি হয়েছি । এই সমস্ত কিছু ঠিক স্ক্রিনে লাইন আপ করতে দুটি ডিভ পেতে।

সুতরাং মূলত, ডাব্লু 3 সি বক্স মডেলটি যখন আমরা কোনও উপাদানটির আকার নির্ধারণ করি তখন সিএসএস বর্ডার এবং প্যাডিংয়ের বিষয়গুলি বিবেচনায় আনতে আমাদের বাধ্য করে, যখন আইই বাক্স মডেলটি দেয় না, যেহেতু প্রস্থটি বাক্সের পুরো আকারকে পরিমাপ করে (শেষ থেকে টু বাক্সের বিষয়বস্তু না করে-শেষ) । একে অপরের সাথে সম্পর্কগুলিতে গতিশীল আকারের উপাদানগুলিকে আকার দেওয়া অনেক সহজ করে তোলে।

এগুলি সমস্ত ডাব্লু 3 সি মডেলের চেয়ে আইই বক্স-মডেলটির পক্ষে যাওয়ার পক্ষে বেশ শক্তিশালী কারণ বলে মনে হচ্ছে (কমপক্ষে ধারণাগতভাবে - অবশ্যই অনুশীলনে আই বক্স-মডেল মারা গেছে)।

প্রশ্ন : ডাব্লু 3 সি কেন এই বক্স মডেলটি বেছে নিয়েছিল? ডাব্লু 3 সি বক্স মডেলের কিছু সুবিধা রয়েছে যা আমি কেবল দেখছি না? বা আমি কি এখানে সমস্যাটি খুব বাড়িয়ে বলছি?


3
যদিও আমি সাধারণত আই বিভিন্ন জিনিসগুলি অপছন্দ করি, তবুও এই যুক্তিটি বেশ আকর্ষণীয়।
FUZxxl

8
আপনি লেআউট বর্ণনা করার ক্ষেত্রে সিএসএস সাধারণভাবে ব্যর্থতাটি সত্যই হাইলাইট করছেন এবং হ্যাঁ IE এর চেয়ে আরও ভাল একটি বক্স মডেল ছিল।
রাইথাল

11
আপনি যদি না জানেন তবে আপনি এখন সিএসএস ফাইলে কোন বক্স মডেলটি ব্যবহার করবেন তা নির্দিষ্ট করতে পারেন। "বক্স-সাইজিং" বৈশিষ্ট্যটি ব্যবহার করুন এবং আপনি আইই বাক্স মডেলটি ব্যবহার করতে চাইলে এর মানটিকে "সীমান্ত-বাক্সে" সেট করুন।
ফিশব্যাসকেট গর্ডো ১৩

উত্তর:


9

প্রস্থে প্যাডিং এবং সীমানা অন্তর্ভুক্ত করা উচিত কিনা তা পছন্দনীয় ছিল। একমাত্র জিনিস যেখানে এটি গুরুত্বপূর্ণ ছিল তা হল বহু-কলাম লেআউটগুলি তৈরি করা। যাইহোক, আপনার এই অ্যাকাউন্টে লোকেরা যে কোনও সময় লেআউটের জন্য টেবিল ব্যবহার করেছিল তা অ্যাকাউন্টে জমা দিতে হবে। সুতরাং তাদের কাছে উদ্বেগের বিষয়টি যথেষ্ট গুরুত্বপূর্ণ বলে মনে হয়নি এবং তারা বিবেচনা করেছিল যে সিএসএসে যে বিষয়বস্তু নিজেই দখল করবে তা সঠিক প্রস্থ নির্দিষ্ট করতে সক্ষম হওয়া অনেক বেশি মূল্যবান বলে মনে হচ্ছে।

আজকের বিকাশকারীদের ক্ষেত্রে পরিস্থিতি সম্পূর্ণ আলাদা বলে মনে হচ্ছে তারা লেআউটগুলির জন্য সিএসএস ব্যবহার করে এবং তাদের সিএসএস বক্সিং মডেলটি মোকাবেলা করতে হবে। ধন্যবাদ, আমরা বক্সিংয়ের নিয়মগুলিকে ওভাররাইড করার দক্ষতা পেয়েছি সুতরাং বেশিরভাগ ক্ষেত্রে আপনার স্টাইলশীটের শীর্ষে সাধারণ নিয়মটি কার্যকরভাবে কাজ করে:

* {
    -mox-box-sizing: border-box;
    box-sizing: border-box;
}

বিষয়টিতে জেফ কাউফম্যানের উদ্ধৃতি দিতে :

প্রদত্ত যে অনুমিতি এটি অন্যভাবে সংজ্ঞায়িত করেছে, যদিও, মাইক্রোসফ্টকে তাদের ভুল ব্যাখ্যাটি গ্রহণ করার জন্য মাইক্রোসফ্টকে যে সংকেত পাঠানো হত তা ওয়েবে খারাপ হত bad মাইক্রোসফ্ট ইতিমধ্যে একটি আলিঙ্গন, প্রসারিত এবং নিঃসরণ পদ্ধতির ব্যবহার করছিল, যেখানে তারা উদ্দেশ্যমূলকভাবে এমন পণ্য তৈরি করেছিল যা ব্যবহারকারীদের মাইক্রোসফ্ট সংস্করণে লক করার জন্য প্রতিযোগীদের থেকে আলাদা আচরণ করেছিল। তারা ওয়েবে সাফল্যের খুব কাছাকাছি এসেছিল: প্রায় 2000 থেকে 2005 অবধি আইই এত জনপ্রিয় ছিল যে অনেকগুলি সাইট কেবল এটির জন্য ডিজাইন করেছিল। আইই এর পদ্ধতির এখানে গ্রহণ করার পরে মাইক্রোসফ্টকে বলে থাকতে পারে "আপনি আইই এর সাথে যা চান তা করতে পারেন এবং আমরা এটি আইনী করার জন্য মানগুলি সামঞ্জস্য করব"।

সুতরাং বক্স মডেল ডাব্লু 3 সি এবং মাইক্রোসফ্টের মধ্যে শক্তি-সংগ্রামের শিকার হয়েছিল।


1
আমি একটি বিশ্বব্যাপী ওভাররাইড এড়াতে চাই *। আমি বরং এটি যে জায়গাগুলিতে এটি প্রয়োজনীয় সেখানে স্থিরভাবে ওভাররাইড করব।
কোডসইনচওস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.