আমি কি 100% প্রস্থের পাঠ্য বাক্সগুলিকে তাদের ধারকগুলির বাইরে বাড়ানো থেকে থামাতে পারি?


181

বলি আমার কাছে একটি পাঠ্য বাক্স রয়েছে যা আমি একটি সম্পূর্ণ লাইন পূরণ করতে চাই। আমি এটিকে এর মতো একটি স্টাইল দেব:

input.wide {display:block; width: 100%}

এটি সমস্যা সৃষ্টি করে কারণ প্রস্থটি পাঠ্য বাক্সের সামগ্রীর উপর ভিত্তি করে। পাঠ্য বাক্সগুলিতে মার্জিন, সীমানা এবং প্যাডিং রয়েছে ডিফল্ট হিসাবে, যা এটি তার ধারক থেকে 100% প্রস্থের পাঠ্য বাক্সকে আরও বড় করে তোলে।

উদাহরণস্বরূপ, এখানে ডানদিকে:

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

কোনও পাঠ্য বাক্সের প্রসারকে প্রসারিত না করে এর ধারকটির প্রস্থ পূরণ করার কোনও উপায় আছে কি?

আমার অর্থটি বোঝাতে এখানে কিছু উদাহরণ এইচটিএমএল:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <style type="text/css">
        #outer{border: 1px solid #000; width: 320px; margin: 0px;padding:0px}
        #inner{margin: 20px; padding: 20px; background: #999;border: 1px solid #000;}
        input.wide {display:block; margin: 0px}
        input.normal {display:block; float: right}
    </style>
</head>
<body>
    <div id="outer">
        <div id="inner">
            <input type="text" class="wide" />
            <input type="text" class="normal" />
            <div style="clear:both;"></div>
        </div>
    </div>
</body>
</html>

যদি এটি চালানো হয় তবে আপনি "সাধারণ" পাঠ্য বাক্সটি দেখে দেখতে পারেন যে "প্রশস্ত" পাঠ্য বাক্সটি ধারকটির বাইরে স্টিক করে চলেছে। "সাধারণ" পাঠ্য বাক্সটি ধারকটির আসল প্রান্তে ভাসমান। আমি চেষ্টা করছি "প্রশস্ত" পাঠ্য বাক্সটি "সাধারণ" পাঠ্য বাক্সের মতো প্রান্তের বাইরে প্রসারিত না করে, তার ধারকটি পূরণ করুন।

উত্তর:


87

আপনি যা করতে পারেন তা হ'ল ডিফল্ট "অতিরিক্ত" মুছে ফেলা input:

input.wide {display:block; width:100%;padding:0;border-width:0}

এটি inputএর ধারকটির ভিতরে রাখবে । এখন যদি আপনি সীমানা চাও, মোড়ানো inputএকটি div, সীমানা নির্ধারণ নিয়ে div(যে ভাবে আপনি অপসারণ করতে পারেন display:blockথেকে inputখুব)। কিছুটা এইরকম:

<div style="border:1px solid gray;">
 <input type="text" class="wide" />
</div>

সম্পাদনা করুন: অন্য বিকল্পটি হ'ল স্টাইলটি সরিয়ে ফেলার পরিবর্তে inputমোড়কে ক্ষতিপূরণ দিন div:

input.wide {width:100%;}

<div style="padding-right:4px;padding-left:1px;margin-right:2px">
  <input type="text" class="wide" />
</div>

এটি আপনাকে বিভিন্ন ব্রাউজারগুলিতে কিছুটা আলাদা ফলাফল দেয় তবে তারা ধারকটিকে ওভারল্যাপ করবে না। ডিভের মানগুলি সীমানার উপরে কত বড় inputএবং আপনি inputএবং সীমান্তের মধ্যে কতটা জায়গা চান তা নির্ভর করে ।


3
এটি একটি খুব সৃজনশীল সমাধান। এটির সাথে আমার একমাত্র সমস্যাটি হ'ল আমি মোড়ক ডিভের সীমানা পরিবর্তন করতে জাভাস্ক্রিপ্ট ব্যবহার না করা পর্যন্ত আমি যখন টেক্সট বাক্সটিতে ফোকাস অর্জন করি তখন আমি কোনও টেক্সট বাক্সে একটি রূপরেখা সংজ্ঞায়িত করতে পারি না।
ড্যান হার্বার্ট

@ ড্যানহারবার্ট, আপনি ঠিক বলেছেন, এটি এই পদ্ধতির একটি বড় ইউএক্স ত্রুটি
বাউমর

275

কোনও পাঠ্য বাক্সের প্রসারকে প্রসারিত না করে এর ধারকটির প্রস্থ পূরণ করার কোনও উপায় আছে কি?

হ্যাঁ: CSS3 বৈশিষ্ট্য 'বক্স-সাইজিং: বর্ডার-বক্স' ব্যবহার করে আপনি বাহ্যিক প্যাডিং এবং সীমানা অন্তর্ভুক্ত করার জন্য 'প্রস্থ' এর অর্থ কী তা নতুন করে সংজ্ঞায়িত করতে পারেন।

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

input.wide {
    width: 100%;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
}

পুরানো-স্কুল বিকল্পটি কেবল 'প্যাডিং' -তে আপনার অতিরিক্ত বাম-এবং-ডান প্যাডিং / সীমানা কতটা পিক্সিংয়ের ক্ষেত্রে সমান <ডিআইভি> বা <td> উপাদানের সমান পরিমাণে 'প্যাডিং-রাইট' রাখার জন্য আপনার ব্রাউজারগুলি মনে করবে ইনপুট দিন (IE <8 এর জন্য সাধারণত 6px


এটি দুর্দান্ত ব্যবহার করতে পারে, এটি ব্যবহার না করা ব্যতীত কারণ আমি মোবাইল ডিভাইসগুলি লক্ষ্য করছি যা সম্ভবত বছরের পর বছর ধরে এটি সমর্থন করে না। : - \
ড্যান হার্বার্ট

20
আমি মনে করি কম্পিউটারগুলির আগে মোবাইল ডিভাইসগুলিতে সম্পূর্ণ HTML5 সমর্থন থাকবে।
মারিয়ানো ক্যাভালো

4
@ কিন্ডার্ড: আপনি যদি এতে আইইএমবাইল এবং ব্ল্যাকবেরি অন্তর্ভুক্ত করেন তবে অবশ্যই না।
ববিনস

1
এই, ডেস্কটপ ব্রাউজারের জন্য মহান সমর্থন আছে যদিও quirksmode.org/css/contents.html
লোগান

2
এই ভয়ঙ্কর বাটারসৌসটি পেতে আমাকে কীভাবে এতক্ষণ লাগল ??? আমরা কি এটি গ্রহণযোগ্য উত্তর করতে পারি?
স্ট্রিটলজিকস

14

এটি আমার জন্য সমস্যার সমাধান!

বাহ্যিক ডিভের প্রয়োজন ছাড়াই। এটি কেবল আপনার প্রদত্ত পাঠ্য বাক্সে প্রয়োগ করুন।

box-sizing: border-box; 

এই বৈশিষ্ট্যটির সাথে "প্রস্থ এবং উচ্চতার বৈশিষ্ট্যগুলি (এবং সর্বনিম্ন / সর্বোচ্চ বৈশিষ্ট্য) সামগ্রী, প্যাডিং এবং সীমানা অন্তর্ভুক্ত করে তবে মার্জিনটি নয়"

W3schools এ সম্পত্তির বিবরণ দেখুন ।

আশা করি এটি কাউকে সাহায্য করবে!


আশ্চর্যজনক সহজ! ধন্যবাদ!
নুরাইডার

10

কেবলমাত্র আমি নিজেই এই সমস্যাটি জুড়ে এসেছি এবং আমার সমস্ত পরীক্ষার ব্রাউজারগুলিতে (আই 6, আই 7, ফায়ারফক্স) কাজ করার একমাত্র সমাধানটি ছিল:

  1. দুটি পৃথক ডিআইভিতে ইনপুট ক্ষেত্রটি মুড়ে দিন
  2. বাহ্যিক ডিআইভি 100% প্রস্থে সেট করুন, এটি আমাদের ধারকটিকে নথিকে উপচে পড়া থেকে বাধা দেয়
  3. ইনপুটটির অনুভূমিক ওভারফ্লো ক্ষতিপূরণ দিতে সঠিক পরিমাণের অভ্যন্তরের ডিআইভিতে প্যাডিং রাখুন।
  4. ইনপুটটিতে কাস্টম প্যাডিং সেট করুন যাতে এটি অভ্যন্তরের ডিআইভিতে আমার অনুমতি হিসাবে একই পরিমাণে উপচে পড়ে

কোড:

<div style="width: 100%">
    <div style="padding-right: 6px;">
        <input type="text" style="width: 100%; padding: 2px; margin: 0;
                                  border : solid 1px #999" />
    </div>
</div>

এখানে, ইনপুট উপাদানটির জন্য মোট অনুভূমিক ওভারফ্লো 6px - 2x (প্যাডিং + বর্ডার) - সুতরাং আমরা 6px এর অভ্যন্তরীণ ডিআইভির জন্য প্যাডিং-ডান সেট করি।


ইনপুট উপাদানটিতে
8px

7

বক্স-সাইজিং সমর্থনটি আসলে বেশ ভাল: http://caniuse.com/#search=box-sizing

সুতরাং আপনি যদি আই 7 কে লক্ষ্য না করেন তবে আপনার এই সম্পত্তিটি ব্যবহার করে এই ধরণের সমস্যা সমাধান করতে সক্ষম হওয়া উচিত। স্যাস বা তার চেয়ে কমের মতো একটি স্তর বিটিডব্লিউ, যেমন প্রিফিক্সড নিয়মগুলি পরিচালনা করা সহজ করে।


3

প্রকৃতপক্ষে, এটি কারণ সিএসএস এর মার্জিন, সীমানা এবং প্যাডিং সহ ধারকটির পুরো প্রস্থের সাথে তুলনামূলকভাবে 100% সংজ্ঞায়িত করে; এর মানে হল যে স্থানটি লাভ করে। এর বিষয়বস্তুতে 100% এর চেয়ে কম পরিমাণের পরিমাণ থাকে, যদি না ধারকটির কোনও মার্জিন, সীমানা বা প্যাডিং না থাকে।

এটি পাল্টা স্বজ্ঞাত এবং অনেকের দ্বারা সর্বদা বিবেচিত এমন একটি ভুল হিসাবে যে আমরা এখন আটকে রয়েছি । এর কার্যকরভাবে অর্থ হল যে% মাত্রা শীর্ষ স্তরের ধারক ব্যতীত অন্য কোনও কিছুর পক্ষে ভাল নয়, এবং তারপরেও কেবল যদি এর কোনও মার্জিন, সীমানা বা প্যাডিং না থাকে।

নোট করুন যে পাঠ্য ক্ষেত্রের মার্জিন, সীমানা এবং প্যাডিং এর জন্য নির্দিষ্ট সিএসএস আকারের অন্তর্ভুক্ত রয়েছে - এটি ধারক যা জিনিস ফেলে দেয়।

আমি সহনীয়ভাবে 98% ব্যবহার করে এটির চারপাশে কাজ করেছি, তবে এটি নিখুঁত সমাধানের চেয়ে কম, যেহেতু ধারক বড় হওয়ার সাথে সাথে ইনপুট ক্ষেত্রগুলি আরও ছোট হয়ে যায়।


সম্পাদনা: আমি এই একই প্রশ্নটি জুড়ে এসেছি - প্রদত্ত উত্তরটি আমি কখনও চেষ্টা করিনি , এবং এটি আপনার সমস্যার ক্ষেত্রে প্রযোজ্য কিনা তা আমি নিশ্চিতভাবে জানি না, তবে মনে হবে এটি হবে like


1

একটি সমাধান যা কাজ করতে পারে (এটি আমার জন্য কাজ করে) হ'ল ইনপুট (পাঠ্যবাক্স) এ নেগেটিভ মার্জিন প্রয়োগ করা ... বা আই 7 এর জন্য নির্দিষ্ট প্রস্থ বা আই 7 সমর্থন ছাড়াই। এটি পিক্সেল নিখুঁত প্রস্থে ফলাফল করে .. আমার জন্য এটির 7 সুতরাং আমি 3 এবং 4 যুক্ত করেছি তবে এটি এখনও পিক্সেল নিখুঁত ...

আমার একই সমস্যা ছিল এবং আমি সীমান্ত ইত্যাদির জন্য অতিরিক্ত ডিভ নেওয়ার ঘৃণা করি!

সুতরাং এখানে আমার সমাধান যা কাজ বলে মনে হচ্ছে!

স্টারহ্যাকগুলি এড়াতে আপনার একটি আই 7 কেবল স্টাইলশিট ব্যবহার করা উচিত।

input.text{
    background-color: #fbfbfb;
    border : solid #eee 1px;
    width: 100%;
    -box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    height: 32px;

    *line-height:32px;
    *margin-left:-3px;
    *margin-right:-4px;
    display: inline;   
    padding: 0px 0 0 5px;

}

1

আপনি যদি ব্যবহার করতে না পারেন তবে আপনি এটির মধ্যে box-sizing:border-boxসরানোর চেষ্টা করতে width:100%এবং উপাদানটিতে একটি খুব বড় sizeবৈশিষ্ট্য রাখার চেষ্টা করতে পারেন <input>, তবে এইচটিএমএলটি আপনাকে পরিবর্তন করতে হবে এবং কেবল সিএসএস দিয়ে এটি করতে পারবেন না:

<input size="1000"></input>

0

আপনার যদি এটি গতিশীলভাবে করার প্রয়োজন না হয় (উদাহরণস্বরূপ, আপনার ফর্মটি একটি নির্দিষ্ট প্রস্থের) আপনি কেবলমাত্র শিশু <input>উপাদানগুলির প্রস্থকে তাদের ধারক বিয়োগের প্রস্থে প্যাডিং, মার্জিন, সীমান্ত ইত্যাদি সজ্জায় নির্ধারণ করতে পারেন set

 // the parent div here has a width of 200px:
.form-signin input[type="text"], .form-signin input[type="password"], .form-signin input[type="email"], .form-signin input[type="number"] {
  font-size: 16px;
  height: auto;
  display: block;
  width: 280px;
  margin-bottom: 15px;
  padding: 7px 9px;
}

0

আপনি যদি বাক্স-আকার পরিবর্তন করতে না পারেন (যেমন আপনি যখন HTML কে আইটিেক্সট ব্যবহার করে পিডিএফে রূপান্তর করেন)। এটা চেষ্টা কর:

সিএসএস

.input-wrapper { border: 1px solid #ccc; padding: 0 5px; min-height: 20px; } 
.input-wrapper input[type=text] { border: none; height: 20px; width: 100%; padding: 0; margin: 0; }

এইচটিএমএল

<div class="input-wrapper">
     <input type="text" value="" name="city"/>
</div>

0

এইটা কাজ করে:

<div>
    <input type="text" 
        style="margin: 5px; padding: 4px; border: 1px solid; 
        width: 200px; width: calc(100% - 20px);">
</div>

প্রথম 'প্রস্থ' পুরানো ব্রাউজারগুলির জন্য একটি ফ্যালব্যাক নিয়ম।


0

অতিরিক্ত প্যাডিংয়ের জন্য অফসেটে কেবল ইনপুটটি স্টাইল করুন। নিম্নলিখিত উদাহরণে ইনপুটটিতে প্যাডিং 20px মোট প্যাডিং অফসেটের জন্য বাম এবং ডানদিকে 10px হবে:

input[type=text]{
   width: calc(100% - 20px);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.