সিএসএস উল্লম্বভাবে ভাসমান ডিভগুলি সারিবদ্ধ করুন


90

আমার কাছে একটি ডিভ (# র্যাপার) রয়েছে পাশাপাশি দুটি ডিভ পাশাপাশি দাঁড়িয়ে আছে।

আমি ডান-ডিভটি উল্লম্বভাবে সারিবদ্ধ হতে চাই। আমি উল্লম্ব-প্রান্তিককরণের চেষ্টা করেছি: আমার প্রধান মোড়কের মাঝখানে কিন্তু এটি কাজ করছে না। এটা আমাকে পাগল করে তুলেছে!

আশা করি কেউ সাহায্য করতে পারেন।

http://cssdesk.com/LWFhW

এইচটিএমএল:

<div id="wrapper">
  <div id="left-div">
    <ul>
      <li>One</li>
      <li>Two</li>
    </ul>
  </div>  
  <div id="right-div">
    Here some text...
  </div>
</div>

সিএসএস:

#wrapper{
  width:400px;
  float:left;
  height:auto;
  border:1px solid purple;}

#left-div{
  width:40px;
  border:1px solid blue;
  float:left;}

#right-div{
  width:350px;
  border:1px solid red;
  float:left;}

ul{
  list-style-type: none;
  padding:0;
  margin:0;}

উত্তর:


67

ভাসমান উপাদানগুলির সাথে আপনার ভাগ্য নেই। তারা উল্লম্ব-সারিবদ্ধতা মানেন না,

display:inline-blockপরিবর্তে আপনার প্রয়োজন :

http://cssdesk.com/2VMg8

সাবধান


display: inline-block;এটি উপাদানগুলির মধ্যে সাদা স্থানকে আসল সাদা-স্থান হিসাবে ব্যাখ্যা করার সাথে সাবধান হন। এটি এর মতো করে তা উপেক্ষা করে না display: block

আমি এটি সুপারিশ:

সেট font-sizeথেকে ধারণকারী উপাদান 0(শূন্য) এবং রিসেট font-sizeআপনার প্রয়োজনীয় মান উপাদানের মধ্যে এত পছন্দ

ul {
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 0;
}
ul > li {
    font-size: 12px;
}

এখানে একটি বিক্ষোভ দেখুন: http://codepen.io/HerrSerker/pen/mslay


সিএসএস

#wrapper{
  width:400px;
  height:auto;
  border:1px solid green;
  vertical-align: middle;
  font-size: 0;
}

#left-div{
  width:40px;
  border:1px solid blue;
  display: inline-block;
  font-size: initial;
  /* IE 7 hack */
  *zoom:1;
  *display: inline;
  vertical-align: middle;
}

#right-div{
  width:336px;
  border:1px solid red;
  display: inline-block;  
  font-size: initial;
  /* IE 7 hack */
  *zoom:1;
  *display: inline;
  vertical-align: middle;
}
  

# রাপর উচ্চতা স্থির করা থাকলে এটি কাজ করবে না। # ডান-ডিভটি # বাম-ডিভের সাথে তুলনামূলকভাবে কেন্দ্রে থাকে তবে মোড়কের উপাদানটির সাথে সম্পর্কিত নয়। ( inline-blockএটি এট্রিবিউট সেট imgথাকা একটি ইনলাইনের মতো আচরণ করে align)
কোস্টা

আমি মনে করি @ কোস্টা এভাবেই হওয়া উচিত।
yunzen

এটি কীভাবে হওয়া উচিত তা বিবেচ্য নয়, এমন অনেকগুলি ক্ষেত্রে রয়েছে যেখানে আপনি ভাসমান উপাদান ব্যবহার করা উচিত এবং সিএসএসে সর্বদা স্টাফ করার উপায় আছে। সর্বদা. খুব সাধারণ ক্ষেত্রে, ভাসমান পাঠ্যের একটি উল্লম্ব-সারিবদ্ধ: jsbin.com/UWeB/1/edit
vsync

11
তবে আপনার সমাধানটিও কাজ করবে না, কারণ আপনি কেবল ফ্লোট ব্যবহার না করার সিদ্ধান্ত নিতে পারবেন না .. পুরো পয়েন্টটি কোনওভাবেই ভাসমানগুলি ব্যবহার করার সময় উল্লম্ব-সারিবদ্ধ করা।
vsync

4
আমার সমস্ত বক্তব্যটি হ'ল কখনও কখনও ইনলাইন-ব্লক কোনও বিকল্প ছিল না এবং এই পৃষ্ঠাতে গুগল থেকে শেষ হতে পারে এমন অন্যদের সহায়তা করার জন্য একটি ব্যবহার-কেস দিয়েছে। অভদ্র হওয়ার দরকার ছিল না।
জেমি বার্কার

21

আপনি প্রদর্শন টেবিল এবং প্রদর্শন টেবিল-সেল দিয়ে এটি বেশ সহজেই করতে পারেন।

#wrapper {
    width: 400px;
    float: left;
    height: auto;
    display: table;
    border: 1px solid green;
}

#right-div {
    width: 356px;
    border: 1px solid red;
    display: table-cell;
    vertical-align: middle;
}

সম্পাদনা: আসলে আপনার জন্য সিএসএস ডেস্কে দ্রুত গণ্ডগোল হয়েছে - http://cssdesk.com/RXghg

অন্য সম্পাদনা: ফ্লেক্সবক্স ব্যবহার করুন। এটি কাজ করবে তবে এটি বেশ পুরানো - http://www.cssdesk.com/davf5

#wrapper {
    display: flex;
    align-items: center;
    border:1px solid green;
}

#left-div {
    border:1px solid blue;
}

#right-div {
    border:1px solid red;
}

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

11

আমি বুঝতে পারি এটি একটি প্রাচীন প্রশ্ন তবে আমি ভেবেছিলাম যে ভাসমান উলম্ব সারিবদ্ধ ইস্যুটির সমাধান পোস্ট করা কার্যকর হবে।

আপনি যে সামগ্রীটি ভাসতে চান তার চারপাশে একটি মোড়ক তৈরি করে, আপনি সিডো নির্বাচনকারীদের আগে মোড়কের অভ্যন্তরে উল্লম্বভাবে সারিবদ্ধ করার জন্য :: পরে বা :: ব্যবহার করতে পারেন। প্রান্তিককরণকে প্রভাবিত না করে আপনি যা চান তা সামগ্রীর আকার সামঞ্জস্য করতে পারেন। শুধুমাত্র ধরা যে মোড়কের 100% উচ্চতা পূরণ করতে হবে হয় তার ধারক।

http://jsfiddle.net/jmdrury/J53SJ/

এইচটিএমএল

<div class="container">
    <span class="floater">
        <span class="centered">floated</span>
    </span>
    <h1>some text</h1>
</div>

সিএসএস

div {
    border:1px solid red;
    height:100px;
    width:100%;
    vertical-align:middle;
    display:inline-block;
    box-sizing: border-box;
}
.floater {
    float:right;
    display:inline-block;
    height:100%;
    box-sizing: border-box;
}
.centered {
    border:1px solid blue;
    height: 30px;
    vertical-align:middle;
    display:inline-block;
    box-sizing: border-box;
}
h1 {
    margin:0;
    vertical-align:middle;
    display:inline-block;
    box-sizing: border-box;
}
.container:after, .floater:after, .centered:after, h1:after {
    height:100%;
    content:'';
    font-size:0;
    vertical-align:middle;
    display:inline-block;
    box-sizing: border-box;
}

আপনি কী করছেন তা আমি নিশ্চিত নই, তবে centeredক্লাসটি মুছে ফেলা এবং সেই সিএসএস থেকে প্রচুর অপ্রয়োজনীয় স্টাফ পরিষ্কার করার পরে এটি উল্লম্ব সারিবদ্ধটি ঠিক করে ফেলেছে, ঠিক (বিন্যাসের ক্ষতির জন্য দুঃখিত!):div { border:1px solid red; height:100px; } .floater { float:right; height:100%; } h1 { vertical-align:middle; } .container:after, .floater:after, .centered:after { height:100%; content:''; font-size:0; vertical-align:middle; display:inline-block; }
জেড


3

আমি ভাসা ব্যবহার এড়ানোর জন্য যথাসাধ্য চেষ্টা করি ... তবে - যখন প্রয়োজন হয় আমি নীচের লাইনগুলি ব্যবহার করে মাঝখানে উল্লম্বভাবে সারিবদ্ধ:

position: relative;
top: 50%;
transform: translateY(-50%);

-1

আমার পরিবর্তনগুলির একমাত্র অবক্ষয় হ'ল আপনার একটি সেট ডিভি উচ্চতা ... আমি জানি না এটি আপনার পক্ষে সমস্যা কিনা না।

http://cssdesk.com/kyPhC


4
হ্যালো শান ধন্যবাদ তবে আমি একটি নমনীয় সমাধান ব্যবহার করার চেষ্টা করছি এবং এভাবে এই ধরণের সমাধান এড়ানোর আশা করছি ...
মার্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.