2009-06-12 21 views
1

HTMLを使用して構造化データを提示する方法について質問があります。HTMLを使用して構造化データを表示

通常、セクションやサブセクション(つまり<h1><h2>など)を使用して、および/またはネストされたリスト(サブアイテムのリストを含むアイテムのリスト)を使用して表示される、いくつかのツリー状のデータがあります。

このデータの例は、サブタスクとサブサブタスクを含むタスクを持つToDoリストです。

これらの各データは、例えば、プロパティが関連付けられている:

  • bool completed;
  • DateTime completionDate;
  • Priority priority;

を私の質問は、あなたがする良い方法として提案する何をすべきか、ありますこのデータをHTMLを使用して1ページに表示しますか?テーブルの列の

  • 一つは、プロパティの値を示し、各行のタスクまたはサブタスク
  • 他の列を示している:


    私の最初のアイデアは、テーブルとしてそれを提示することですそのタスクに関連付けられているタスク(たとえば、「完了済み」など)

私の問題は、すべてのタスクとサブタスクを1つのテーブル列に表示すると、タスクがどのようにn ested:例えば、2番目の行が実際に最初の行のサブタスクであることは示されません。あなたはその問題を回避する方法を提案できますか?私は深く、各アイテムをネストされた方法を示すために「>」のような山形の可変数でアイテムを飾る考えたとえば、されています。それにいくつかの問題はしかし、ある

TASK     COMPLETED 

Some major task   No 
> A subtask    Yes 
> Another subtask   Yes 
> > A sub-subtask   Yes 
Next major task   No 

  • それは見えるかもしれません醜いと私はそれが直感的に理解できるとそれができるように読みやすいとは確信していません。他の装飾、または単に可変長の空白のインデントが良いでしょうか?
  • HTML + CSSを使ってエンコードするためのエレガントな方法はありません。たとえば、HTMLを使用して装飾を挿入するか、CSSを使用して装飾を挿入しますか? CSSを使用している場合は、class="level1"からclass="level6"までのようなものを追加して入れ子レベルを表示しますか?

第二の方法は、私もやるであろう... ...例えば、垂直方向に流れ、テキストとしてそれを提示する

<h1>Some major task</h1> 
<p>Completed: no.</p> 
<h2>A subtask</h2> 
...etc... 

だろうが、私も欲しいです読者がプロパティ値の列をスキャンすることを可能にするビュー。これは、プロパティ値が他のテキストに散在するのではなく、列に揃えられたときに簡単です。


これは、コーディングよりもUIデザインの詳細ですが...私は確かにこの種のデータを表示したい最初の人ではありませんが、例を見たことは覚えていませんので、お聞きしたいと思います。

+0

質問のタイトルは、特定/非常にわかりやすいではありません。あなたができる場合は、それを改善すること自由に感じなさい。 – ChrisW

答えて

3

必要なUIコンポーネントは、TreeTable(またはTree Table)と呼ばれます。 Javascript/HTMLにはvarious implementationsがあります。ここには、JavaScriptを使用するoneがあります。ここには純粋なHTML/CSSのanother oneがあります(折りたたむ/展開しません)

+0

ありがとうございました。 – ChrisW

+0

うわー、結局は正しい答えがあると思います。振り返ってみると、理にかなう質問を理解するために+1してください。 :-) –

+0

「列ツリー」とも呼ばれます。 http://www.google.ca/search?hl=ja&q=column+treeとhttp://extjs.com/deploy/dev/examples/tree/column-tree.html – ChrisW

0

UL、OL、LIはこの目的に適しています。 JSONとしてそれを構成することは、さらに優れています。 JSONからHTMLをレンダリングすることができます。

0

質問には間違った答えがありません。しかし、私は質問の中でこの質問に答えます。

CSSを使用している場合、それはネスティング レベルを表示するには=「LEVEL6」 クラスを通じてクラス=「LEVEL1」のような 何かを追加することによってでしょうか?

いいえ。あなたはCSSで適切なセレクタを使用します。

li { 
    // level one style 
} 

li li 
{ 
    // level two style 
} 

etc. 
+0

私はクラス属性を持つことを考えていましたセクションタイトルを含む​​に追加することができます。ネストされたリストをテーブルとカラムのようなプロパティと組み合わせて使用​​する方法を見ていませんでした。 – ChrisW

+1

これは表形式のリストの例です:http://www.tbrown.org/ideas/tabularlist/ 私は枝のリストだけを使い、葉のテーブルを使うと思います。 –

1

あなたは、HTMLの階層構造にネストすることについて話しています。その性質上、特別な作業を行う必要はありません。

奥行きなどの特別な考慮を必要とせずに、必要なのは単純な再帰的なリストだけです。余分な作業をしなくても、任意のレベルに展開崩壊機能を追加することもできます。ネスティングが再帰的になるように

<ul> 
    <li> 
    <div class="task-group"> 
     <span class="task-title">Task 1</span> 
     <span class="task-status">Complete</span> 
     <ul> 
     <li> 
      <div class="task-group"> 
      <span class="task-title">Task 1a</span> 
      <span class="task-status">Complete</span> 
      </div> 
     <li> 
      <div class="task-group"> 
      <span class="task-title">Task 1b</span> 
      <span class="task-status">Incomplete</span> 
      </div> 
     </li> 
     </ul> 
    </div> 
    </li> 
</ul> 

次に、あなただけの親に対する余裕を持つように各タスク・グループのスタイル。 liのスタイルで作業のための魅力的な(またはいいえ)弾丸を設定し、それがあなたがそれをレイアウトするようにtask-statusクラスの位置をカスタマイズします。

CSSで相対的なテキストサイズを設定することによって、小さなサブタスクを再帰的に小さなテキストサイズを継承するようにすることもできます。 .75emのようなものなので、各レベルは前のレベルの3/4よりも小さくなります。

このような何か:

.task-group { 
    font-size: .75em; 
    margin-left: 1em; 
} 
.task-title { 
    text-decoration: underline; 
    float: left; 
} 
.task-status { 
    float: right; 
} 
+0

これはきちんとした答えのようです。 2つ以上の列(たとえば、1つのタイトルと3つの異なるプロパティで構成された4つの列)に対応するために、「浮動小数点:左」と「浮動小数点:右」をどのように変更しますか?また、浮動小数点数は明示的な幅にする必要がありますか? – ChrisW

+0

@ChrisW、もしあなたが数カラム以上を持っているなら、明らかにフローティングを確実に使うことはできません。また、私はあなたに拾い幅とその他のものを残します。私の要点は、単純にHTMLの階層的性質がこの種の入れ子を非常に単純にすることでした。しかし、私はykaganovichの答えが正しいと信じています。 – Welbog

+0

お返事ありがとうございます。魅力的なので、あなたの提案が2つ以上の列で機能しない場合は残念です:(最初の)表のようなレイアウトと(2番目の)テキストのレイアウトの両方で同じHTMLを使用できるように見えるので、 CSSを変更するだけで私は各アイテムの幅を指定することができると仮定して、なぜ私は "明らかにフローティングを確実に使用することはできない"と言いますか? 2つ以上の項目を浮動させる例はhttp://css.maxdesign.com.au/floatutorial/introduction09.htm – ChrisW

関連する問題