সিএসএস ব্যবহার করে ডিভকে 2 টি কলামে বিভক্ত করুন


90

আমি সিএসএস ব্যবহার করে একটি ডিভকে দুটি কলামে বিভক্ত করার চেষ্টা করছি, তবে এখনও এটি কাজ করতে সক্ষম হইনি। আমার প্রাথমিক কাঠামোটি নিম্নরূপ:

<div id="content">
  <div id="left">
     <div id="object1"></div>
     <div id="object2"></div>
  </div>

  <div id="right">
     <div id="object3"></div>
     <div id="object4"></div>
  </div>
</div>

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

কোন সাহায্যের জন্য ধন্যবাদ!


4
: এত সমাধান আছে, আপনি তা দেখতে পাবেন stackoverflow.com/questions/211383/...
enmaai

উত্তর:


60

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

<br style="clear:both;"/>

# ডাইভ ডিভের পরে কিন্তু কনটেন্ট ডিভের ভিতরে। এটি কনটেন্ট ডিভকে দুটি অভ্যন্তরীণ, ভাসমান ডিভগুলি ঘিরতে বাধ্য করবে।


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

91

এটি আমার পক্ষে ভাল কাজ করে। আমি স্ক্রিনটিকে দুটি অর্ধে বিভক্ত করেছি: 20% এবং 80%:

<div style="width: 20%; float:left">
   #left content in here
</div>

<div style="width: 80%; float:right">
   #right content in there
</div>

4
আপনি যদি যা কিছু করেন তবে এই উপাদানগুলির পিতামাতার কোনও উচ্চতা থাকবে না।
tybro0103

সহজ এবং কার্যকর। ধন্যবাদ!
অ্যালেক্সিস গামারা

47

এটি করার আরেকটি উপায় হ'ল overflow:hidden;ভাসমান উপাদানগুলির মূল উপাদান যুক্ত করা।

ওভারফ্লো: লুকানো উপাদানটি ভাসমান উপাদানের সাথে মানানসই করে তুলবে।

এইভাবে, এটি অন্য কোনও এইচটিএমএল উপাদান যুক্ত করার পরিবর্তে CSS এ করা যেতে পারে।


4
আমি আমার অন্যান্য উত্তরগুলিও পরীক্ষা করতে পাঠকদের উত্সাহিত করব। আমি মনে করি এটি আসলে এটির চেয়ে ভাল।
tybro0103

4
আরও একটি দ্রষ্টব্য: overflow:auto;কখনও কখনও আরও ভাল বিকল্প হতে পারে
tybro0103

এটি অবশ্যই কার্যকর উপায়। তবে, এটি উল্লেখযোগ্য যে এটি কিছু সুস্পষ্ট বিন্যাস চ্যালেঞ্জ তৈরি করতে পারে। উদাহরণস্বরূপ, যদি আমি চাই তবে আমার পিতামাতার উপাদানগুলির ওভারফ্লো দৃশ্যমান হোক।
Jbird

16

এটি করার সবচেয়ে নমনীয় উপায়:

#content::after {
  display:block;
  content:"";
  clear:both;
}

এটি # কনটেমেটে উপাদান যুক্ত করার মতোই কাজ করে:

<br style="clear:both;"/>

কিন্তু আসলে একটি উপাদান যোগ না করে। :: পরে সিউডো উপাদান বলা হয়। এটি overflow:hidden;# বিষয়বস্তুতে যুক্ত করার চেয়ে ভাল কারণ হ'ল আপনার নিখুঁত অবস্থানযুক্ত শিশু উপাদানগুলি ওভারফ্লো হতে পারে এবং এখনও দৃশ্যমান হতে পারে। এছাড়াও এটি বাক্স-ছায়াটিকে এখনও দৃশ্যমান হতে দেবে।


এছাড়াও একটি দুর্দান্ত সমাধান, তবে এটি এখানে উল্লেখ করা দরকার যে এটি আই 8-তে কাজ করে না। এটি বলতে পেরে আমি সত্যিই কষ্ট পাই এবং আমি "সেই লোক" হওয়ার জন্য ক্ষমা চাইছি।
Jbird

@ জবার্ড চেষ্টা করুন #content:after(দু'জনের পরিবর্তে কেবল একটি কোলন) ... যদি আমি সঠিকভাবে স্মরণ করি তবে সিউডো উপাদানগুলির জন্য দুটি কলোন ব্যবহার করা আরও যথাযথ older ... বা এর মতো কিছু - আমি যে সমস্যাটি মোকাবেলা করেছি তার বেশ কিছুটা সময়।
tybro0103

13

প্রদত্ত উত্তরের কোনওটিই মূল প্রশ্নের উত্তর দেয় না।

প্রশ্নটি কীভাবে CSS ব্যবহার করে একটি ডিভকে 2 টি কলামে আলাদা করা যায়।

উপরের সমস্ত উত্তর 2 টি কলামের অনুকরণ করার জন্য 2 টি ভাগকে একটি একক ডিভের মধ্যে এম্বেড করে। এটি একটি খারাপ ধারণা কারণ আপনি কোনও গতিশীল ফ্যাশনে 2 টি কলামে সামগ্রী প্রবাহিত করতে পারবেন না।

সুতরাং, উপরের পরিবর্তে সিএসএস ব্যবহার করে 2 টি কলাম ধারণ করতে সংজ্ঞায়িত এমন একক ডিভ ব্যবহার করুন ...

.two-column-div {
 column-count: 2;
}

উপরোক্তটিকে একটি ডিভ হিসাবে শ্রেণি হিসাবে নির্ধারণ করুন এবং এটি আসলে এর কন্টেন্টগুলিকে 2 টি কলামে প্রবাহিত করবে। আপনি আরও যেতে পারেন এবং মার্জিনের মধ্যে ফাঁকগুলিও সংজ্ঞায়িত করতে পারেন। ডিভের বিষয়বস্তুর উপর নির্ভর করে আপনার বিরতি মান শব্দের সাথে জগাখিচির দরকার হতে পারে যাতে আপনার সামগ্রীটি কলামগুলির মধ্যে কাটা না যায়।


9

যে কারণেই আমি ক্লিয়ারিং পন্থাগুলি কখনই পছন্দ করি না, আমি এর মতো জিনিসের জন্য ভাসমান এবং শতাংশের প্রশস্ততার উপর নির্ভর করি।

এখানে এমন কিছু বিষয় যা সাধারণ ক্ষেত্রে কাজ করে:

#content { 
  overflow:auto; 
  width: 600px; 
  background: gray; 
} 

#left, #right { 
  width: 40%; 
  margin:5px; 
  padding: 1em; 
  background: white; 
} 

#left  { float:left;  }
#right { float:right; } 

আপনি যদি কিছু বিষয়বস্তু রাখেন তবে আপনি দেখতে পাবেন যে এটি কাজ করে:

<div id="content">
  <div id="left">
     <div id="object1">some stuff</div>
     <div id="object2">some more stuff</div>
  </div>

  <div id="right">
     <div id="object3">unas cosas</div>
     <div id="object4">mas cosas para ti</div>
  </div>
</div>

আপনি এটি এখানে দেখতে পারেন: http://cssdesk.com/d64uy


8

বাচ্চাদের ডিভগুলি করুন inline-blockএবং তারা পাশাপাশি থাকবেন:

#content {
   width: 500px;
   height: 500px;
}

#left, #right {
    display: inline-block;
    width: 45%;
    height: 100%;
}

ডেমো দেখুন


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

4

আমি জানি এই পোস্টটি পুরানো, তবে আপনার যদি এখনও কেউ একটি সহজ সমাধান খুঁজছেন।

#container .left,
#container .right {
    display: inline-block;
}

#container .left {
    width: 20%;
    float: left;
}
#container .right {
    width: 80%;
    float: right;
}

3

উল্লম্বভাবে একটি ডিভ ভাগ করার সর্বোত্তম উপায় -

#parent {
    margin: 0;
    width: 100%;
}
.left {
    float: left;
    width: 60%;
}
.right {
    overflow: hidden;
    width: 40%;
}

3

আপনার ডিভ উপাদানটির বিন্যাস নিয়ন্ত্রণ করতে আপনি ফ্লেক্সবক্স ব্যবহার করতে পারেন :

* { box-sizing: border-box; }

#content {
  background-color: rgba(210, 210, 210, 0.5);
  border: 1px solid #000;
  padding: 0.5rem;
  display: flex;
}

#left,
#right {
  background-color: rgba(10, 10, 10, 0.5);
  border: 1px solid #fff;
  padding: 0.5rem;
  flex-grow: 1;
  color: #fff;
}
<div id="content">
  <div id="left">
     <div id="object1">lorem ipsum</div>
     <div id="object2">dolor site amet</div>
  </div>

  <div id="right">
     <div id="object3">lorem ipsum</div>
     <div id="object4">dolor site amet</div>
  </div>
</div>


4
মিলিয়ন মিলিয়ন অনুরূপ প্রচেষ্টাগুলির মধ্যে, আমি দেখতে পেয়েছি যে এটি সেরা কাজ করেছে (এখন অবধি)। আমি খুঁজে পাওয়া অন্যান্য সমস্ত (এবং চেষ্টা করা) সামগ্রীতে ওভারফ্লো করতে দেয় । অনেক ধন্যবাদ.
ব্যবহারকারী 12379095

1

ফ্লোটগুলি প্রবাহকে প্রভাবিত করে না। আমি কি করতে ঝোঁক এটি যুক্ত করা হয়

<p class="extro" style="clear: both">possibly some content</p>

'মোড়ানো ডিভ' এর শেষে (এই ক্ষেত্রে সামগ্রী)। এটিকে অনুচ্ছেদের প্রয়োজন হতে পারে বলে আমি এই শব্দার্থক ভিত্তিতে ন্যায়সঙ্গত করতে পারি। আরেকটি পদ্ধতির একটি ক্লিয়ারফিক্স সিএসএস ব্যবহার করা হয়:

#content:after {
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}

#content {
  display: inline-block;
}
/*  \*/
* html #content {
  height: 1%;
}

#content {
  display: block;
}
/*  */

মন্তব্যগুলির সাথে কৌশলগুলি ক্রস ব্রাউজারের সামঞ্জস্যের জন্য।


0

এখানে সেরা উত্তর দেওয়া হয়েছে প্রশ্ন 211383

আজকাল, কোনও স্ব-সম্মানিত ব্যক্তির ক্লিয়ারিং ফ্লোটগুলির বিবৃত "মাইক্রো-ক্লিয়ারফিক্স" পদ্ধতির ব্যবহার করা উচিত।


0
  1. প্যারেন্ট ডিআইভিতে ফন্টের আকার শূন্যের সমান করুন।
  2. প্রতিটি শিশু ডিআইভির জন্য প্রস্থ% নির্ধারণ করুন।

    #content {
        font-size: 0;
    }
    
    #content > div {
        font-size: 16px;
        width: 50%;
    }
    

* সাফারিতে আপনাকে এটি কার্যকর করতে 49% নির্ধারণ করতে হতে পারে।


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

0

দুটি কলামে একটি বিভাগ বিভক্ত করা খুব সহজ, আপনি যদি এটি (প্রস্থ: 50% এর মতো) রাখেন তবে আপনার কলামের প্রস্থটি আরও ভালভাবে সুনির্দিষ্ট করুন এবং বাম কলামের জন্য বাম এবং বাম ভাসা: ডান কলামের জন্য ডানদিকে স্থাপন করুন।


প্রাসঙ্গিক ট্যাগ সহ আরও কিছু তথ্য যুক্ত করুন।
আমান গার্গ

আশা করি এই কোডটি আপনাকে এটি আরও ভাল উপায়ে বুঝতে সহায়তা করবে; @ আমানগার্গ সিএসএস: #column { overflow:auto; width: 100%; } #column50pleft, #column50pright{ width: 49%; margin:2px; padding: 0.5%; background: white; } #column50pleft { float:left; } #column50pright { float:right; } HTML: <div id="column"> <div id="column50pleft"> </div> <div id="column50pright"> </div> </div>
রশিদ জোড়ভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.