উল্লম্ব শিরোনাম সহ এইচটিএমএল টেবিল লেখার সর্বাধিক সাধারণ উপায়?


97

হাই কিছুক্ষণ হয়ে গেছে যখন আমি কিছু জিজ্ঞাসা করেছি, এটি এমন কিছু যা আমাকে কিছুক্ষণ বিরক্ত করে চলেছে, প্রশ্নটি নিজেই শিরোনামে রয়েছে:

এইচটিএমএল টেবিলগুলি লেখার আপনার পছন্দের উপায়টি যা উল্লম্ব শিরোনাম রয়েছে?

উল্লম্ব শিরোনাম দ্বারা আমি বলতে চাইছি যে টেবিলটির <th>বাম দিকে শিরোনাম ( ) ট্যাগ রয়েছে (সাধারণত)

শিরোনাম 1 ডেটা ডেটা ডেটা
শিরোনাম 2 ডেটা ডেটা ডেটা
শিরোনাম 3 ডেটা ডেটা ডেটা

এগুলি দেখতে দেখতে এ পর্যন্ত আমি দুটি বিকল্প নিয়ে এসেছি

প্রথম বিকল্প

   
    <table id="vertical-1">
            <caption>First Way</caption>
            <tr>
                <th>Header 1</th>
                <td>data</td><td>data</td><td>data</td>
            </tr>
            <tr>
                <th>Header 2</th>
                <td>data</td><td>data</td><td>data</td>
            </tr>
            <tr>
                <th>Header 2</th>
                <td>data</td><td>data</td><td>data</td>
            </tr>
        </table>
   

এই উপায়টির প্রধান সুবিধাটি হ'ল এটি উপস্থাপিত করে যে ডেটা উপস্থাপিত করে তার পাশেই আপনার ডানদিকে (আসলে বামে) থাকে, যা আমি পছন্দ করি না তা হ'ল <thead>, <tbody>এবং <tfoot>ট্যাগগুলি অনুপস্থিত এবং এগুলি না ভেঙে এগুলি অন্তর্ভুক্ত করার কোনও উপায় নেই নিকেলিতে উপাদানগুলি একসাথে রাখা হয়েছে, যা আমাকে দ্বিতীয় বিকল্পে নিয়ে যায়।

দ্বিতীয় বিকল্প

   
        <style type="text/css">
            #vertical-2 thead,#vertical-2 tbody{
                display:inline-block;
            }

        </style>
        <table id="vertical-2">
            <caption>Second Way</caption>
            <thead>
                <tr>
                    <th colspan="3">Header 1</th>
                </tr>
                <tr>
                    <th colspan="3">Header 2</th>
                </tr>
                <tr>
                    <th colspan="3">Header 3</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>row 1</td>
                    <td>row 1</td>
                    <td>row 1</td>
                </tr>
                <tr>
                    <td>data</td>
                    <td>data</td>
                    <td>data</td>
                </tr>
                <tr>
                    <td>data</td>
                    <td>data</td>
                    <td>data</td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td colspan="4">Footer</td>
                </tr>
            </tfoot>
        </table>
   

এখানে মূল সুবিধা আপনি একটি সম্পূর্ণরূপে বর্ণনামূলক এইচটিএমএল টেবিল আছে, অপূর্ণতা সঠিক উপস্থাপনা জন্য CSS একটি বিট প্রয়োজন হয় tbodyএবং theadট্যাগ এবং যে হেডার এবং তথ্য মধ্যে সম্পর্ক খুব আমি আমার সন্দেহ ছিল যখন তৈরি পরিষ্কার করা হয় না মার্কআপ।


সুতরাং, উভয় উপায়ে টেবিলটি কীভাবে করা উচিত তা এখানে পেশ করুন:

রেন্ডার
বাম বা ডানদিকে শিরোলেখগুলি দিয়ে আপনি যদি এটি পছন্দ করেন তবে, কোনও পরামর্শ, বিকল্প, ব্রাউজার সমস্যা?

উত্তর:


47

প্রথমত, আপনার দ্বিতীয় বিকল্পটি এই অর্থে যথেষ্ট বৈধ HTML নয় যে কোনও টেবিলের সমস্ত সারি (টিআর) এর সমান সংখ্যক কলাম (টিডি) থাকা উচিত) আপনার শিরোনামের 1 টি শরীরে রয়েছে 3 You এটি ঠিক করতে আপনার কলস্পান বৈশিষ্ট্যটি ব্যবহার করা উচিত।

উল্লেখ: "THEAD, TFOOT, এবং TBODY বিভাগগুলিতে অবশ্যই একই সংখ্যক কলাম থাকতে হবে।" - বিভাগ 11.2.3 এর শেষ অনুচ্ছেদ

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


আপনি যে প্রথম সমস্যাটি উল্লেখ করেছেন তার সমাধান করা কি সত্যই প্রয়োজন? যেহেতু আপনি যদি কেবল একটি কক্ষ যুক্ত করেন, এটি স্বয়ংক্রিয়ভাবে প্রথম স্থান নেয় এবং বাকিগুলি উপেক্ষা করে?
লুহোপলি

হাই, অবৈধ মার্কআপ হাইলাইট করার জন্য ধন্যবাদ, আমি এটি সংশোধন করব।
ত্রিস্টিয়ান

@ নিডিও - আমি আমার পোস্টে এইচটিএমএল 4 ডকুমেন্টেশন থেকে একটি রেফারেন্স যুক্ত করেছি যাতে স্পষ্টভাবে বলা আছে যে থ্যাড, টিএফওআউট এবং টিবিডি'তে একই সংখ্যক কলাম থাকতে হবে।
ফ্রাঙ্কোইস দেশচেনেস

@ ট্রিজটিয়ান - আরও একটি জিনিস। TFOOT সরাসরি থ্যাডের নীচে থাকা উচিত (এবং টিবিডিওয়াইসের আগে)। আবার এটি এইচটিএমএল স্পেসিফিকেশনের ১১.২.৩ ধারায় আচ্ছাদিত।
ফ্রাঙ্কোইস দেশচেনেস

4
@ প্রোডিজিটালসন - scopeবৈশিষ্ট্যটি এই ক্ষেত্রে আসলে খুব বেশি পার্থক্য আনবে না। আপনি যদি এটি পড়েন তবে বুঝতে পারবেন। মূলত এর অর্থ হ'ল যে কলামগুলি এতে থাকা সারি বা কলামের জন্য শিরোনাম। সমস্যা এটা ব্যবহার অর্থে দেখা যায় না, যদি না যদি প্রতিস্থাপন ছিল <th>একটি সঙ্গে <td scope="row">
ফ্রাঙ্কোইস দেশচেনেস


2

সত্যিই, বিকল্প 1। আমি আপনাকে W3.org (নীচের লিঙ্ক) থেকে এই উদাহরণটি দেখার পরামর্শ দিচ্ছি। আমি মনে করি এই পদ্ধতিটি সর্বোত্তম, কারণ এইভাবে আপনার শিরোনামগুলি স্ক্রিন পাঠকদের জন্যও ব্যাখ্যা করা হবে।

https://www.w3.org/WAI/tutorials/tables/one-header/#table-with-header-cells-in-the-first-column-only


0

আপনি যদি নিজের টেবিলে ডেটা-সীমাবদ্ধ নিয়ন্ত্রণ উপাদান (যেমন রিপিটার হিসাবে) দেখাতে চান তবে প্রথম বিকল্পটি সম্ভব হবে না। দ্বিতীয় বিকল্পটি নীচে ব্যবহার করা যেতে পারে।

<asp:Repeater ID="hours" runat="server">
    <HeaderTemplate>
    <table id="vertical-table">
        <thead>
            <tr><th colspan="0">hours:</th></tr>
            <tr><th colspan="1">Monday</th></tr>
            <tr><th colspan="1">Tuesday</th></tr>
            <tr><th colspan="1">Wednesday</th></tr>
            <tr><th colspan="1">Thursday</th></tr>
            <tr><th colspan="1">Friday</th></tr>
            <tr><th colspan="1">Saturday</th></tr>
            <tr><th colspan="1">Sunday</th></tr>
        </thead>
        <tbody>
    </HeaderTemplate>
    <ItemTemplate>
            <tr><td><%# Container.DataItem %></td></tr>
    </ItemTemplate>
    <FooterTemplate>
        </tbody>
    </table>
    </FooterTemplate>
</asp:Repeater>

-3

div.vertical {
  margin-left: -85px;
  position: absolute;
  width: 215px;
  transform: rotate(-90deg);
  -webkit-transform: rotate(-90deg);
  /* Safari/Chrome */
  -moz-transform: rotate(-90deg);
  /* Firefox */
  -o-transform: rotate(-90deg);
  /* Opera */
  -ms-transform: rotate(-90deg);
  /* IE 9 */
}

th.vertical {
  height: 220px;
  line-height: 14px;
  padding-bottom: 20px;
  text-align: left;
}
<table>
  <thead>
    <tr>
      <th class="vertical">
        <div class="vertical">Really long and complex title 1</div>
      </th>
      <th class="vertical">
        <div class="vertical">Really long and complex title 2</div>
      </th>
      <th class="vertical">
        <div class="vertical">Really long and complex title 3</div>
      </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Example</td>
      <td>a, b, c</td>
      <td>1, 2, 3</td>
    </tr>
  </tbody>
</table>


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