সমস্যা
আমার এমন একটি রয়েছে <select>যেখানে <option>এর পাঠ্য মানগুলির মধ্যে একটি খুব দীর্ঘ। আমি <select>আকারটি পরিবর্তন করতে চাই যাতে এটি এর পিতামাতার চেয়ে কখনও বৃহত্তর হয় না, এমনকি যদি এটির প্রদর্শিত পাঠ্য কেটে ফেলতে হয়। max-width: 100%এটা করা উচিত।
আকার পরিবর্তন করার আগে:

আকার পরিবর্তন করার পরে আমি যা চাই:

তবে আপনি যদি এই জেএসফিডাল উদাহরণটি লোড করেন এবং ফলাফল প্যানেলের প্রস্থটি এর চেয়ে ছোট হতে আকার পরিবর্তন করেন তবে <select>আপনি দেখতে পাচ্ছেন যে অভ্যন্তরের নির্বাচনটি <fieldset>এর প্রস্থটি নিচে স্কেল করতে ব্যর্থ হয়েছে।
পুনরায় আকার দেওয়ার পরে আমি আসলে যা দেখছি:

যাইহোক, একটি স্কেলের পরিবর্তে একটি সমতুল্য পৃষ্ঠাটি<div><fieldset> সঠিকভাবে। আপনি যে দেখতে এবং করতে আরো সহজে আপনার পরিবর্তনগুলি পরীক্ষা যদি আপনি একটি <fieldset>এবং একটি <div>একটি পৃষ্ঠা একে অপরের পাশে । এবং আপনি যদি আশেপাশের <fieldset>ট্যাগগুলি মুছে ফেলেন তবে আকার পরিবর্তন করে। <fieldset>ট্যাগ একরকম অনুভূমিক মাপ পরিবর্তনকারী বিরতি সৃষ্টি করছে।
<fieldset>কাজ যেন একটা সিএসএস নিয়ম হল fieldset { min-width: min-content; }। ( min-contentমানে, প্রায়, ক্ষুদ্রতম প্রস্থ ওভারফ্লো একটি শিশু কারণ যে নেই।) যদি আমি প্রতিস্থাপন <fieldset>একটি সঙ্গে <div>সঙ্গেmin-width: min-content চললে তো এমনই মনে হচ্ছে। তবুও min-contentআমার শৈলীতে, ব্রাউজারের ডিফল্ট স্টাইলশিটে বা ফায়ারবাগের সিএসএস পরিদর্শকটিতে দৃশ্যমান কোনও নিয়ম নেই । আমি <fieldset>ফায়ারব্যাগের সিএসএস ইন্সপেক্টর এবং ফায়ারফক্সের ডিফল্ট স্টাইলশিট ফর্ম। CSS এ দৃশ্যমান প্রতিটি স্টাইলকে ওভাররাইড করার চেষ্টা করেছি , কিন্তু তাতে কোনও লাভ হয়নি। বিশেষত ওভাররাইডিং min-widthএবং widthকোনও কিছুই করেনি।
কোড
ফিল্ডসেটের এইচটিএমএল:
<fieldset>
<div class="wrapper">
<select id="section" name="section">
<option value="-1"></option>
<option value="1501" selected="selected">Sphinx of black quartz, judge my vow. The quick brown fox jumps over the lazy dog.</option>
<option value="1480">Subcontractor</option>
<option value="3181">Valley</option>
<option value="3180">Ventura</option>
<option value="3220">Very Newest Section</option>
<option value="1481">Visitor</option>
<option value="3200">N/A</option>
</select>
</div>
</fieldset>
আমার সিএসএস যা কাজ করা উচিত তবে তা নয়:
fieldset {
/* hide fieldset-specific visual features: */
margin: 0;
padding: 0;
border: none;
}
select {
max-width: 100%;
}
রিসেট widthকরার বৈশিষ্ট্য অক্ষমতা কিছুই না:
fieldset {
width: auto;
min-width: 0;
max-width: none;
}
আরও সিএসএস যেখানে আমি চেষ্টা করেছি এবং সমস্যাটি সমাধান করতে ব্যর্থ :
/* try lots of things to fix the width, with no success: */
fieldset {
display: block;
min-width: 0;
max-width: 100%;
width: 100%;
text-overflow: clip;
}
div.wrapper {
width: 100%;
}
select {
overflow: hidden;
}
আরো বিস্তারিত
সমস্যাটি এই আরও বিস্তৃত, আরও জটিল জেএসফিডেলের উদাহরণে ঘটেছিল , যা ওয়েব পৃষ্ঠার সাথে আরও সাদৃশ্যপূর্ণ যা আমি আসলে ঠিক করার চেষ্টা করছি। আপনি এটি থেকে দেখতে পারেন যে <select>সমস্যাটি নয় - একটি ইনলাইন-ব্লকও divআকার পরিবর্তন করতে ব্যর্থ। যদিও এই উদাহরণটি আরও জটিল, আমি ধরে নিয়েছি যে উপরের সরল মামলার ফিক্সও এই আরও জটিল কেসটিকে ঠিক করবে।
[সম্পাদনা করুন: নীচে ব্রাউজার সমর্থন বিশদ দেখুন]]
এই সমস্যাটি সম্পর্কে একটি কৌতূহলজনক বিষয় হ'ল আপনি যদি সেটdiv.wrapper { width: 50%; }<fieldset> করেন, বিন্দুতে নিজেকে পুনরায় আকার দেওয়া বন্ধ করে দেয় তবে পূর্ণ আকারের <select>ভিউপোর্টের প্রান্তে আঘাত হানে। যদিও এই ঘটবে যেন <select>হয়েছে width: 100%, যদিও <select>সৌন্দর্য এটা আছে মত width: 50%।

আপনি যদি দিতে <select>নিজেইwidth: 50% যে আচরণ ঘটবে না; প্রস্থটি সঠিকভাবে সেট করা আছে।

আমি এই পার্থক্যের কারণ বুঝতে পারি না। তবে এটি প্রাসঙ্গিক নাও হতে পারে।
আমিও পাওয়া অনুরূপ প্রশ্ন এইচটিএমএল fieldset শিশু অনির্দিষ্টকালের জন্য প্রসারিত করতে পারবেন । প্রশ্নকর্তা কোনও সমাধান খুঁজে পেলেন না এবং অনুমান করেন যে এটিকে অপসারণ করা ছাড়া কোনও সমাধান নেই<fieldset> । তবে আমি ভাবছি, যদি সত্যিই <fieldset>প্রদর্শনটি সঠিকভাবে করা অসম্ভব তবে তা কেন? কী <fieldset>এর বৈশিষ্ট বা ডিফল্ট সিএসএস ( এই প্রশ্নের যেমন ) এই আচরণ কারণ? এই বিশেষ আচরণটি সম্ভবত কোথাও নথিভুক্ত করা হয়েছে, যেহেতু একাধিক ব্রাউজারগুলি এটির মতো কাজ করে।
পটভূমি লক্ষ্য এবং প্রয়োজনীয়তা
যে কারণে আমি এটি করার চেষ্টা করছি তা হ'ল একটি বড় ফর্ম সহ একটি বিদ্যমান পৃষ্ঠার জন্য মোবাইল স্টাইল লেখার অংশ হিসাবে। ফর্মটির একাধিক বিভাগ রয়েছে এবং এর একটি অংশ একটিতে আবৃত রয়েছে <fieldset>। একটি স্মার্টফোনে (বা আপনি যদি নিজের ব্রাউজার উইন্ডোটিকে ছোট করে রাখেন) তবে পৃষ্ঠার অংশটির অংশটি <fieldset>বাকী ফর্মের চেয়ে অনেক বেশি বিস্তৃত। বেশিরভাগ ফর্মটি তার প্রস্থকে ঠিক সূক্ষ্মভাবে সীমাবদ্ধ করে, তবে বিভাগটি <fieldset>না করে ব্যবহারকারীকে জুম আউট করতে বা or বিভাগের সমস্ত দেখতে ডানদিকে স্ক্রোল করতে বাধ্য করে।
আমি কেবল মুছে ফেলার বিষয়ে সতর্ক <fieldset>, কারণ এটি একটি বড় অ্যাপ্লিকেশনে অনেক পৃষ্ঠায় উত্পন্ন হয় এবং আমি নিশ্চিত নই যে সিএসএস বা জাভাস্ক্রিপ্টে নির্বাচকরা এর উপর নির্ভর করতে পারে।
আমার প্রয়োজন হলে আমি জাভাস্ক্রিপ্ট ব্যবহার করতে পারি এবং একটি জাভাস্ক্রিপ্ট সমাধান কিছুই না থেকে ভাল than তবে জাভাস্ক্রিপ্ট যদি এটি করার একমাত্র উপায় হয় তবে আমি কেন কেবল সিএসএস এবং এইচটিএমএল ব্যবহার করে এটি সম্ভব নয় তা সম্পর্কে একটি ব্যাখ্যা শুনতে আগ্রহী।
সম্পাদনা করুন: ব্রাউজার সমর্থন
সাইটে, আমাকে ইন্টারনেট এক্সপ্লোরার 8 এবং তারপরে (আমরা স্রেফ আইই 7 এর জন্য সমর্থন বাদ দিয়েছি), সর্বশেষতম ফায়ারফক্স এবং সর্বশেষতম ক্রোমকে সমর্থন করতে হবে। এই নির্দিষ্ট পৃষ্ঠায় আইওএস এবং অ্যান্ড্রয়েড স্মার্টফোনেও কাজ করা উচিত। কিছুটা অবনমিত হলেও এখনও ব্যবহারযোগ্য আচরণ ইন্টারনেট এক্সপ্লোরার 8 এর জন্য গ্রহণযোগ্য।
আমি আমার ভাঙ্গা fieldsetউদাহরণটি বিভিন্ন ব্রাউজারে পুনরায় লিখেছি । এটি আসলে এই ব্রাউজারগুলিতে ইতিমধ্যে কাজ করে:
- ইন্টারনেট এক্সপ্লোরার 8, 9, এবং 10
- ক্রৌমিয়াম
- অ্যান্ড্রয়েডের জন্য ক্রোম
এটি এই ব্রাউজারগুলিতে বিরতি দেয়:
- ফায়ারফক্স
- অ্যান্ড্রয়েডের জন্য ফায়ারফক্স
- ইন্টারনেট এক্সপ্লোরার 7
সুতরাং, আমি যে বর্তমান ব্রাউজারটির বর্তমান কোডটি ভেঙে ফেলি সে সম্পর্কে ফায়ারফক্স (ডেস্কটপ এবং মোবাইল উভয় ক্ষেত্রে) কেবলমাত্র যত্নশীল। কোডটি যদি ঠিক করা থাকে তবে এটি অন্য কোনও ব্রাউজারে না ভেঙে ফায়ারফক্সে কাজ করেছিল, এটি আমার সমস্যার সমাধান করবে।
সাইট এইচটিএমএল টেমপ্লেট ইন্টারনেট এক্সপ্লোরার শর্তসাপেক্ষ মন্তব্য ব্যবহার শ্রেণীর যেমন যোগ করার জন্য .ie8এবং .oldieজন্য <html>উপাদান। আপনি যদি আইএসে স্টাইলিংয়ের পার্থক্যের আশেপাশে কাজ করতে চান তবে আপনি আপনার সিএসএসে এই ক্লাসগুলি ব্যবহার করতে পারেন। যোগ করা ক্লাসগুলি এইচটিএমএল 5 বয়লারপ্লেটের পুরানো সংস্করণটির মতো ।
<fieldset>(বা div.wrapper) যে প্রস্থের প্রয়োজন তা দিন এবং select { width:100% }। max-widthউপাদানটি তার পিতামাতার মূল প্রস্থের কিছু% দেয় বলে মনে হয় , তারপর স্কেল করে না, যেখানে widthতার পিতামাতার সাথে স্কেল হয়। আমি মনে করি এটি আপনি যা চান তা করবে (তবে আমি ভুল বুঝে থাকতে পারি)। আপনার আরও জটিল ফিডলে, বাম কলামে ক্ষেত্রগুলিকে%-প্রস্থ এবং একটি মিনিট পিক্সেল-প্রস্থ দেওয়ার চেষ্টা করুন। তারপরে ক্ষেত্রগুলি ডান 100 - (বাম ক্ষেত্র -% - প্রস্থ)% প্রস্থে দিন।