একটি বাকী অনুভূমিক স্থান পূরণ করুন কীভাবে?


419

আমার 2 ডিভ রয়েছে: একটি বাম দিকে এবং একটি আমার পৃষ্ঠার ডান দিকে। বাম পাশের একটিটির প্রস্থটি স্থির রয়েছে এবং আমি চাই চাই যে ডান দিকের একটির বাকী স্থানটি পূরণ করুন।

#search {
  width: 160px;
  height: 25px;
  float: left;
  background-color: #ffffff;
}

#navigation {
  width: 780px;
  float: left;
  background-color: #A53030;
}
<div id="search">Text</div>
<div id="navigation">Navigation</div>


11
# নেভিগেশনে প্রস্থ এবং ভাসমান সম্পত্তি সরান এবং এটি কাজ করবে।
জোহান লেইনো


1
@ অ্যালেক্সচেঙ্কো: আপনি সম্ভবত হ্যাঙ্কের দেওয়া উত্তরটির জন্য আপনার নির্বাচিত উত্তরটি আপডেট করতে চান
অ্যাড্রিয়েন

@ অ্যাড্রিনবেন আসলে আপনি যদি মাইস্টারডাটের উত্তরটি দেখেন তবে আমি মনে করি যে এটি আরও ভাল। এটি কেবলমাত্র CSS এর এক লাইন এবং এটিই আমার পক্ষে কাজ করেছে (আমি ভাসা দিয়ে তিনটি কলাম তৈরি করছি: বাম; স্থির প্রস্থ এবং ওভারফ্লো দিয়ে প্রথম দুটিতে:
শেষটিতে

পছন্দ করেছেন প্রকৃতপক্ষে, এটি স্ট্যাকওভারফ্লো
অ্যাড্রিয়েন

উত্তর:


71

এটি আপনি যা যাচ্ছেন তা সম্পাদন করে বলে মনে হচ্ছে।

#left {
  float:left;
  width:180px;
  background-color:#ff0000;
}
#right {
  width: 100%;
  background-color:#00FF00;
}
<div>
  <div id="left">
    left
  </div>
  <div id="right">
    right
  </div>
</div>


8
আপনাকে প্রস্থটি সরিয়ে ফেলতে হবে: এটি কার্যকর করার জন্য ডান ডিভের 100%।
জোহান লেইনো

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

5
+1 আমার সমস্যাও সমাধান করেছেন। যা শিখেছি তা হ'ল ফিলিং ডিভের "ফ্লোট: বাম" অপসারণের দরকার ছিল। আমি ভেবেছিলাম যে পৃষ্ঠাটি প্রবাহিত করবে
কীসার

12
ভাইরোটিক্সের মন্তব্যটি সত্য বলে লক্ষ্য করা ভাল, তবে ওভারফ্লো দিয়ে সমাধান করা যেতে পারে : ডান কলামে লুকানো । ডেনজেল ​​এটি উল্লেখ করেছে, তবে তার গ্রহণযোগ্য উত্তর নয়, তাই আপনি এটি মিস করতে পারেন ...
রুড্ট

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

268

বোশলির উত্তরের সাথে যে সমস্যাটি আমি পেয়েছি তা হ'ল ডান কলামটি যদি বামের চেয়ে দীর্ঘ হয় তবে এটি কেবল বামদিকে আবৃত হবে এবং পুরো স্থানটি পূরণ করবে। এটি আমি যে আচরণটি খুঁজছিলাম তা নয়। প্রচুর 'সমাধানগুলি' অনুসন্ধান করার পরে আমি তিনটি কলাম পৃষ্ঠা তৈরি করার জন্য একটি টিউটোরিয়াল (এখন লিঙ্কটি মারা গেছে) পেয়েছি।

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

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

স্ট্যাক স্নিপেটস এবং জেএসফিডেলের একটি ডেমো এখানে

#left {
  float: left;
  width: 180px;
}

#right {
  margin-left: 180px;
}

/* just to highlight divs for example*/
#left { background-color: pink; }
#right { background-color: lightgreen;}
<div id="left">  left  </div>
<div id="right"> right </div>

বোশলির উদাহরণ সহ বাম কলামটি অন্য কলামটি ডানদিকে ধারণ করে। বাম কলামটি শেষ হওয়ার সাথে সাথে ডান আবার পুরো জায়গা পূরণ করতে শুরু করে। এখানে ডান কলামটি কেবল পৃষ্ঠায় আরও প্রান্তিককরণ করে এবং বাম কলামটি এর বড় ফ্যাট মার্জিনটি দখল করে। কোন প্রবাহ ইন্টারঅ্যাকশন প্রয়োজন।


আপনি যখন ডিভ ট্যাগটি বন্ধ করেন, সেই ডিভের পরে থাকা সামগ্রীগুলি একটি নতুন লাইনে প্রদর্শিত হবে তবে তা ঘটছে না। আপনি দয়া করে কেন ব্যাখ্যা করতে পারেন?
ফুদ্দিন

হওয়া উচিত: মার্জিন-বাম: 190px; তুমি ভুলে গেছ ';'. মার্জিন-বামটি 180px হওয়া উচিত।
ফুদ্দিন

4
দ্রষ্টব্য: আপনি যদি ডানদিকে স্থির-প্রস্থের উপাদানটি চান তবে কোডে এটি প্রথমে রাখার বিষয়টি নিশ্চিত হন বা যাইহোক এটি পরবর্তী লাইনে ঠেলাঠেলি করা হবে।
ট্রেভর

2
@ রনিটোভি, আপনার এইচটিএমএলে ভাসমান উপাদানগুলির আগে ভাসমান উপাদানগুলি গুলি আসা উচিত। jsfiddle.net/CSbbM/127
Hank

6
সুতরাং, আপনি যদি একটি নির্দিষ্ট প্রস্থ এড়াতে চান তবে আপনি এটি কীভাবে করবেন? অন্য কথায়, বাম কলামটি যতটা প্রশস্ত হওয়া দরকার ততই প্রশস্ত হতে দেবে এবং ডান কলামটি বাকী অংশটি নেবে?
প্যাট্রিক জাজালাপস্কি

126

সমাধান প্রদর্শন সম্পত্তি থেকে আসে।

মূলত আপনাকে দুটি ডিভগুলি টেবিল কোষের মতো কাজ করা দরকার। সুতরাং পরিবর্তে ব্যবহারের পরিবর্তে float:left, আপনাকে display:table-cellউভয় ডিভগুলিতে ব্যবহার করতে হবে , এবং গতিশীল প্রস্থ ডিভের জন্য আপনাকেও সেট width:auto;করতে হবে। উভয় ডিভগুলি display:tableসম্পত্তি সহ 100% প্রস্থের পাত্রে রাখা উচিত ।

এখানে সিএসএস:

.container {display:table;width:100%}
#search {
  width: 160px;
  height: 25px;
  display:table-cell;
  background-color: #FFF;
}
#navigation {
  width: auto;
  display:table-cell;
  /*background-color: url('../images/transparent.png') ;*/
  background-color: #A53030;
}

*html #navigation {float:left;}

এবং এইচটিএমএল:

<div class="container">
   <div id="search"></div>
   <div id="navigation"></div>
</div>

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

আমি আশা করি এটি আপনার সমস্যার সমাধান করবে। আপনি যদি চান, আপনি আমার ব্লগে এই সম্পর্কে আমার লেখা নিবন্ধটি পড়তে পারেন ।


3
প্রস্থের সাথে ডিভের ভিতরে থাকা সামগ্রীগুলি কাজ করে না: ভিউপোর্টে উপলব্ধ স্থানের তুলনায় অটো বড়।
নাথান লোয়ার

4
@ আইনর্ড, এই সমাধানটি টেবিলগুলি ব্যবহার করে না এবং আমি সচেতন যে টেবিলগুলি কেবল টবুলার ডেটার জন্য ব্যবহার করা উচিত। সুতরাং, এখানে প্রসঙ্গ বাইরে। আসল সারণী এবং প্রদর্শন: সারণী (+ অন্যান্য ভিন্নতা) বৈশিষ্ট্যগুলি সম্পূর্ণ আলাদা।
মিহাই ফ্রেঞ্চিউ

1
@ মিহাই ফ্রেঞ্চিউ, কোন উপায়ে প্রদর্শন করে: টেবিলটি আসল টেবিল উপাদান থেকে পৃথক? আমি সত্যিই এটি শিখতে চাই যদি তারা সম্পূর্ণ আলাদা জিনিস হয়, আপনাকে ধন্যবাদ। =)
আইনর্ড

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

1
@ মিহাই ফ্রেঞ্চিউ, উত্তরের জন্য ধন্যবাদ। কিন্তু টেবিল উপাদানগুলির ব্যবহার কি টেবিলগুলি ডিজাইনের উপাদান হিসাবে ব্যবহার করার ক্ষেত্রে সমস্যার অর্ধেক নয়?
আইনর্ড

123

এই দিনগুলিতে, আপনার flexboxপদ্ধতিটি ব্যবহার করা উচিত (ব্রাউজার উপসর্গ সহ সমস্ত ব্রাউজারের সাথে মানিয়ে নেওয়া যেতে পারে)।

.container {
    display: flex;
}

.left {
    width: 180px;
}

.right {
    flex-grow: 1;
}

আরও তথ্য: https://css-tricks.com/snippets/css/a-guide-to-flexbox/


সিএসএস অ্যাট্রিবিউট সম্পর্কে ভাল ব্যাখ্যা পেতে www.w3schools.com/cssref/css3_pr_flex-grow.asp দেখুন। একটি সাধারণ আধুনিক সমাধান তবে পুরানো ব্রাউজারগুলিতে কাজ করতে পারে না।
এডওয়ার্ড

4
ফ্লেক্সবক্স এফটিডব্লু ... আমি এই থ্রেডে অন্য সমস্ত সমাধান চেষ্টা করেছি, কিছুই কাজ করে না, আমি এই ফ্লেক্সবক্স সমাধানটি চেষ্টা করি, এটি এখনই কাজ করে ... ক্লাসিক্যাল সিএসএস (যেমন ফ্লেক্সবক্স এবং সিএসএস গ্রিডের আগমনের আগে) পুরোপুরি বিন্যাসে সফল হয় ... ফ্লেক্স এবং গ্রিড নিয়ম :-)
লিও

এটি বর্তমান সময়ের জন্য নির্বাচিত সমাধান হিসাবে গ্রহণ করা উচিত। এছাড়াও, এটি কেবলমাত্র "নন-হ্যাকিশ" সমাধান।
গ্রেগ

এটি আমার দিনটি বাঁচাতে
m

tsbaa (এটি গ্রহণযোগ্য উত্তর হওয়া উচিত)
রিও ২

104

এটি যেহেতু একটি জনপ্রিয় প্রশ্ন, তাই আমি বিএফসি ব্যবহার করে একটি দুর্দান্ত সমাধান ভাগ করে নিতে আগ্রহী।
নীচের কোডেপেন নমুনা এখানে

.left {
  float: left;
  width: 100px;
}
.right {
  overflow: auto;
}

এই ক্ষেত্রে, overflow: autoপ্রসঙ্গের আচরণকে ট্রিগার করে এবং সঠিক উপাদানটি কেবলমাত্র উপলব্ধ অবশিষ্ট প্রস্থে প্রসারিত করে এবং .leftঅদৃশ্য হয়ে গেলে এটি স্বাভাবিকভাবে পুরো প্রস্থে প্রসারিত হবে । অনেকগুলি ইউআই লেআউটগুলির জন্য একটি অত্যন্ত দরকারী এবং পরিষ্কার কৌশল, তবে সম্ভবত প্রথমে "এটি কেন কাজ করে" বোঝা শক্ত।


1
ওভারফ্লো জন্য ব্রাউজার সমর্থন। IE4 !!! w3schools.com/cssref/pr_pos_overflow.asp
ইয়েভেগেনি আফানাসিয়েভ

1
কখনও কখনও আমি। ডাইনেটি উপাদানটিতে একটি অকেজো অনুভূমিক স্ক্রোলবার দিয়ে শেষ করি। সেখানে সমস্যা কী?
প্যাট্রিক জাজালাপস্কি

1
@ পেট্রিকসালাপস্কি আপনি কি কোডপেন তৈরি করতে পারেন বা এর অনুরূপ? ওভারফ্লো autoএর বিষয়বস্তুর উপর নির্ভর করে ট্রিগার করতে পারে। একই প্রভাব পেতে আপনি অন্য কোনও ওভারফ্লো মানও ব্যবহার করতে পারেন, hiddenআপনার ক্ষেত্রে আরও ভাল কাজ করতে পারে।
mystrdat

1
বিএফসি কীসের পক্ষে দাঁড়ায় এবং ওয়েবে বিএফসিকে ব্যাখ্যা করার জন্য একটি ভাল সাধারণ টিউটোরিয়াল নেই?
lulalala

1
@ লুলালাল এটি ব্লক ফর্ম্যাটিং প্রসঙ্গে । এখানে আরো একটি পুঙ্খানুপুঙ্খ এর ব্যাখ্যা
Bobo

23

আপনার যদি নির্দিষ্ট ব্রাউজারগুলির পুরানো সংস্করণগুলির সাথে সামঞ্জস্যতার প্রয়োজন না হয় ( উদাহরণস্বরূপ IE 10 8 বা তার চেয়ে কম) আপনি calc()CSS ফাংশনটি ব্যবহার করতে পারেন :

#left {
   float:left;
   width:180px;
   background-color:#ff0000;
}

#right {
   float: left;
   width: calc(100% - 180px);
   background-color:#00FF00;
}

1
আইই 9 এবং আরও সমর্থন ক্যালকের বৈশিষ্ট্য। এই সমাধানটির একমাত্র সমস্যাটি সম্ভবত আমরা বাম কলামটির প্রস্থ জানি না বা এটি পরিবর্তন হয়।
আরশসফ্ট

ভাল, এই সমাধানটি সম্ভবত একটি নমনীয় কেসকে কেন্দ্র করে তৈরি হয়েছে এবং ধরে নেওয়া যায় যে আপনি জানেন না বা আপনার পিতামাতার ধারকের প্রস্থের যত্ন নেই। প্রশ্নে @ আলেক্সচেঙ্কো বলেছিলেন যে তিনি "অবশিষ্ট স্থান" পূরণ করতে চেয়েছিলেন ... তাই আমি মনে করি বৈধ :) এবং হ্যাঁ, আইই 9 সমর্থনযোগ্য, নোটের জন্য ধন্যবাদ;)
মার্কোস বি

15

@ বোশলির উত্তরটি নিকটতম ছিল, তবে একটি সমস্যা রয়েছে যা উল্লেখ করা হয়নি। অধিকার DIV আছে ব্রাউজারের সমগ্র প্রস্থ নেয়; সামগ্রীটি প্রত্যাশিত প্রস্থ নেয়। এই সমস্যাটি আরও ভালভাবে দেখতে:

<html>
<head>
    <style type="text/css">
    * { margin: 0; padding: 0; }
    body {
        height: 100%;
    }
    #left {
        opacity: 0;
        height: inherit;
        float: left;
        width: 180px;
        background: green;
    }
    #right {
        height: inherit;
        background: orange;
    }
    table {
            width: 100%;
            background: red;
    }
    </style>
</head>
<body>
    <div id="left">
        <p>Left</p>
    </div>
    <div id="right">
        <table><tr><td>Hello, World!</td></tr></table>
    </div>
</body>
</html>

http://jsfiddle.net/79hpS/

সামগ্রীটি সঠিক জায়গায় রয়েছে (ফায়ারফক্সে) তবে প্রস্থটি ভুল। যখন শিশু উপাদানগুলি প্রস্থ উত্তরাধিকার সূচনা করে (যেমন সারণী সহ)width: 100% ) তখন তাদের ব্রাউজারের সমান প্রস্থ দেওয়া হয় যার ফলে তারা পৃষ্ঠার ডানদিকে উপচে পড়ে এবং একটি অনুভূমিক স্ক্রোলবার (ফায়ারফক্সে) তৈরি করে বা ভাসমান না করে ধাক্কা দেয় ( ক্রোমে)।

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

আমি উপরের অন্যান্য কয়েকটি সমাধানের চেষ্টা করেছি, তারা নির্দিষ্ট প্রান্তের মামলার সাথে পুরোপুরি কাজ করেনি এবং এগুলি ঠিক করার পরোয়ানা করতে পেরেছি। এটি কাজ করে এবং এটি সহজ।

যদি কোনও সমস্যা বা উদ্বেগ থাকে তবে এগুলি উত্সাহিত করতে নির্দ্বিধায়।


1
overflow: hiddenপ্রকৃতপক্ষে এটি সংশোধন করে, আপনাকে ধন্যবাদ। (চিহ্নিত উত্তরটি ভুল বিটিডাব্লু হওয়ায় rightবাস্তবে পিতামাতার সমস্ত উপলভ্য জায়গা লাগে, উপাদানগুলি পরিদর্শন করার সময় আপনি এটি সমস্ত ব্রাউজারে দেখতে পাবেন)
হাইজেন্ট্রুউ

1
কেন এটি সঠিকভাবে কাজ করে কেউ ব্যাখ্যা করতে পারেন? আমি জানি আমি এখানে কোথাও একটি ভাল ব্যাখ্যা দেখেছি কিন্তু এটি এটির মতো বলে মনে হচ্ছে না।
tomswift

2
@ টমসউফিট সেটিংটি overflow: hiddenতার নিজের ব্লক বিন্যাস প্রসঙ্গে ডান কলামটি রাখে। ব্লক উপাদানগুলি তাদের জন্য উপলব্ধ সমস্ত অনুভূমিক স্থান গ্রহণ করে। দেখুন: ডেভেলপার.মোজিলা.আর.ইন-
ইউএস / ডকস / ওয়েবে / গুয়াইড / সিএসএস/…

overflow:xxxঅ্যাট্রিবিউট চাবিকাঠি। আপনি যেমনটি বলেছেন, এটি #rightনীচে প্রসারিত হওয়া থেকে বিরত রয়েছে #left। এটি খুব ঝরঝরে সমস্যার সমাধান করে যা আমি jQuery ইউআই রিজিজেবল ব্যবহার করে যাচ্ছিলাম - #rightএকটি ওভারফ্লো বৈশিষ্ট্য সহ সেট করে এবং পুনরায় #leftআকারযুক্ত হিসাবে সেট করা হয়েছে, আপনার একটি সহজ অস্থাবর সীমানা রয়েছে। Jsfiddle.net/kmbro/khr77h0t দেখুন ।
কেব্রো

13

গৃহীত সমাধানের জন্য এখানে একটি সামান্য ফিক্স দেওয়া হয়েছে, যা ডান কলামটি বাম কলামের নীচে পড়তে বাধা দেয়। একটি জটিল সমাধান width: 100%;দিয়ে প্রতিস্থাপন করা হয়েছে overflow: hidden;, যদি কেউ এটি না জানত।

<html>

<head>
    <title>This is My Page's Title</title>
    <style type="text/css">
        #left {
            float: left;
            width: 180px;
            background-color: #ff0000;
        }
        #right {
            overflow: hidden;
            background-color: #00FF00;
        }
    </style>
</head>

<body>
    <div>
        <div id="left">
            left
        </div>
        <div id="right">


right
    </div>
</div>

http://jsfiddle.net/MHeqG/2600/

[সম্পাদনা] তিনটি কলামের বিন্যাসের জন্য একটি উদাহরণও পরীক্ষা করুন: http://jsfiddle.net/MHeqG/3148/


1
স্থির লোগো সহ নমনীয় ন্যাভ বারের জন্য নিখুঁত সমাধান।
ট্রাঙ্ক

5

যদি আপনি 2 টি আইটেমের মধ্যে একটি ফ্লেক্সবক্সে অবশিষ্ট স্থান পূরণ করার চেষ্টা করছেন, নিম্নলিখিত বিভাগটি 2 টি আলাদা করতে চান এমন একটি ফাঁকা ডিভের জন্য যুক্ত করুন:

.fill {
  // This fills the remaining space, by using flexbox. 
  flex: 1 1 auto;
}

4

ব্যবহার display:flex

<div style="width:500px; display:flex">
   <div style="width:150px; height:30px; background:red">fixed width</div>

   <div style="width:100%; height:30px; background:green">remaining</div>
</div>

1
এই উত্তরটি 2014 থেকে জর্ডানের উত্তরের সদৃশ।
টাইলার এইচ

3

বুশলির উত্তরটি ভাসমানগুলির সাহায্যে এটি সাজানোর জন্য সবচেয়ে ভাল উপায় বলে মনে হয়। যাইহোক, এটি এর সমস্যা ছাড়াই নয়। প্রসারিত উপাদানটির মধ্যে নেস্টেড ভাসমান আপনার জন্য উপলব্ধ হবে না; এটি পৃষ্ঠাটি ভেঙে দেবে।

মূলত প্রদর্শিত পদ্ধতিটি যখন "প্রসারিত" হয় যখন এটি প্রসারণকারী উপাদানটির কথা আসে - এটি আসলে ভাসমান নয়, এটি কেবল তার প্রান্তিক প্রান্তটি ব্যবহার করে স্থির-প্রস্থের ভাসমান উপাদানগুলির সাথে খেলছে।

তখন সমস্যাটি হ'ল: সম্প্রসারক উপাদানটি ভাসমান নয়। যদি আপনি প্রসারণকারী উপাদানটির মধ্যে কোনও নেস্টেট ভাসমান চেষ্টা করেন এবং সেই "নেস্টেড" ভাসমান আইটেমগুলি আসলেই বাসা বাঁধে না; আপনি যখন লাঠির চেষ্টা করবেনclear: both; আপনার "নেস্টেড" ভাসমান আইটেমগুলির নীচে , আপনি শীর্ষ স্তরের ফ্লোটগুলিও সাফ করবেন।

তারপরে, বোশলির সমাধানটি ব্যবহার করতে, আমি যুক্ত করতে চাই যে আপনার নীচের মতো একটি ডিভ স্থাপন করা উচিত: .ফেকফ্লোট {উচ্চতা: 100%; প্রস্থ: 100%; ভাসা: বাম; } এবং এটি প্রসারিত ডিভের মধ্যে সরাসরি রাখুন; সমস্ত প্রসারিত ডিভের সামগ্রীগুলি এই নকলফ্লোট উপাদানটির মধ্যে থাকা উচিত।

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


বিন্যাসের জন্য সারণী ব্যবহার করবেন না। আপনি তাদের উচ্চতা নির্ধারণ করতে পারবেন না। তারা তাদের বিষয়বস্তু ধরে রাখতে প্রসারিত করে এবং তারা অতিরিক্ত প্রবাহকে সম্মান দেয় না।
kbro

@ কেব্রো: বিন্যাসের জন্য সারণীগুলি ব্যবহার করবেন না কারণ সামগ্রী এবং প্রদর্শন পৃথক রাখা উচিত। তবে যদি বিষয়বস্তুটি একটি টেবিল হিসাবে কাঠামোগত হয় তবে তা অবশ্যই ক্লিপ করা যায় overflow: hiddenjsfiddle.net/dave2/a5jbpc85
ডেভ

3

আমি তরল বাম জন্য উপরের সমাধানগুলি চেষ্টা করেছিলাম, এবং একটি স্থির ডান তবে সেগুলি ব্যবহার না করে (আমি সচেতন রয়েছি যে প্রশ্নটি বিপরীতে রয়েছে তবে আমি মনে করি এটি প্রাসঙ্গিক)। এখানে কি কাজ করেছে:

.wrapper {margin-right:150px;}
.wrapper .left {float:left; width:100%; margin-right:-150px;}

.right {float:right; width:150px;}

<div class="wrapper"><div class="left"></div></div>
<div class="right"></div>

3

আমারও অনুরূপ সমস্যা হয়েছিল এবং আমি সমাধানটি এখানে পেয়েছি: https://stackoverflow.com/a/16909141/3934886

সমাধানটি একটি নির্দিষ্ট কেন্দ্র ডিভ এবং তরল পাশের কলামগুলির জন্য।

.center{
    background:#ddd;
    width: 500px;
    float:left;
}

.left{
    background:#999;
    width: calc(50% - 250px);
    float:left;
}

.right{
    background:#999;
    width: calc(50% - 250px);
    float:right;
}

আপনি যদি একটি স্থির বাম কলাম চান তবে কেবল সেই সূত্রটি পরিবর্তন করুন।


আইআই 8 এর মতো কিছু পুরানো ব্রাউজারগুলিতে এবং কেবলমাত্র আইই 9 তে ( ক্যানিউজ.com / #feat=calc ) উপলভ্য নয়
landi

2

আপনি গ্রিড সিএসএস বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন, এটি আপনার বাক্সগুলির সর্বাধিক স্পষ্ট, পরিষ্কার এবং স্বজ্ঞাত উপায় structure

#container{
    display: grid;
    grid-template-columns: 100px auto;
    color:white;
}
#fixed{
  background: red;
  grid-column: 1;
}
#remaining{
  background: green;
  grid-column: 2;
}
<div id="container">
  <div id="fixed">Fixed</div>
  <div id="remaining">Remaining</div>
</div>


1

আমি আশ্চর্য যে কেউ এর position: absoluteসাথে ব্যবহার করেনিposition: relative

সুতরাং, অন্য সমাধানটি হ'ল:

এইচটিএমএল

<header>
  <div id="left"><input type="text"></div>
  <div id="right">Menu1 Menu2 Menu3</div>
</header>

সিএসএস

header { position: relative;  }
#left {
    width: 160px;
    height: 25px;
}
#right {
    position: absolute;
    top: 0px;
    left: 160px;
    right: 0px;
    height: 25px;
}

জেসফিডাল উদাহরণ


0

/ * * সিএসএস * /

#search {
 position: absolute;
 width: 100px;
}
.right-wrapper {
  display: table;
  width: 100%;
  padding-left:100px;
}
.right-wrapper #navigation {
 display: table-cell;
 background-color: #A53030;
}

/ * * এইচটিএমএল * /

<div id="search"></div>
<div class="right-wrapper">
   <div id="navigation"></div>
</div>

0

আমি এই জন্য খুব সহজ সমাধান আছে! // এইচটিএমএল

<div>
<div id="left">
    left
</div>
<div id="right">
    right
</div>

// সিএসএস

#left {
float:left;
width:50%;
position:relative;
background-color:red;
}
#right {
position:relative;
background-color:#00FF00;}

লিঙ্ক: http://jsfiddle.net/MHeqG/


0

আমারও একই রকম সমস্যা ছিল এবং নিম্নলিখিতটিটি কার্যকর হয়েছিল যা ভাল কাজ করেছে

সিএসএস:

.top {
width: auto;
height: 100px;
background-color: black;
border: solid 2px purple;
overflow: hidden;
}
.left {
float:left;
width:100px;
background-color:#ff0000;
padding: 10px;
border: solid 2px black;
}
.right {
width: auto;
background-color:#00FF00;
padding: 10px;
border: solid 2px orange;
overflow: hidden;
}
.content {
margin: auto;
width: 300px;
min-height: 300px;
padding: 10px;
border: dotted 2px gray;
}

এইচটিএমএল:

<div class=top>top </div>
<div>
    <div class="left">left </div>
    <div class="right">
        <div class="content">right </div>
    </div>
</div>

উইন্ডো সঙ্কুচিত হয়ে গেলে এই পদ্ধতিটি মোড়ানো হবে না তবে স্বয়ংক্রিয়ভাবে 'সামগ্রী' অঞ্চল প্রসারিত করবে। এটি সাইটের মেনু (বাম) জন্য একটি স্থির প্রস্থ রাখবে।

এবং কন্টেন্ট বাক্স এবং বাম উল্লম্ব বাক্স (সাইট মেনু) ডেমোটি স্বয়ংক্রিয়ভাবে প্রসারিত করার জন্য:

https://jsfiddle.net/tidan/332a6qte/


0

অবস্থান যুক্ত করার চেষ্টা করুন relative, অপসারণ widthএবং floatডান পাশের বৈশিষ্ট্য, তারপরে যুক্ত leftএবং rightসম্পত্তি যুক্ত করুন0 মান।

এছাড়াও, আপনি margin leftমানটি দিয়ে বাম উপাদানটির প্রস্থের উপর ভিত্তি করে নিয়ম যুক্ত করতে পারেন (যদি আপনার মাঝে স্থানের প্রয়োজন হয় তবে কিছু পিক্সেল) এটির অবস্থান বজায় রাখার জন্য ।

এই উদাহরণটি আমার পক্ষে কাজ করছে:

   #search {
        width: 160px;
        height: 25px;
        float: left;
        background-color: #FFF;
    }

    #navigation {  
        display: block;  
        position: relative;
        left: 0;
        right: 0;
        margin: 0 0 0 166px;             
        background-color: #A53030;
    }

0

.container {
  width:100%;
  display:table;
  vertical-align:middle;
}

.left {
  width:100%;
  display:table-cell;
  text-align:center;
}

.right {
  width:40px;
  height:40px;
  display:table-cell;
  float:right;
}
<div class="container">
  <div class="left">Left</div>
  <div class="right">Right</div>
</div

এটা চেষ্টা কর. এটা আমার জন্য কাজ করেছে।


0

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

এখানে কোড দেওয়া আছে

// Fix the width of the right side to cover the screen when resized
$thePageRefreshed = true;
// The delay time below is needed to insure that the resize happens after the window resize event fires
// In addition the show() helps.  Without this delay the right div may go off screen when browser is refreshed 
setTimeout(function(){
    fixRightSideWidth();
    $('.right_content_container').show(600);
}, 50);

// Capture the window resize event (only fires when you resize the browser).
$( window ).resize(function() {
    fixRightSideWidth();
});

function fixRightSideWidth(){
    $blockWrap = 300; // Point at which you allow the right div to drop below the top div
    $normalRightResize = $( window ).width() - $('.left_navigator_items').width() - 20; // The -20 forces the right block to fall below the left
    if( ($normalRightResize >= $blockWrap) || $thePageRefreshed == true ){
        $('.right_content_container').width( $normalRightResize );
        $('.right_content_container').css("padding-left","0px");
        
        /* Begin test lines these can be deleted */
        $rightrightPosition = $('.right_content_container').css("right");
        $rightleftPosition = $('.right_content_container').css("left");
        $rightwidthPosition = $('.right_content_container').css("width");
        $(".top_title").html('window width: '+$( window ).width()+"&nbsp;"+'width: '+$rightwidthPosition+"&nbsp;"+'right: '+$rightrightPosition);
        /* End test lines these can be deleted */
    
    
    }
    else{
        if( $('.right_content_container').width() > 300 ){
            $('.right_content_container').width(300);
        }
        
        /* Begin test lines these can be deleted */
        $rightrightPosition = $('.right_content_container').css("right");
        $rightleftPosition = $('.right_content_container').css("left");
        $rightwidthPosition = $('.right_content_container').css("width");
        $(".top_title").html('window width: '+$( window ).width()+"&nbsp;"+'width: '+$rightwidthPosition+"&nbsp;"+'right: '+$rightrightPosition);
        /* End test lines these can be deleted */
    
    }
    if( $thePageRefreshed == true ){
        $thePageRefreshed = false;
    }
}
/* NOTE: The html and body settings are needed for full functionality
and they are ignored by jsfiddle so create this exapmle on your web site
*/
html {
    min-width: 310px;
    background: #333;
    min-height:100vh;
}

body{
	background: #333;
	background-color: #333;
	color: white;
    min-height:100vh;
}

.top_title{
  background-color: blue;
  text-align: center;
}

.bottom_content{
	border: 0px;
	height: 100%;
}

.left_right_container * {
    position: relative;
    margin: 0px;
    padding: 0px;
    background: #333 !important;
    background-color: #333 !important;
    display:inline-block;
    text-shadow: none;
    text-transform: none;
    letter-spacing: normal;
    font-size: 14px;
    font-weight: 400;
    font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
    border-radius: 0;
    box-sizing: content-box;
    transition: none;
}

.left_navigator_item{
	display:inline-block;
	margin-right: 5px;
	margin-bottom: 0px !important;
	width: 100%;
	min-height: 20px !important;
	text-align:center !important;
	margin: 0px;
	padding-top: 3px;
	padding-bottom: 3px;
	vertical-align: top;
}

.left_navigator_items {
    float: left;
    width: 150px;
}

.right_content_container{
    float: right;
    overflow: visible!important;
    width:95%; /* width don't matter jqoery overwrites on refresh */
    display:none;
    right:0px;
}

.span_text{
	background: #eee !important;
	background-color: #eee !important;
	color: black !important;
	padding: 5px;
	margin: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="top_title">Test Title</div>
<div class="bottom_content">
    <div class="left_right_container">
        <div class="left_navigator_items">
            <div class="left_navigator_item">Dashboard</div>
            <div class="left_navigator_item">Calendar</div>
            <div class="left_navigator_item">Calendar Validator</div>
            <div class="left_navigator_item">Bulletin Board Slide Editor</div>
            <div class="left_navigator_item">Bulletin Board Slide Show (Live)</div>
            <div class="left_navigator_item">TV Guide</div>
        </div>
        <div class="right_content_container">
            <div class="span_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ullamcorper maximus tellus a commodo. Fusce posuere at nisi in venenatis. Sed posuere dui sapien, sit amet facilisis purus maximus sit amet. Proin luctus lectus nec rutrum accumsan. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut fermentum lectus consectetur sapien tempus molestie. Donec bibendum pulvinar purus, ac aliquet est commodo sit amet. Duis vel euismod mauris, eu congue ex. In vel arcu vel sem lobortis posuere. Cras in nisi nec urna blandit porta at et nunc. Morbi laoreet consectetur odio ultricies ullamcorper. Suspendisse potenti. Nulla facilisi.

Quisque cursus lobortis molestie. Aliquam ut scelerisque leo. Integer sed sodales lectus, eget varius odio. Nullam nec dapibus lorem. Aenean a mattis velit, ut porta nunc. Phasellus aliquam volutpat molestie. Aliquam tristique purus neque, vitae interdum ante aliquam ut.

Pellentesque quis finibus velit. Fusce ac pulvinar est, in placerat sem. Suspendisse nec nunc id nunc vestibulum hendrerit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris id lectus dapibus, tempor nunc non, bibendum nisl. Proin euismod, erat nec aliquet mollis, erat metus convallis nulla, eu tincidunt eros erat a lectus. Vivamus sed mattis neque. In vitae pellentesque mauris. Ut aliquet auctor vulputate. Duis eleifend tincidunt gravida. Sed tincidunt blandit tempor.

Duis pharetra, elit id aliquam placerat, nunc arcu interdum neque, ac luctus odio felis vitae magna. Curabitur commodo finibus suscipit. Maecenas ut risus eget nisl vehicula feugiat. Sed sed bibendum justo. Curabitur in laoreet dolor. Suspendisse eget ligula ac neque ullamcorper blandit. Phasellus sit amet ultricies tellus.

In fringilla, augue sed fringilla accumsan, orci eros laoreet urna, vel aliquam ex nulla in eros. Quisque aliquet nisl et scelerisque vehicula. Curabitur facilisis, nisi non maximus facilisis, augue erat gravida nunc, in tempus massa diam id dolor. Suspendisse dapibus leo vel pretium ultrices. Sed finibus dolor est, sit amet pharetra quam dapibus fermentum. Ut nec risus pharetra, convallis nisl nec, tempor nisl. Vivamus sit amet quam quis dolor dapibus maximus. Suspendisse accumsan sagittis ligula, ut ultricies nisi feugiat pretium. Cras aliquam velit eu venenatis accumsan. Integer imperdiet, eros sit amet dignissim volutpat, tortor enim varius turpis, vel viverra ante mauris at felis. Mauris sed accumsan sapien. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut vel magna commodo, facilisis turpis eu, semper mi. Nulla massa risus, bibendum a magna molestie, gravida maximus nunc.</div>
        </div>
    </div>
</div>

এখানে আমার মূর্খতা আপনার জন্য যেমন কাজ করতে পারে ঠিক তেমনি এটি আমার পক্ষেও হয়েছিল। https://jsfiddle.net/Larry_Robertson/62LLjapm/


0

আইটেম এবং পাত্রে নিয়ম;

Container: {*** display: table; ***}
Items: {*** display: table-cell; width: 100%; ***}

হোয়াইট স্পেস ব্যবহার করুন : Nowrap;তাদের অবকাঠামোগত জন্য শেষ আইটেম টেক্সট জন্য।

আইটেম এক্স% | আইটেম ওয়াই% | আইটেম জেড%

সর্বমোট দৈর্ঘ্য = 100%!

যদি

Item X=50%
Item Y=10%
Item z=20%

তারপর

আইটেম এক্স = 70%

আইটেম এক্স প্রভাবশালী (প্রথম আইটেমগুলি টেবিল সিএসএস লেআউটে প্রভাবশালী)!

সর্বাধিক বিষয়বস্তু চেষ্টা করুন ; ধারক মধ্যে ডিভ ছড়িয়ে জন্য ভিতরে ভিতরে ডিভ জন্য সম্পত্তি:

div[class="item"] {
...
  width: -webkit-max-content;
  width: -moz-max-content;
  width: max-content;
...

}


0

মার্জিন ব্যবহার করা সবচেয়ে সহজ সমাধান। এটিও প্রতিক্রিয়াশীল হবে!

<div style="margin-right: auto">left</div>
<div style="margin-left: auto; margin-right:auto">center</div>
<div style="margin-left: auto">right</div>

0

সহজ সমাধানটি হ'ল বাম ডিভ প্রস্থকে 100% সমান করা - ডান ডিভের প্রস্থ এবং এর মধ্যে কোনও মার্জিনের প্রস্থ।

<div class="cont">
  <div class="search">
    Big Logo Text
  </div>
  <nav>
    <ul class="navbar">
      <li><a href="#1">NavLink1</a></li>
      <li><a href="#2">NavLink2</a></li>
      <li><a href="#3">NavLink3</a></li>
      <li><a href="#4">NavLink4</a></li>
      <li><a href="#5">NavLink5</a></li>
    </ul>
  </nav>
</div>

.cont{
  display: inline-grid;
  grid-template-columns: 160px 10px calc(100% - 170px);
  grid-template-rows: auto;
  grid-template-areas: "search .  navigation";
  width: 100%;
  height: auto;
  text-align: center;
}

.search {
  grid-area: search;
  height: 90px;
  background-color: #00FF00;
  line-height: 80px;
  font-size: 1.4rem;
  font-weight: 600;
}
nav {
  grid-area: navigation;
  height: 90px;
  background-color: #A53030;
}

.navbar{
  display: flex;
  height: 30px;
  width: 100%;
  padding: 0%;
  list-style-type: none;
  flex-flow: row wrap;
  flex: 0 1 auto;
  justify-content: space-between;
  align-content: flex-start;
  align-items: flex-start;
}

.navbar a{
    outline: 0;
    text-decoration: none;
}

https://codepen.io/tamjk/pen/dybqKBN


-2

কিছু jqueryUI নিয়ন্ত্রণ লেআউট করার চেষ্টা করে আমি এই একই সমস্যায় পড়েছি । যদিও এখন সাধারণ দর্শন " DIVপরিবর্তে ব্যবহার"TABLE , আমি আমার ক্ষেত্রে টেবিল ব্যবহার করে আরও ভাল কাজ করেছি worked বিশেষত, যদি দুটি উপাদানগুলির মধ্যে আপনার সরাসরি প্রান্তিককরণের প্রয়োজন হয় (যেমন, উল্লম্ব কেন্দ্রীকরণ, অনুভূমিক কেন্দ্রীকরণ ইত্যাদি) এর সাথে টেবিলের সাথে উপলব্ধ অপশনগুলি সহজ, স্বজ্ঞাত নিয়ন্ত্রণ দেয় controls

এখানে আমার সমাধান:

<html>
<head>
  <title>Sample solution for fixed left, variable right layout</title>
  <style type="text/css">
    #controls {
      width: 100%;
    }
    #RightSide {
      background-color:green;
    }
  </style>
</head>

<body>
<div id="controls">
  <table border="0" cellspacing="2" cellpadding="0">
    <TR>
      <TD>
        <button>
FixedWidth
        </button>
      </TD>
      <TD width="99%" ALIGN="CENTER">
        <div id="RightSide">Right</div>
      </TD>
    </TR>
  </table>
</div>
</body>
</html>

9
ট্যাবুলার ডেটা ব্যতীত অন্য কোনও ফর্ম্যাট করার জন্য আপনার কখনই সারণী ব্যবহার করা উচিত নয়। কখনোই না।
মিমিফ

1
সারণীগুলির সাথে সমস্যাটি হ'ল মার্কআপটি বিভ্রান্তিকর হবে যদি আপনি প্রদর্শন করার চেষ্টা করছেন তা টেবুলার ডেটা নয়। আপনি মার্কআপ বহন অর্থ নীতি অবহেলা যেতে চান, ভাল হিসাবে আপনি ফিরে পেতে পারে <font>, <b>ইত্যাদি এইচটিএমএল বিবর্ধিত অতীত উপস্থাপনা কম ফোকাস।
ভিলিনকামেনি

4
জানেন না কেন সবাই টেবিলগুলি সম্পর্কে ফ্রি আউট করে। কখনও কখনও তারা দরকারী।
জ্যান্ডিগ

আপনি কোনও টেবিলের উচ্চতা ঠিক করতে পারবেন না। যদি বিষয়বস্তু বড় হয়ে যায় তবে টেবিলটিও তাই করে। এবং এটি সম্মান দেয় নাoverflow
kbro

@ জ্যান্ডিগ: ব্যাখ্যার জন্য মিহাই ফ্রেঞ্চিউর উত্তর দেখুন। সিএসএসের পুরো উদ্দেশ্য হ'ল সামগ্রীকে চেহারা থেকে আলাদা করা। display:tableঅ-ট্যাবুলার ডেটার পছন্দসই চেহারা অর্জন করতে বৈশিষ্ট্যগুলি ব্যবহার করা পরিষ্কার। পৃষ্ঠার কলাম বা ফর্ম নিয়ন্ত্রণগুলির মতো লেবুচিহীন তথ্য লেআউটটিকে নিয়ন্ত্রণের জন্য এইচটিএমএল টেবিলগুলিতে জোর দেওয়া অশুচি।
ডেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.