উত্তর:
আপনি আপনার আইটেমগুলি রাখার জন্য ফ্লেক্সবক্স ব্যবহার করতে পারেন :
#parent {
display: flex;
}
#narrow {
width: 200px;
background: lightblue;
/* Just so it's visible */
}
#wide {
flex: 1;
/* Grow to rest of container */
background: lightgreen;
/* Just so it's visible */
}
<div id="parent">
<div id="wide">Wide (rest of width)</div>
<div id="narrow">Narrow (200px)</div>
</div>
এটি মূলত ফ্লেক্সবক্সের পৃষ্ঠকেই স্ক্র্যাপ করছে। ফ্লেক্সবক্স বেশ আশ্চর্যজনক জিনিস করতে পারে।
পুরানো ব্রাউজার সমর্থনের জন্য, আপনি এটি সমাধানের জন্য সিএসএস ফ্লোট এবং প্রস্থের বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন ।
#narrow {
float: right;
width: 200px;
background: lightblue;
}
#wide {
float: left;
width: calc(100% - 200px);
background: lightgreen;
}
<div id="parent">
<div id="wide">Wide (rest of width)</div>
<div id="narrow">Narrow (200px)</div>
</div>
float:left
? আমার উত্তরে আপনার মন্তব্যে বলা হয়েছে যে 'বাম দিকের সমস্ত অংশটি স্প্যান্ট লেফট ডিভের প্রয়োজন হয়', তবে float:left
এটি সামগ্রীটিকে শক্তভাবে মোড়ানোর কারণ করবে।
আমি জানি না এটি এখনও একটি বর্তমান সমস্যা কিনা না তবে আমি কেবল একই সমস্যার মুখোমুখি হয়েছি এবং সিএসএস display: inline-block;
ট্যাগ ব্যবহার করেছি । এগুলি একটি ডিভের মধ্যে মোড়ানো যাতে তারা যথাযথভাবে অবস্থান করতে পারে।
<div>
<div style="display: inline-block;">Content1</div>
<div style="display: inline-block;">Content2</div>
</div>
নোট করুন যে ইনলাইন শৈলীর বৈশিষ্ট্যটির ব্যবহার কেবলমাত্র এই উদাহরণটির সংক্ষিপ্ততার জন্যই ব্যবহৃত হয়েছিল অবশ্যই এগুলি ব্যবহৃত হয়েছিল একটি বাহ্যিক সিএসএস ফাইলে স্থানান্তরিত।
width
আমার সমস্ত 2 ডিভের সম্পত্তি একে অপরের পাশে সেট করতে পেরেছিলাম যাতে দ্বিতীয়টিকে একটি নতুন লাইনে আবদ্ধ করতে না পারে ।
দুর্ভাগ্যক্রমে, এটি সাধারণ ক্ষেত্রে সমাধান করা তুচ্ছ বিষয় নয়। সবচেয়ে সহজ জিনিসটি হ'ল একটি CSS-শৈলীর বৈশিষ্ট্য যুক্ত করা "ভাসা: অধিকার;" আপনার 200 পিএক্স ডিভিউতে যাইহোক, এটি আপনার "মূল" -ডাইভকে প্রকৃতপক্ষে পুরো প্রস্থের কারণ হতে পারে এবং সেখানে যে কোনও পাঠ্য 200px-div এর প্রান্তে প্রায়শই ভেসে উঠবে, যা সামগ্রীটির উপর নির্ভর করে প্রায়শই অদ্ভুত দেখায় (বেশ কিছুটা সমস্ত ক্ষেত্রে এটি কোনও ভাসমান চিত্র ব্যতীত)।
সম্পাদনা: ডমের পরামর্শ অনুসারে, মোড়কের সমস্যা অবশ্যই মার্জিন দিয়ে সমাধান করা যেতে পারে। বোকা আমাকে।
@Ro এবং @ মোহিতনান্দা দ্বারা প্রস্তাবিত পদ্ধতিটি কাজ করে, তবে যদি ডান ডিভটি সেট করা থাকে float:right;
তবে অবশ্যই এটি HTML উত্সে প্রথমে আসতে হবে। এটি বাম থেকে ডান পড়ার ক্রম ভঙ্গ করে, যা পৃষ্ঠাটি শৈলীগুলি বন্ধ করে প্রদর্শিত হলে বিভ্রান্তিকর হতে পারে। যদি এটি হয় তবে একটি মোড়ক ডিভ এবং পরম অবস্থান ব্যবহার করা ভাল:
<div id="wrap" style="position:relative;">
<div id="left" style="margin-right:201px;border:1px solid red;">left</div>
<div id="right" style="position:absolute;width:200px;right:0;top:0;border:1px solid blue;">right</div>
</div>
প্রদর্শিত:
বাম ডানসম্পাদনা: হুম, আকর্ষণীয়। পূর্বরূপ উইন্ডোটি সঠিকভাবে ফর্ম্যাটেড ডিভগুলি দেখায়, তবে রেন্ডার পোস্ট আইটেমটি তা করে না। তবে দুঃখিত, আপনার নিজের জন্য এটি চেষ্টা করতে হবে।
আমি আজ এই সমস্যা মধ্যে দৌড়ে। উপরের সমাধানগুলির উপর ভিত্তি করে, এটি আমার পক্ষে কাজ করেছে:
<div style="width:100%;">
<div style="float:left;">Content left div</div>
<div style="float:right;">Content right div</div>
</div>
কেবলমাত্র পিতামাতার ডিভটি পুরো প্রস্থকে স্প্যান করুন এবং এর মধ্যে থাকা ডিভগুলি ভাসাবেন।
হালনাগাদ
আপনার যদি এক সারিতে উপাদান রাখার প্রয়োজন হয় তবে আপনি ফ্লেক্স লেআউটটি ব্যবহার করতে পারেন । এখানে আপনার আরও একটি ফ্লেক্স টিউটোরিয়াল রয়েছে । এটি একটি দুর্দান্ত সিএসএস সরঞ্জাম এবং এটি 100% সামঞ্জস্যপূর্ণ না হলেও প্রতিদিন এর সমর্থন আরও ভাল হচ্ছে। এটি এতটা সহজ কাজ করে:
এইচটিএমএল
<div class="container">
<div class="contentA"></div>
<div class="contentB"></div>
</div>
সিএসএস
.container {
display: flex;
width: 100%;
height: 200px;
}
.contentA {
flex: 1;
}
.contentB {
flex: 3;
}
এবং আপনি এখানে যা পাবেন মোট চারটি ইউনিটের একটি ধারক যা 1/4 এবং 3/4 এর সাথে তার বাচ্চাদের সাথে স্থান ভাগ করে দেয়।
আমি কোডপেনে এমন একটি উদাহরণ করেছি যা আপনার সমস্যার সমাধান করে। আমি আসা করি এটা সাহায্য করবে.
http://codepen.io/timbergus/pen/aOoQLR?editors=110
অতিবৃদ্ধ
হতে পারে এটি কেবল একটি আজেবাজে কথা, তবে আপনি কি কোনও টেবিল দিয়ে চেষ্টা করেছেন? ডিভগুলি অবস্থানের জন্য এটি সরাসরি সিএসএস ব্যবহার করে না, তবে এটি দুর্দান্ত কাজ করে।
আপনি একটি 1x2 টেবিল তৈরি করতে পারেন এবং নিজের divs
ভিতরে রেখে দিতে পারেন, এবং তারপরে সিএসএসের সাহায্যে টেবিলটি বিন্যাস করতে পারেন যাতে আপনি চান:
<table>
<tr>
<td>
<div></div>
</td>
<td>
<div></div>
</td>
</tr>
</table>
বিঃদ্রঃ
আপনি যদি আগের মতো সারণীটি ব্যবহার করা এড়াতে চান তবে আপনি ব্যবহার করতে পারেন float: left;
এবং float: right;
নীচের উপাদানটিতে একটি যুক্ত করতে ভুলবেন না clear: left;
, clear: right;
বা clear: both;
অবস্থান পরিষ্কার করার জন্য।
div1 {
float: right;
}
div2 {
float: left;
}
আপনি clear: both
এই দুটি কলাম ব্লককে পৃথক করে এমন উপাদানটির জন্য যতক্ষণ না সেট করছেন ঠিক ততক্ষণ এটি কাজ করবে ।
আমি একই সমস্যায় পড়েছিলাম এবং মোহিতস সংস্করণ কাজ করে। আপনি যদি এইচটিএমএলতে আপনার বাম-ডান ক্রম রাখতে চান তবে এটি চেষ্টা করে দেখুন। আমার ক্ষেত্রে, বাম ডিভটি আকারটি সামঞ্জস্য করছে, ডান ডিভটি 260px প্রস্থে থাকে।
এইচটিএমএল
<div class="box">
<div class="left">Hello</div>
<div class="right">World</div>
</div>
সিএসএস
.box {
height: 200px;
padding-right: 260px;
}
.box .left {
float: left;
height: 200px;
width: 100%;
}
.box .right {
height: 200px;
width: 260px;
margin-right: -260px;
}
কৌশলটি হ'ল মূল বাক্সে একটি ডান প্যাডিং ব্যবহার করা উচিত তবে ডান বাক্সটি আবার মার্জিন-রাইটের সাথে রেখে আবার সেই স্থানটি ব্যবহার করুন।
আমি ভাসা এবং ওভারফ্লো-এক্স এর মিশ্রণ ব্যবহার করি: লুকানো। সর্বনিম্ন কোড, সর্বদা কাজ করে।
https://jsfiddle.net/9934sc4d/4/ - প্লাস আপনার আপনার ফ্লোট সাফ করার দরকার নেই!
.left-half{
width:200px;
float:left;
}
.right-half{
overflow-x:hidden;
}
সবাই যেমন উল্লেখ করেছে, আপনি float:right;
আরএইচএস সামগ্রী এবং এলএইচএসে নেতিবাচক মার্জিন সেট করে এটি করবেন।
তবে .. আপনি যদি float: left;
এলএইচএসে কোনও ব্যবহার না করেন (যেমন মোহিত করেন) তবে আপনি একটি স্টেপিং এফেক্ট পাবেন কারণ এলএইচএস ডিভ এখনও লেআউটে প্রান্তিক ব্যবস্থাকে গ্রাস করতে চলেছে।
যাইহোক .. এলএইচএস ভাসা সামগ্রীটি সঙ্কুচিত করে দেবে - সুতরাং এটি আপনাকে গ্রহণযোগ্য না হলে একটি সংজ্ঞায়িত প্রস্থের চাইল্ডনোড সন্নিবেশ করতে হবে, সেই সময়ে আপনি পিতামাতার সাথে প্রস্থটিও সংজ্ঞায়িত করতে পারেন।
যাইহোক .. ডেভিড হিসাবে উল্লেখ করেছেন যে আপনি এলএইচএস ফ্লোটের প্রয়োজনীয়তা এড়াতে মার্কআপের রিড-অর্ডার পরিবর্তন করতে পারেন, তবে এতে পঠনযোগ্যতা এবং সম্ভবত অ্যাক্সেসযোগ্যতার সমস্যা রয়েছে।
তবে .. কিছু অতিরিক্ত মার্কআপ দেওয়া ভাসা দিয়ে এই সমস্যা সমাধান করা যেতে পারে
(সতর্কীকরণ: আমি উদাহরণ হিসাবে। পরিষ্কারের ডিভ অনুমোদিত না, বিশদ জন্য এখানে দেখুন)
সমস্ত বিষয় বিবেচনা করা হয়, আমার মনে হয় আমাদের বেশিরভাগেরই ইচ্ছা একটি লোভী প্রস্থ ছিল: CSS3 এ থাকা ...
এটি সবার জন্য উত্তর হবে না, যেহেতু এটি আই 7- এ সমর্থিত নয়, তবে আপনি এটি ব্যবহার করতে পারেন এবং তারপরে আই 7- এর বিকল্প বিকল্প ব্যবহার করতে পারেন। এটি প্রদর্শন: টেবিল, প্রদর্শন: টেবিল-সারি এবং প্রদর্শন: টেবিল-ঘর। নোট করুন যে এটি বিন্যাসের জন্য সারণীগুলি ব্যবহার করছে না, তবে ডিভগুলি স্টাইলিং করছে যাতে উপরের দিক থেকে সমস্ত ঝামেলা শেষ হয়ে যায় things খনি একটি এইচটিএমএল 5 অ্যাপ্লিকেশন, তাই এটি দুর্দান্ত কাজ করে।
এই নিবন্ধটি একটি উদাহরণ দেখায়: http://www.sitepPoint.com/table-based-layout-is-the-next-big-thing/
আপনার স্টাইলশীটটি দেখতে কেমন হবে তা এখানে:
.container {
display: table;
width:100%;
}
.left-column {
display: table-cell;
}
.right-column {
display: table-cell;
width: 200px;
}
আমার ওয়েবসাইটগুলির মধ্যে একটি যা অন্যরকম কিছু করে তা বোঝাতে:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style TYPE="text/css"><!--
.section {
_float: right;
margin-right: 210px;
_margin-right: 10px;
_width: expression( (document.body.clientWidth - 250) + "px");
}
.navbar {
margin: 10px 0;
float: right;
width: 200px;
padding: 9pt 0;
}
--></style>
</head>
<body>
<div class="navbar">
This will take up the right hand side
</div>
<div class="section">
This will fill go to the left of the "navbar" div
</div>
</body>
</html>