একটি সিএসএস "প্রদর্শন: টেবিল-কলাম" কীভাবে কাজ করার কথা?


87

নিম্নলিখিত এইচটিএমএল এবং সিএসএস দেওয়া, আমি আমার ব্রাউজারে একেবারে কিছুই দেখতে পাই না (লেখার সময় Chrome এবং IE সর্বশেষ)। সমস্ত কিছু 0x0 পিক্সে নেমে যায়। কেন?

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        section { display: table; height: 100%; background-color: grey; }

        #colLeft { display: table-column; height: 100%; background-color: green; }
        #colRight { display: table-column; height: 100%; background-color: red; }

        #row1 { display: table-row; height: 100%; }
        #row2 { display: table-row; height: 100%; }
        #row3 { display: table-row; height: 100%; }

        #cell1 { display: table-cell; height: 100%; }
        #cell2 { display: table-cell; height: 100%; }
        #cell3 { display: table-cell; height: 100%; }
    </style>
</head>
<body>
    <section>
        <div id="colLeft">
            <div id="row1">
                <div id="cell1">
                    AAA
                </div>
            </div>
            <div id="row2">
                <div id="cell2">
                    BBB
                </div>
            </div>
        </div>
        <div id="colRight">
            <div id="row3">
                <div id="cell3">
                    CCC
                </div>
            </div>
        </div>
    </section>
</body>
</html>

উত্তর:


118

সিএসএস সারণী মডেলটি এইচটিএমএল টেবিল মডেলের উপর ভিত্তি করে http://www.w3.org/TR/CSS21/tables.html

একটি টেবিলটি ROWS এ বিভক্ত এবং প্রতিটি সারিতে এক বা একাধিক ঘর রয়েছে। ঘরগুলি ROWS এর শিশু, এগুলি কলামের কখনও নেই।

"প্রদর্শন: টেবিল-কলাম" কলামার লেআউটগুলি তৈরি করার জন্য কোনও প্রক্রিয়া সরবরাহ করে না (যেমন একাধিক কলাম সহ সংবাদপত্রের পৃষ্ঠা, যেখানে সামগ্রীটি একটি কলাম থেকে অন্য স্তরে প্রবাহিত হতে পারে)।

বরং, "টেবিল-কলাম" কেবলমাত্র টেবিলের সারিগুলির মধ্যে সংশ্লিষ্ট কক্ষগুলিতে প্রযোজ্য বৈশিষ্ট্য সেট করে। উদাহরণস্বরূপ "প্রতিটি সারিতে প্রথম কক্ষের পটভূমি রঙ সবুজ" বর্ণিত হতে পারে।

টেবিলটি নিজেই সর্বদা একইভাবে যেমন এটি এইচটিএমএল তে কাঠামোযুক্ত হয়।

এইচটিএমএলে (লক্ষ্য করুন যে "টিডি" গুলি "টিআর" এর ভিতরে রয়েছে, "কোল" এর ভিতরে নয়):

<table ..>
  <col .. />
  <col .. />
  <tr ..>
    <td ..></td>
    <td ..></td>
  </tr>
  <tr ..>
    <td ..></td>
    <td ..></td>
  </tr>
</table>

সিএসএস সারণী বৈশিষ্ট্য ব্যবহার করে এইচটিএমএল সম্পর্কিত (নোট করুন যে "কলাম" ডিভগুলিতে কোনও সামগ্রী নেই - মানকটি সরাসরি কলামগুলিতে সামগ্রীর জন্য অনুমতি দেয় না):

.mytable {
  display: table;
}
.myrow {
  display: table-row;
}
.mycell {
  display: table-cell;
}
.column1 {
  display: table-column;
  background-color: green;
}
.column2 {
  display: table-column;
}
<div class="mytable">
  <div class="column1"></div>
  <div class="column2"></div>
  <div class="myrow">
    <div class="mycell">contents of first cell in row 1</div>
    <div class="mycell">contents of second cell in row 1</div>
  </div>
  <div class="myrow">
    <div class="mycell">contents of first cell in row 2</div>
    <div class="mycell">contents of second cell in row 2</div>
  </div>
</div>



বিকল্প : উভয় "সারি" এবং "কলাম" নীচে প্রতিটি সারি এবং ঘরে একাধিক ক্লাস বরাদ্দ করে স্টাইল করা যেতে পারে। এই পদ্ধতির মাধ্যমে বিভিন্ন ঘর বা পৃথক কোষকে স্টাইল করার জন্য সুনির্দিষ্ট করে সর্বাধিক নমনীয়তা পাওয়া যায়:

//Useful css declarations, depending on what you want to affect, include:

/* all cells (that have "class=mycell") */
.mycell {
}

/* class row1, wherever it is used */
.row1 {
}

/* all the cells of row1 (if you've put "class=mycell" on each cell) */
.row1 .mycell {
}

/* cell1 of row1 */
.row1 .cell1 {
}

/* cell1 of all rows */
.cell1 {
}

/* row1 inside class mytable (so can have different tables with different styles) */
.mytable .row1 {
}

/* all the cells of row1 of a mytable */
.mytable .row1 .mycell {
}

/* cell1 of row1 of a mytable */
.mytable .row1 .cell1 {
}

/* cell1 of all rows of a mytable */
.mytable .cell1 {
}
<div class="mytable">
  <div class="column1"></div>
  <div class="column2"></div>
  <div class="myrow row1">
    <div class="mycell cell1">contents of first cell in row 1</div>
    <div class="mycell cell2">contents of second cell in row 1</div>
  </div>
  <div class="myrow row2">
    <div class="mycell cell1">contents of first cell in row 2</div>
    <div class="mycell cell2">contents of second cell in row 2</div>
  </div>
</div>

আজকের নমনীয় ডিজাইনে, যা <div>একাধিক উদ্দেশ্যে ব্যবহৃত হয়, প্রতিটি ডিভিতে কিছু শ্রেণি স্থাপন করা, এটি উল্লেখ করতে সহায়তা করা বুদ্ধিমানের কাজ । এখানে, <tr>HTML এ যা ব্যবহৃত হত তা হয়ে ওঠে class myrow, এবং <td>হয়ে ওঠে class mycell। এই সম্মেলনটি হ'ল উপরের সিএসএস নির্বাচনকারীদের দরকারী করে তোলে।

পারফরম্যান্স নোট : প্রতিটি কক্ষে শ্রেণীর নাম স্থাপন করা এবং উপরোক্ত বহু-শ্রেণীর নির্বাচক ব্যবহার করা বাছাইকারীদের *যেমন শেষ .row1 *বা এমনকি সমাপ্তি ব্যবহার করার চেয়ে ভাল পারফরম্যান্স .row1 > *। কারণটি হ'ল নির্বাচকরা সর্বশেষে সর্বশেষে মিলিত হয় , সুতরাং যখন ম্যাচিং উপাদানগুলির সন্ধান করা হয়, .row1 *প্রথমে এটি করে *, যা সমস্ত উপাদানগুলির সাথে মেলে এবং তারপরে কোনও পূর্বপুরুষের রয়েছে কিনা তা অনুসন্ধানের জন্য প্রতিটি উপাদানটির সমস্ত পূর্বপুরুষদের চেক করেclass row1 । এটি ধীর ডিভাইসের কোনও জটিল দস্তাবেজে ধীর হতে পারে। .row1 > *আরও ভাল, কারণ কেবল তাত্ক্ষণিক পিতামাতা পরীক্ষা করা হয়। তবে এর মাধ্যমে বেশিরভাগ উপাদানগুলি অবিলম্বে নির্মূল করা আরও ভাল .row1 .cell1। (.row1 > .cell1এটি আরও শক্ততর ধারণা, তবে এটি অনুসন্ধানের প্রথম ধাপ যা সবচেয়ে বড় পার্থক্য তৈরি করে, তাই এটি সাধারণত বিশৃঙ্খলার পক্ষে মূল্যহীন নয় এবং অতিরিক্ত চিন্তা-ভাবনা প্রক্রিয়া এটি সর্বদা সরাসরি শিশু হবে কিনা তা যোগ করার ক্ষেত্রে শিশু নির্বাচক >।)

পুনরায় পারফরম্যান্স সরিয়ে নেওয়ার মূল পয়েন্টটি হ'ল নির্বাচকের সর্বশেষ আইটেমটি যথাসম্ভব নির্দিষ্ট হওয়া উচিত এবং এটি কখনই হওয়া উচিত নয় *


আমি নিজে চেষ্টা করে দেখিনি, তবে আমি tanalin.com/en/projects/display-table-htc এর জন্য সুপারিশ দেখেছি যা আই 6 এবং আই 7 এর জাভাস্ক্রিপ্ট সমাধান। জাভাস্ক্রিপ্ট চললে এটি পৃষ্ঠাটিকে পুরানো এইচটিএমএল টেবিল ট্যাগগুলিতে রূপান্তর করে।
টুলমেকারস্টেভ

সমাধান IE8 +, ফায়ারফক্স, ক্রোম, আইপ্যাড, অ্যান্ড্রয়েডে কাজ করে। যদি আপনার কোনও টেবিলের নমনীয় কাঠামোর প্রয়োজন হয় এবং আপনি উপরে তালিকাভুক্ত আরও আধুনিক ব্রাউজারগুলিকে সমর্থন করছেন তবে টেবিল বিন্যাসগুলি এড়ানোর এটি একটি ভাল উপায়।
এমবোকিল

<col style="color: red;" >কাজ নয়, কিন্তু <col style="background-color: red;" >ঠিক আছে! এতে কী ভুল?
xgqfrms

@xgqfrms: কিছু অন্যান্য সিএস বিধি অবশ্যই রঙকে ছাড়িয়ে যাবে। সম্ভবত আপনার ঘরের অভ্যন্তরে কোনও উপাদান প্রয়োগ করার জন্য একটি বিধি প্রয়োগ করা হয়েছে। উদাহরণস্বরূপ, যদি আপনার পাঠ্য <p> এর ভিতরে থাকে তবে কোথাও আপনার আরও নির্দিষ্ট নিয়মের সেটিং <p> রঙ রয়েছে। ব্যবহার করে দেখুন <col style="color: red !important;">। এটি যদি কাজ করে তবে সমস্যাটি। তবে অতিরিক্ত ব্যবহারের অভ্যাসে যাবেন না !important। সেই কাজটি দেখার পরে, এটি সরিয়ে ফেলার জন্য সেরা, এবং আরও সুনির্দিষ্ট নির্বাচককে অগ্রাধিকার দেওয়ার জন্য বের করুন। গুগল "সিএসএস আরও সুনির্দিষ্ট নির্বাচক", অথবা স্ম্যাশিংমাগাজাইন.
com

23

"টেবিল-কলাম" প্রদর্শনের ধরণটির অর্থ এটি <col>HTML এ ট্যাগের মতো কাজ করে - যেমন একটি অদৃশ্য উপাদান যার প্রস্থ * এনকোলেসিং টেবিলের সংশ্লিষ্ট শারীরিক কলামের প্রস্থকে পরিচালনা করে।

সিএসএস টেবিলের মডেল সম্পর্কে আরও তথ্যের জন্য ডাব্লু 3 সি স্ট্যান্ডার্ডটি দেখুন ।

* এবং কয়েকটি অন্যান্য বৈশিষ্ট্য যেমন সীমানা, ব্যাকগ্রাউন্ড।


4
যদি colউপাদানটির একটি যৌক্তিক কাঠামো থাকে, যা এটি করে, তবে সিএসএস নিয়মটি ব্যবহার করে কেউ কীভাবে ন্যায়সঙ্গত করতে পারে display: table-column;, যার কেবল উপস্থাপনা কাঠামো রয়েছে? display( W3.org/wiki/CSS/Properties/display ) এর চশমা অনুসারে , এটি একটি colউপাদানটির মতো "আচরণ" করার কথা । তবে আমি কীভাবে এটি দরকারী তা দেখতে পাচ্ছি না ...
ছারভে

4
@ TestSubject528491 কারণ এরপরে আপনি একটি [উপস্থিতি] সারণীর কলামের পটভূমি, কলামের প্রস্থ ইত্যাদি সেট করতে পারেন। তবে প্রকৃতপক্ষে এটি <col>ট্যাগের জন্য ডিফল্ট শৈলীর বিধি নির্দিষ্ট করার ক্ষেত্রে , বা অন্য কোনও এক্সএমএল-ভিত্তিক মার্কআপ ভাষায় সমতুল্য ট্যাগ নির্দিষ্ট করে দেওয়ার ক্ষেত্রে বেশিরভাগ ক্ষেত্রে কার্যকর ।
র্যান্ডম 832

@ ছারভে: এইচটিএমএল colএকটি লজিক্যাল উপাদান যা কেবল উপস্থাপনামূলক স্টাইলিং ধারণ করে । আপনি এতে তথ্যের কলাম রাখতে পারবেন না - এটি একটি সাধারণ ভুল বোঝাবুঝি। সারণী ডেটা সর্বদা সারি থাকে। display: table-column;একটি যৌক্তিক উপাদানকে (সাধারণত একটি div) একটিতে রূপান্তর করে col। এটি উপস্থাপনা ধারণা "একটি কলাম" প্রয়োগ করতে সেই উপাদানটিকে নির্ধারিত অন্যান্য শৈলীর ক্ষেত্রগুলির কারণ করে। ফলাফলটি একটি যৌক্তিক উপাদান যা প্রদর্শিত হয় না এবং যার সামগ্রীগুলি যদি থাকে তবে তা উপেক্ষা করা হয়; এর একমাত্র প্রভাব সম্পর্কিত উপস্থাপনাটির "কলামগুলিতে" শৈলী প্রয়োগ করা। একটি টেম্পলেট জন্য আমার উত্তর দেখুন।
নির্মাতা স্টিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.