সিএসএস প্রদর্শন: প্রস্থটি 100% এ সেট করা থাকলে টেবিল-সারি প্রসারিত হয় না


98

আমার কিছুটা সমস্যা হচ্ছে আমি ফায়ারফক্স 3.6 ব্যবহার করছি এবং নিম্নলিখিত ডোম কাঠামো আছে:

<div class="view-row">
    <div class="view-type">Type</div>
    <div class="view-name">Name</div>                
</div>

এবং নিম্নলিখিত সিএসএস:

.view-row {
width:100%;
display:table-row;
}

.view-name {
display: table-cell;
float:right;
}

.view-type {
display: table-cell;
}

যদি আমি এটিটি বন্ধ করি তবে display:table-rowএটি সঠিকভাবে উপস্থিত হবে, view-rowপ্রস্থটি 100% প্রস্থের সাথে দেখানো হবে। যদি আমি এটি পিছনে রাখি তবে এটি সঙ্কুচিত হয়ে যায়। আমি এটি জেএস বিনের উপরে রেখেছি:

http://jsbin.com/ifiyo

কি হচ্ছে?

উত্তর:


90

যদি আপনি display:table-rowইত্যাদি ব্যবহার করে থাকেন তবে আপনার যথাযথ মার্কআপ দরকার, যার মধ্যে একটি টেবিল রয়েছে includes এটি ছাড়া আপনার মূল প্রশ্নটি মূলত এর সমতুল্য খারাপ মার্কআপ সরবরাহ করে:

<tr style="width:100%">
    <td>Type</td>
    <td style="float:right">Name</td>
</tr>

উপরের টেবিলটি কোথায়? আপনি শুধু দাঁড়াতেই আউট একটি সারি থাকতে পারে না (TR পারেন অন্তর্ভুক্ত করা আবশ্যক table, thead, tbody, ইত্যাদি)

পরিবর্তে, এর সাথে একটি বাহ্যিক উপাদান যুক্ত display:tableকরুন, ধারণকারী উপাদানটিতে 100% প্রস্থ দিন। অভ্যন্তরের দুটি কক্ষ স্বয়ংক্রিয়ভাবে 50/50 হয়ে যাবে এবং দ্বিতীয় কক্ষে ডানদিকে পাঠ্যক্রমটি প্রান্তিক করবে। floatsটেবিলের উপাদানগুলির সাথে ভুলে যান । এটি এত মাথাব্যথার কারণ হবে।

মার্কআপ:

<div class="view-table">
    <div class="view-row">
        <div class="view-type">Type</div>
        <div class="view-name">Name</div>                
    </div>
</div>

সিএসএস:

.view-table
{
    display:table;
    width:100%;
}
.view-row,
{
    display:table-row;
}
.view-row > div
{
    display: table-cell;
}
.view-name 
{
    text-align:right;
}

11
অভিশাপ থেকে মুক্তি পাওয়ার উপর +5!
অবসরের

37
-1 কারণ ব্যাখ্যাটি কেবল ভুল। CSS2.1 স্পেস অনুসারে, প্রশ্নযুক্ত মার্কআপ / সিএসএস কাজ করার কথা।
ব্যবহারকারী 123444555621

8
অনুপস্থিত টেবিলটি নিয়ে কোনও ব্রাউজারের কোনও সমস্যা নেই (ফায়ারফক্স 3.0.০ ছিল ...) আসল সমস্যাটি হ'ল টেবিলের সারিগুলিতে প্রস্থের সেটিংস সম্পূর্ণ উপেক্ষা করা হয় । (যার অর্থ প্রশ্নের মধ্যে থাকা মার্কআপ / সিএসএস আসলে প্রত্যাশার মতো কাজ করে না, তাই উপরে আমার মন্তব্যটি ভুল ছিল;))
ব্যবহারকারী 123444555621

4
এই উত্তরটি ভুল। প্রশ্নকারীর মার্কআপ সঠিক। পুমবা ৮০-তে যেমন বলা হয়েছে, বিষয়টি ধরেই নেওয়া হচ্ছে যে প্রস্থটি সারণী স্তরের পরিবর্তে সারি স্তরে থাকতে হবে। প্রস্থটি কেবল টেবিল স্তরে ব্যাখ্যা করা হয়। সারিগুলি সম্পূর্ণ বাদ দেওয়া যায় can আমার সম্পূর্ণ উত্তর নীচে দেখুন।
আমিন আরিয়ানা

4
আমি উত্তর উপর কোন মন্তব্য ছিল না যা কাজ করে। আমি আপনার মন্তব্যে মন্তব্য করছিলাম যে আপনাকে অবশ্যই সিএসএসে একটি সারণী সারি অন্তর্ভুক্ত করতে হবে। আপনি না। আপনার ব্যক্তিগত বিশ্বাসের কারণে কিছু ছদ্ম বৈধ বলে বলা একটি খুব স্পষ্টতই বা দৃ say়ভাবে বলা জিনিস; বিশেষত যখন সিএসএস সম্পূর্ণ বৈধ ছিল।
বিল রোসমাস

56

পরীক্ষিত উত্তর:

.ভিউ-সারি সিএসএসে, পরিবর্তন করুন:

display:table-row;

প্রতি:

display:table

এবং "ভাসা" থেকে মুক্তি পান । প্রত্যাশা অনুযায়ী সবকিছুই কাজ করবে।

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

কাজের উদাহরণ:

<div class="view">
    <div>Type</div>
    <div>Name</div>                
</div>

সিএসএস সহ:

.view {
  width:100%;
  display:table;
}

.view > div {
  width:50%;
  display: table-cell;
}

আপনার উত্তরটি সিএসএসের সমতুল্য হিসাবে <table><td></td></table>জানায় যে ডাব্লু 3 সি অনুসারে এর নিজের থেকে অবৈধ এইচটিএমএল মার্কআপ হবে। এটি বৈধ হয়ে যাবে, আপনি ব্রাউজারকে এই মার্কআপটি নকল করতে বলবেন কেন?
কেপি।

16
এটি সিএসএস বিধি দ্বারা সঠিক: w3.org/TR/CSS2/tables.html# বেনাম- বক্সেস । কোডের অপ্রয়োজনীয় লাইনগুলি অপসারণ করে এটি বজায় রাখা আরও সহজ (উদাহরণস্বরূপ, কেপি দ্বারা প্রস্তাবিত অপ্রয়োজনীয় <ভিউ_আর> ডিভ)। এটি আমাকে সহায়তা করেছে ... আমি এটি ব্যবহার করছি। +1
বিল রোসমাস

4
শুধু ভাসমান বিবৃতি থেকে মুক্তি পাওয়ার পক্ষে কি যথেষ্ট হবে না? । ভিভ ডিভ এটি প্রদর্শন রাখতে পারে: টেবিল-সারির সম্পত্তি।
Ideogram

4
এটি ভাল, ~~ তবে আমি যতদূর বলতে পারি আই 9 তে কাজ করে না ~~ আমি ভুল। এটা দুর্দান্ত! :)
f1lt3r

অবশ্যই প্রদর্শন: আপনার 1 টির বেশি সারি থাকাকালীন টেবিলটির কোনও ব্যবহার নেই। এগুলির ফলাফল খারাপভাবে
স্বাক্ষরবিহীন

16

নোট করুন যে CSS3 অনুমান অনুসারে, আপনাকে আপনার লেআউটটিকে টেবিল-শৈলীর উপাদানগুলিতে আবৃত করতে হবে না। ব্রাউজারটি যদি উপাদানগুলির অস্তিত্ব না রাখে তবে তার অস্তিত্বকে তা আবিষ্কার করবে।


4
খুব একই সিএসএস 2.1 , বিভাগ 17.2.1, শীর্ষ 3.2 এ নির্দিষ্ট করা হয়েছে । নীচের HBOX / VBOX উদাহরণ হ'ল প্রশ্নে ঠিক তেমনটি। ব্রাউজারগুলি দেখে মনে হচ্ছে ঠিক তেমন যত্ন নেই।
ব্যবহারকারী 123444555621

1

উপর দিতে .view-typeবর্গ float:left;বা মুছতে float:right;এর.view-name

সম্পাদনা করুন:<div class="view-row"> উদাহরণস্বরূপ আপনার ডিভটি অন্য ডিভের সাথে মুড়ে দিন<div class="table">

এবং নিম্নলিখিত সিএসএস সেট করুন:

.table {
    display:table;
    width:100%;}

সঠিক ফলাফলের জন্য আপনাকে টেবিল কাঠামোটি ব্যবহার করতে হবে।


আমি ff3.6, অর্থাৎ 8, ক্রোম, অপেরা দিয়ে পরীক্ষা করেছি। আপনি এটা এখানে দেখতে পারেন jsbin.com/ifiyo/4 তারা পাশ তাদের পার্শ্ব প্রদর্শন
সটিরিস

আমি ডানদিকে ডানদিকে নাম রাখতে চাইছিলাম, বাম দিকে টাইপ করুন ... আপনি যদি কোনও প্রদর্শন করেন: উভয়টিতে ইনলাইন করুন এবং প্রদর্শনটি সারণি করুন: টেবিল-সারি এটি কাজ করে, আমি ভাবছিলাম যে আরও ভাল উপায় হতে পারে টেবিল-সারি / ঘর বৈশিষ্ট্য ব্যবহার করে এটি করুন।
অবসরের

0

আপনি সরাসরি টেবিলের মধ্যে টেবিল-সেল বাসাতে পারেন। তোমার কাছে টেবিল আছে ইথ টেবিল-সারি শুরু করা কার্যকর হয় না। এটি এইচটিএমএল দিয়ে চেষ্টা করুন:

<html>
  <head>
    <style type="text/css">
.table {
  display: table;
  width: 100%;
}
.tr {
  display: table-row;
  width: 100%;
}
.td {
  display: table-cell;
}
    </style>
  </head>
  <body>

    <div class="table">
      <div class="tr">
        <div class="td">
          X
        </div>
        <div class="td">
          X
        </div>
        <div class="td">
          X
        </div>
      </div>
    </div>

      <div class="tr">
        <div class="td">
          X
        </div>
        <div class="td">
          X
        </div>
        <div class="td">
          X
        </div>
      </div>

    <div class="table">
        <div class="td">
          X
        </div>
        <div class="td">
          X
        </div>
        <div class="td">
          X
        </div>
    </div>

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