আপনি কি টেবিলগুলি ব্যবহার না করে এই HTML লেআউটটি করতে পারেন?


102

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

+---------------------------------------------------------+
| Title                                            Button |
+---------------------------------------------------------+

খুব সহজ স্টাফ। বিষয়টি হ'ল টেবিল বিদ্বেষটি ওয়েব জগতে চলে গেছে বলে মনে হচ্ছে, যখন আমি জিজ্ঞাসা করলাম কেন টেবিলের পরিবর্তে এইচটিএমএল ফর্মগুলির জন্য সংজ্ঞা তালিকা (ডিএল, ডিডি, ডিটি) ট্যাগ ব্যবহার করবেন? এখন সারণী বনাম ডিভ / সিএসএসের সাধারণ বিষয় আগে আলোচনা করা হয়েছে, উদাহরণস্বরূপ:

সুতরাং এটি বিন্যাসের জন্য সিএসএস বনাম সারণীগুলি সম্পর্কে সাধারণ আলোচনার উদ্দেশ্য নয়। এটি কেবল একটি সমস্যার সমাধান। আমি সিএসএস ব্যবহার করে উপরের বিভিন্ন সমাধানের চেষ্টা করেছি:

  • বোতামের জন্য ডানদিকে ভাসা বা বোতামযুক্ত একটি ডিভ;
  • বোতামের জন্য আপেক্ষিক অবস্থান; এবং
  • অবস্থান আপেক্ষিক + পরম।

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

সুতরাং আমি ফিরে যেতে শেষ:

<style type="text/css">
.group-header { background-color: yellow; width: 100%; }
.group-header td { padding: 8px; }
.group-title { text-align: left; font-weight: bold; }
.group-buttons { text-align: right; }
</style>
<table class="group-header">
<tr>
  <td class="group-title">Title</td>
  <td class="group-buttons"><input type="button" name="Button"></td>
</tr>
</table>

এবং এটি পুরোপুরি কাজ করে। এটি সহজ, এটি যতটা পশ্চাদপটে তুলনামূলকভাবে আসে (এটি সম্ভবত আই 5 তেও কাজ করবে) এবং এটি ঠিক কাজ করে। পজিশনিং বা ভাসমান নিয়ে কোনও ঝামেলা নেই।

সুতরাং কেউ টেবিল ছাড়া সমতুল্য করতে পারেন?

প্রয়োজনীয়তাগুলি হ'ল:

  • পিছনে সামঞ্জস্যপূর্ণ: এফএফ 2 এবং আই 6;
  • যুক্তিসঙ্গতভাবে সামঞ্জস্যপূর্ণ: বিভিন্ন ব্রাউজার জুড়ে;
  • উল্লম্বভাবে কেন্দ্রিক: বোতাম এবং শিরোনামটি বিভিন্ন উচ্চতার হয়; এবং
  • নমনীয়: পজিশনিং (প্যাডিং এবং / বা মার্জিন) এবং স্টাইলিংয়ের উপর যথাযথভাবে যথাযথ নিয়ন্ত্রণের অনুমতি দিন।

এক পক্ষের নোটে, আমি আজ বেশ কয়েকটি আকর্ষণীয় নিবন্ধগুলি পেয়েছি:

সম্পাদনা: ভাসমান ইস্যুটি সম্পর্কে আমার আরও বিস্তারিত জানাতে দিন। এই ধরণের কাজগুলি:

<html>
  <head>
    <title>Layout</title>
    <style type="text/css">
      .group-header, .group-content { width: 500px; margin: 0 auto; }
      .group-header { border: 1px solid red; background: yellow; overflow: hidden; }
      .group-content { border: 1px solid black; background: #DDD; }
      .group-title { float: left; padding: 8px; }
      .group-buttons { float: right; padding: 8px; }
    </style>
  </head>
  <body>
    <div class="group-header">
      <div class="group-title">This is my title</div>
      <div class="group-buttons"><input type="button" value="Collapse"></div>
    </div>
    <div class="group-content">
      <p>And it works perfectly. It's simple, as backward compatibile as it gets (that'll work probably even on IE5) and it just works. No messing about with positioning or floats.</p>
      <p>So can anyone do the equivalent without tables that is backwards compatible to at least FF2 and IE6?</p>
      <p>On a side note, I came across a couple of interesting articles today:</p>
    </div>
  </body>
</html>

অংশটির জন্য পিঁপড়াকে ধন্যবাদ overflow: hidden(এখনও কেন তা পান না)। সমস্যাটি এখানেই আসে Say বলুন আমি চাই শিরোনাম এবং বোতামটি উল্লম্বভাবে কেন্দ্রীভূত হোক। এটি সমস্যাযুক্ত কারণ উপাদানগুলি বিভিন্ন উচ্চতার। এর সাথে তুলনা করুন:

<html>
  <head>
    <title>Layout</title>
    <style type="text/css">
      .group-header, .group-content { width: 500px; margin: 0 auto; }
      .group-header { border: 1px solid red; background: yellow; overflow: hidden; }
      .group-content { border: 1px solid black; background: #DDD; }
      .group-header td { vertical-align: middle; }
      .group-title { padding: 8px; }
      .group-buttons { text-align: right; }
    </style>
  </head>
  <body>
    <table class="group-header">
    <tr>
      <td class="group-title">This is my title</td>
      <td class="group-buttons"><input type="button" value="Collapse"></td>
    </tr>
    </table>
    <div class="group-content">
      <p>And it works perfectly. It's simple, as backward compatibile as it gets (that'll work probably even on IE5) and it just works. No messing about with positioning or floats.</p>
      <p>So can anyone do the equivalent without tables that is backwards compatible to at least FF2 and IE6?</p>
      <p>On a side note, I came across a couple of interesting articles today:</p>
    </div>
  </body>
</html>

যা নিখুঁতভাবে কাজ করে।


11
ঠিক আছে যে এই ধারণাটি তৈরি করে "আমি ভিএম এর জন্য কোন রঙ ব্যবহার করব?" উত্সাহিত হয়, আমার নির্দিষ্ট সিএসএস লেআউট সমস্যা ডাউনভোট হয়।
ক্লিটাস


আপনি যে কোনও ক্ষেত্রে টেবিল ছাড়াই যা করতে চান তা করতে পারেন। এছাড়াও কেন জাহান্নামে @ সাম্ব এই 2 বছরের পুরানো প্রশ্নটিকে ধাক্কা মেরে ফেলেছে? ডিওএইচ +
গতিশীল

3
@ হ্যাঁ 123: ভাল, সিনট্যাক্স হাইলাইট করা ভুল ছিল ...
সাম্ব

উত্তর:


50

কাজটি দ্রুত এবং সঠিকভাবে করার জন্য আপনার কাছে উপলভ্য সরঞ্জামগুলি ব্যবহার করার ক্ষেত্রে কোনও ভুল নেই।

এই ক্ষেত্রে একটি টেবিল নিখুঁতভাবে কাজ করে।

আমি ব্যক্তিগতভাবে এই জন্য একটি টেবিল ব্যবহার করতে হবে।

আমি মনে করি নেস্টেড টেবিলগুলি এড়ানো উচিত, জিনিসগুলি অগোছালো হতে পারে।


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

9
এমনকি অ্যামাজন নির্দিষ্ট কিছু ক্ষেত্রে সারণী ব্যবহার করে। এবং স্ট্যাকওভারফ্লো ডট কমও করে। যখন তারা আসলে ভালভাবে কাজ করে তখন আমি CSS সমাধানের জন্যই আছি।
নসরেডনা

11
না আমাজন, এখন স্ট্যাকওভারফ্লো হ'ল ওয়েব ডিজাইনের চূড়া।
ববি জ্যাক

31
সেগুলি নাও হতে পারে তবে তারা এমন সমাধানগুলি কাজ করছে যা কয়েক হাজার হাজার ব্যবহারকারীকে সরবরাহ করে।
26

22
এই অ্যান্টি-টেবিল মেমটি কেবল সাদামাটা পুরানো বোকা। নমনীয় সীমাবদ্ধতা-ভিত্তিক লাউটটির জন্য কেবলমাত্র 2-মাত্রিক লেআউট ম্যানেজার হ'ল টেবিল; এবং এটি কেবলমাত্র জটিল একটি (কর্ন / রোউস্প্যানগুলির অগণিত সহ), বা নেস্টেডগুলি যে কোনও পার্থক্য করে। কিন্তু বাস্তবতা এবং ঘটনাবলি হ'ল উদ্যোগবাদীদের বিরুদ্ধে সর্বদা যথেষ্ট পরিমাণে ভাল অস্ত্র নয়।
স্টেক্সম্যান

28

কেবল বাম এবং ডান ভাসান এবং উভয় সাফ করার জন্য সেট করুন এবং আপনার কাজ শেষ। টেবিলের দরকার নেই।

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

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


2
উল্লম্ব কেন্দ্রিয় হ্যান্ডেল করে না, তাই -১।
সাম্ব

1
আমার বামদিকে একটি লোগো এবং ডানদিকে কিছু পাঠ্য মেনু ছিল এমনই আমার একই সমস্যা ছিল। মেনুগুলি লোগোর বেসলাইনটিতে সারিবদ্ধ হতে হয়েছিল। ভাসা ব্যবহার করা: মেনুগুলির জন্য সঠিক কাজ হয়নি। এটি তাদের উপরের ডান কোণে প্রেরণ করেছে এবং লোগোটির বেসলাইনটির সাথে তারা উল্লম্বভাবে সাজানো হয়নি।
জিন-ফ্রান্সোইস বিউচ্যাম্প

1
আমি মনে করি আপনি বোতামের উচ্চতার সমান শিরোনামের লাইন-উচ্চতা নির্ধারণ করে উল্লম্ব কেন্দ্রীকরণ সমাধান করতে পারেন।
igors

1
@ আইগরস, +1, আপনি ঠিক বলেছেন। মনে রাখবেন যে এই প্রশ্নটি ২০০৯ সালের;)))
মিলান বাবুস্কভ

17

এটি একটি কৌশল কৌশল: এটি আপনার কাছে না আসা পর্যন্ত ভয়ঙ্কর সরল দেখায়

বলুন আমি চাই শিরোনাম এবং বোতামটি উল্লম্বভাবে কেন্দ্রীভূত হোক।

আমি রেকর্ডটির জন্য বলতে চাই যে হ্যাঁ, সিএসএসে উল্লম্ব কেন্দ্রীকরণ কঠিন is লোকেরা যখন পোস্ট করে এবং এটি এসও-তে অন্তহীন বলে মনে হয়, "আপনি কি সিএসএসে এক্স করতে পারেন" উত্তরটি প্রায় সর্বদা "হ্যাঁ" হয় এবং তাদের হিংস্রতাটি ন্যায়বিচারহীন বলে মনে হয়। এই ক্ষেত্রে, হ্যাঁ, এটি একটি বিশেষ জিনিস কঠিন।

কারও কেবল পুরো প্রশ্নটি "সিএসএসে উল্লম্ব কেন্দ্রীভূত সমস্যাযুক্ত?" এ নীচে সম্পাদনা করা উচিত।


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

4
আমার বক্তব্যটি ছিল যে উল্লম্ব কেন্দ্রীভূত হ'ল কেবলমাত্র জিনিস যা সত্যই কঠিন।
অ্যামব্রোস চ্যাপেল

3
সিএসএস অর্থ টেবিলগুলি প্রতিস্থাপন নয়; এটি কেবল আপনাকে টেবিল ছাড়াই বেশিরভাগ সাধারণ বিন্যাস সমস্যা সমাধান করার অনুমতি দেওয়ার জন্য বোঝানো হয়েছিল। যদি কোনও টেবিলটি কাজ করে, একটি টেবিল ব্যবহার করুন, ঠিক যেমন আপনি স্লেজ হাতুড়ির পরিবর্তে কলম আঁকেন।
হারুন দিগুল্লা

16

বাম ফ্লোট শিরোনাম, ডানদিকে ভাসা বোতাম, এবং (এই অংশটি আমি সম্প্রতি জানতাম না) - এই দুটিরই ধারক তৈরি করুন {overflow:hidden}

এটি যাইহোক, z-index সমস্যা এড়ানো উচিত। যদি এটি কাজ করে না, এবং আপনার সত্যিই আই 5 সমর্থন প্রয়োজন, এগিয়ে যান এবং টেবিলটি ব্যবহার করুন।


+1 ওহো, ওভারফ্লো লুকিয়ে আছে কী? এটি একটি পার্থক্য করতে পারে। কেন জানি না।
ক্লিটাস

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

ভাসমান উপাদানগুলি যথাযথভাবে প্রবাহিত হওয়ার জন্য নিম্নলিখিত সামগ্রীগুলি পরিষ্কার করার প্রয়োজন। যথোপযুক্ত সৃষ্টিকর্তাযথোপযুক্ত সৃষ্টিকর্তা; কেবল ধারকটির উচ্চতা সম্বোধন করে।
জ্যাক দ্য হিউম্যান

2
"ওভারফ্লো: লুকানো" উভয় উচ্চতা 'সম্প্রসারণ' এবং ক্লিয়ারিং অর্জনের জন্য একটি হ্যাক। নিম্নলিখিত উপাদানগুলি সেই বাক্সটি পরিষ্কার করবে (ব্রাউজারগুলিতে যা নির্দিষ্টভাবে সেই অংশটি কার্যকরভাবে প্রয়োগ করে), কমপক্ষে।
ববি জ্যাক

1
উল্লম্ব কেন্দ্রিয় পরিচালনা না করার জন্য -1, তবে +2 overflow:hidden
সাম্ব

7

খাঁটি সিএসএসে, একটি কাজের উত্তর একদিন স্রেফ ব্যবহার করা হবে "display:table-cell"। দুর্ভাগ্যক্রমে এটি বর্তমান এ-গ্রেড ব্রাউজারগুলিতে কাজ করে না, সুতরাং যে কোনও উপায়ে কেবল একই ফলাফল অর্জন করতে চাইলে আপনি পাশাপাশি কোনও টেবিল ব্যবহার করতে পারেন। অন্তত আপনি নিশ্চিত হয়ে উঠবেন যে এটি অতীতে যথেষ্ট কাজ করে।

সত্যি বলতে, সহজতর হলে কেবল একটি টেবিল ব্যবহার করুন। এতে ক্ষতি হবে না।

যদি টেবিল উপাদানটির শব্দার্থবিজ্ঞান এবং অ্যাক্সেসযোগ্যতা আপনার পক্ষে সত্যিই গুরুত্বপূর্ণ, আপনার টেবিলটি অ-শব্দার্থিক করার জন্য একটি কার্যকরী খসড়া রয়েছে:

http://www.w3.org/TR/wai-aria/#presentation

আমি মনে করি এটির জন্য এক্সএইচটিএমএল 1.1 এর বাইরে একটি বিশেষ ডিটিডি দরকার, যা পুরো text/htmlবনাম application/xmlবিতর্ককে কেবল আলোড়ন তুলবে , সুতরাং সেখানে যাওয়া উচিত নয়।

সুতরাং, আপনার অমীমাংসিত সিএসএস সমস্যা ...

তাদের কেন্দ্রে দুটি উপাদানকে উল্লম্বভাবে সারিবদ্ধ করার জন্য: এটি কিছু বিভ্রান্ত সিএসএস হ্যাকারি সহ কয়েকটি ভিন্ন উপায়ে করা যায়।

আপনি যদি নিম্নলিখিত সীমাবদ্ধতার মধ্যে ফিট করতে পারেন তবে তুলনামূলকভাবে সহজ উপায় রয়েছে:

  • দুটি উপাদানের উচ্চতা স্থির করা হয়েছে।
  • ধারকটির উচ্চতা স্থির করা হয়েছে।
  • ওভারল্যাপ না করে উপাদানগুলি সংকীর্ণ হবে (বা একটি নির্দিষ্ট প্রস্থে সেট করা যেতে পারে)।

তারপরে আপনি নেতিবাচক মার্জিন সহ পরম অবস্থান ব্যবহার করতে পারেন:

.group-header { height: 50px; position: relative; }
.group-title, .group-buttons { position: absolute; top: 50%; }
# Assuming the height of .group-title is a known 34px
.group-title { left: 0; margin-top: -17px; }
# Assuming the height of .group-buttons is a known 38px
.group-buttons { right: 0; margin-top: -19px; }

তবে বেশিরভাগ পরিস্থিতিতে এটি অর্থহীন ... যদি আপনি ইতিমধ্যে উপাদানগুলির উচ্চতাটি জানেন তবে আপনি কেবলমাত্র ফ্লোট ব্যবহার করতে পারেন এবং প্রয়োজনীয় স্থান হিসাবে তাদের পর্যাপ্ত পর্যায়ে মার্জিন যুক্ত করতে পারেন।

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

<html>
  <head>
    <title>Layout</title>
    <style type="text/css">
      .group-header, .group-content { width: 500px; margin: 0 auto; }
      .group-header { border: 1px solid red; background: yellow; }
      .valign { display: inline-block; vertical-align: middle; }
      .group-content { border: 1px solid black; background: #DDD; }
      .group-title { padding: 8px; width: 384px; }
      .group-buttons { padding: 8px; width: 84px; text-align: right; }
    </style>
    <!--[if lt IE 8]>
    <style type="text/css">
      .valign { display: inline; margin-top: -2px; padding-top: 1px; }
    </style>
    <![endif]-->
  </head>
  <body>
    <div class="group-header">
      <div class="valign">
        <div class="group-title">This is my title.</div>
      </div><!-- avoid whitespace between these! --><div class="valign">
        <div class="group-buttons"><input type="button" value="Collapse"></div>
      </div>
    </div>
    <div class="group-content">
      <p>And it works perfectly, but mind the hacks.</p>
    </div>
  </body>
</html>

এইচটিএমএল: আমরা প্রতিটি কলামে। (যদি এটি আপনাকে আরও সুখী করে তোলে তবে তাদের আরও একটি "শব্দার্থক" নাম দিন)) এগুলি মাঝখানে সাদা অংশ ছাড়াই রাখা দরকার অন্যথায় পাঠ্যের স্থানগুলি এটিকে আলাদা করে দেবে। (আমি জানি এটি স্তন্যপান করে তবে মার্কআপের সাথে "খাঁটি" হয়ে উপস্থাপনা স্তর থেকে আলাদা করার জন্য আপনি এটি পান ... হা!)

সিএসএস: আমরা vertical-align:middleগ্রুপ-শিরোনাম উপাদানটির পাঠ্য বেসলাইনে ব্লকগুলি সারি করতে ব্যবহার করি । প্রতিটি ব্লকের বিভিন্ন উচ্চতা উল্লম্বভাবে কেন্দ্রে থাকবে এবং তাদের ধারকটির উচ্চতা বাড়িয়ে দেবে। প্রস্থের ফিট করার জন্য উপাদানগুলির প্রস্থগুলি গণনা করা দরকার to এখানে, তারা 400 এবং 100, তাদের অনুভূমিক প্যাডিং বিয়োগ করবে।

আইআই ঠিক করে: ইন্টারনেট এক্সপ্লোরার কেবল নেটিভ-ইনলাইন উপাদানগুলির জন্য ইনলাইন-ব্লক প্রদর্শন করে (যেমন স্প্যান, ডিভ নয়)। তবে, আমরা যদি ডিভ হ্যাসলয়েট দিই এবং তারপরে এটি ইনলাইন প্রদর্শন করি তবে এটি ঠিক ইনলাইন-ব্লকের মতো আচরণ করবে। মার্জিন সামঞ্জস্যটি শীর্ষে একটি 1px ফাঁক ফিক্স করা হয় (দেখতে গোষ্ঠী-শিরোনামে পটভূমি রঙ যুক্ত করার চেষ্টা করুন)।


1
হুম ডিসপ্লে: টেবিল-এক্স ট্যাগগুলি কেবল টেবিল ট্যাগ ব্যবহার না করেই টেবিল ব্যবহার করে বিন্যাস করার উদ্দেশ্য আছে বলে মনে হচ্ছে?
ডানুবিয়ার নাবিক

3

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

<style>
  .group-header { background: yellow; zoom: 1; padding: 8px; }
  .group-header:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
  /* set width appropriately to allow room for button */
  .group-header h3 { float: left; width: 300px; }
  /* set line-height or margins to align with h3 baseline or middle */
  .group-header input { float: right; }
</style>

<div class="group-header">
  <h3>This is my title</h3>
  <input type="button" value="Collapse"/>
</div>

আপনি যদি মাঝখানে সত্য উল্লম্ব সারিবদ্ধতা চান (যেমন, পাঠ্যটি উভয় রেখার সাথে টেক্সটটি বোতামটি আবদ্ধ করে এখনও মাঝ-সারিবদ্ধ থাকে), তবে আপনাকে হয় একটি টেবিল করতে হবে position: absoluteএবং কিছু এবং মার্জিন দিয়ে কাজ করতে হবে । আপনি যোগ করতে পারেন position: relativeযাতে এটা বোতাম হিসাবে একই ক্রম স্তর মধ্যে টান করার জন্য আপনার ড্রপ-ডাউন মেনু (অথবা সম্ভাবনা বেশি তার পিতা বা মাতা) জন্য, আপনাকে তাদের উপরে এটি আচমকা Z-সূচকের সাথে, যদি এটা যে আসে দেয়।

মনে রাখবেন যে ডিভের জন্য আপনার প্রয়োজন নেই width: 100%কারণ এটি একটি ব্লক-স্তর উপাদান, এবং zoom: 1ডিআইআই-তে এটির মতো আচরণ করে যেমন আই-তে একটি ক্লিয়ারফিক্স রয়েছে (অন্যান্য ব্রাউজারগুলি আসল ক্লিয়ারফিক্স তুলে নিয়েছে)। আপনি যদি আরও কিছু নির্দিষ্টভাবে জিনিসগুলি লক্ষ্য করে থাকেন তবে আপনার এই সমস্ত বহিরাগত শ্রেণির প্রয়োজন নেই, যদিও পজিশনিংকে আরও সহজ করার জন্য আপনার প্রয়োজন হতে পারে একটি র্যাপার ডিভ বা স্প্যানের বোতামে।


সিউডো-ক্লাসের পরে: যদিও আপনার সমাধান আই 6 এ কাজ করে না।
সেবাস্তিয়ান হোয়েজ

1
এটা তোলে ইন্টারনেট 6 কাজ করে, ধন্যবাদ zoom: 1মধ্যে .group-header, যা hasLayout ট্রিগার ও ইন্টারনেট 6 কারণ একই আচরণ করে যেমন যদি এটা ছিল: উপাদান সক্রিয় পরে।
ওয়ান ক্রাইওন

2

ডিভিতে ডাবল ফ্লোট করুন এবং ক্লিয়ারফিক্সটি ব্যবহার করুন। http://www.webtoolkit.info/css-clearfix.html আপনার কি কোনও প্যাডিং / মার্জিন বিধিনিষেধ আছে?

<div class="clearfix">
   <div style="float:left">Title</div>
   <input type="button" value="Button" style="float:right" />
</div>

আমার একটি উল্লম্ব কেন্দ্রিক প্রয়োজনীয়তা রয়েছে (এবং কিছুটা অতিরিক্ত প্যাডিং)। আমার মনে হয় আপনি পোস্ট করার পরেও আমি তা স্পষ্ট করে দিয়েছি।
ক্লিটাস


1

আমি ফ্লেক্সবক্স ব্যবহার করা পছন্দ করেছি, কারণ এটি জিনিসগুলিকে এত সহজ করে তুলেছিল।

মূলত আপনার যে বাচ্চাগুলি সারিবদ্ধ এবং যুক্ত করতে চান তাদের পিতামাতার কাছে যেতে হবে display:box(অবশ্যই পূর্বনির্ধারিত)। তাদের পাশে বসার জন্য ন্যায়সঙ্গত সামগ্রী ব্যবহার করুন । আপনার মধ্যে এমন উপাদান রয়েছে যাগুলির শেষে প্রান্তিককরণ করা দরকার, এর মধ্যে স্থান হ'ল সঠিক জিনিসটি (এই লিঙ্কটি দেখুন) ...

তারপরে উল্লম্ব সারিবদ্ধ ইস্যু। যেহেতু আমি দুটি উপাদানের পিতামাতাকে তৈরি করেছি, আপনি একটি ফ্লেক্সবক্স সারিবদ্ধ করতে চান। এটি এখন ব্যবহার করা সহজ align-items: center

তারপরে আমি আগে আপনি যে শৈলীগুলি চেয়েছিলেন তা জুড়েছি, শিরোনাম এবং বোতাম থেকে শিরোনামে ভাসাটি সরিয়ে এবং একটি প্যাডিং যুক্ত করেছি:

.group-header, .group-content {
    width: 500px;
    margin: 0 auto;
}
.group-header{
    border: 1px solid red;
    background: yellow;
    overflow: hidden;
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-justify-content: space-between;
    -moz-justify-content: space-between;
    -ms-justify-content: space-between;
    -o-justify-content: space-between;
    justify-content: space-between;
    webkit-align-items: center;
    -moz-align-items: center;
    -ms-align-items: center;
    -o-align-items: center;
    align-items: center;
    padding: 8px 0;
}
.group-content{
    border: 1px solid black;
    background: #DDD;
}
.group-title {
    padding-left: 8px;
}
.group-buttons {
    padding-right: 8px
}

ডেমো দেখুন


1

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

<html>
    <head>
        <title>stack header</title>
        <style type="text/css">
            #stackheader {
                background-color: #666;
                color: #FFF;
                width: 410px;
                height: 50px;
            }
            #title {
                color: #FFF;
                float: left;
                padding: 15px 0 0 15px;
            }
            #button {
                color: #FFF;
                float: right;
                padding: 15px 15px 0 0;
            }
        </style>
    </head>

    <body>
        <div id="stackheader">
        <div id="title">Title</div>
        <div id="button">Button</div>
        </div>
    </body>
</html>

বোতাম ফাংশন এবং কোনও অতিরিক্ত বিশদ এই বেসিক ফর্মটি থেকে স্টাইল করা যেতে পারে। খারাপ ট্যাগের জন্য দুঃখিত।

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