0
A
答えて
-2
使用テーブル、次のように:このスタイルの質問は意見ベースを生成する傾向があるが
.table tbody tr td:not(:first-child) {
border: 1px solid blue;
width: 1em;
height:1em;
}
.table tbody tr td:first-child {
font-weight:bold;
}
.table tr td:nth-child(5) {
border:none!important;
}
.table {
border-spacing: 3em;
}
<table class="table">
<thead>
<tr>
<td></td>
<td>1</td>
<td>2</td>
<td>3</td>
<td></td>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td style="background-color:red;"></td>
<td></td>
<td></td>
<td></td>
<td style="background-color:red;"></td>
<td></td>
<td></td>
</tr>
<tr>
<td>B</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td style="background-color:red;"></td>
<td></td>
</tr>
<tr>
<td>C</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>D</td>
<td></td>
<td></td>
<td style="background-color:blue;"></td>
<td></td>
<td></td>
<td></td>
<td style="background-color:blue;"></td>
</tr>
</tbody>
</table>
あなたはまた、レンダリングされたテーブルhere
1
を見ることができます私はそれを正当なものと考えています。自分が仕事に投資する前に特定の問題に取り組む方法に関する専門家の意見を聞く。
今、私はhtmlの専門家ではありません。しかし、質問には言及されていませんが、私は静的なHTML文書ではなくWebアプリケーションに状態情報を表示することができると思います。コンテキスト内でこれが必要なのかもしれません。WebSocketや、関連するページのタイマーベースの更新があります。そして、座席割り当てデータはサーバから来るかもしれません。
上記のシナリオでは、テーブルなしでそれを行う1つの方法は以下のようになります。キャンバス(かなりの時間が費やされていればかなりのレンダリングが可能)とjavascript関数を使って、どこかからスクリプトに入ってくるデータを使っています。このアプローチは、HTMLテーブルベースのソリューションに好適であるかどうか
に降りてくるかもしれません:
- はどのようにきれいな絵があることになっていますか?
- 迷惑な仕事は何ですか? htmlテーブルにスクリプトを埋め込むか、またはキャンバス画像をスクリプトでレンダリングするのですか?ここで
このアプローチを示す小さなプロトタイプ:
<!DOCTYPE html>
<html>
<head>
<title>Demo of a canvas used to render seat plan in a Cinema</title>
<script>
var EMPTY = 0; // Still available for reservation and purchase.
var RESERVED = 1; // reserved but not yet paid for.
var BOUGHT = 2; // bought and paid for.
function Point(x,y) {
return { X: x, Y: y }
}
function Size(w,h) {
return {Width: w, Height: h}
}
function Rectangle(left,top,width,height) {
return {TopLeft: Point(left,top), Size: Size(width,height)}
}
function seatColorFromSeatStatus(seatStatus) {
switch(seatStatus) {
case EMPTY: return "white";
case RESERVED: return "green";
case BOUGHT: return "red";
default: return "black"; // Invalid value...
}
}
function mapSeatStatusToSeatColor(seats)
{
var result = {};
for(seat in seats) {
result[seat] = seatColorFromSeatStatus(seats[seat])
}
return result;
}
function seatKeyFromPosition(row,col) {
return JSON.stringify([row,col]);
}
function seatRowFromKey(key) {
return (JSON.parse(key))[0];
}
function seatColFromKey(key) {
return (JSON.parse(key)[1]);
}
function getSeatInfo(nrows,ncolumns) {
var result = { NRows: nrows, NColumns: ncolumns, Seats : {} };
for(row = 0; row < nrows; row++) {
for(col = 0; col < ncolumns; col++) {
result.Seats[seatKeyFromPosition(row,col)] = EMPTY;
}
}
result.Seats[seatKeyFromPosition(0,0)] = RESERVED;
result.Seats[seatKeyFromPosition(1,3)] = BOUGHT;
return result;
}
function renderSeat(ctx,r,fillColor) {
var backup = ctx.fillStyle;
ctx.strokeStyle = "blue";
ctx.rect(r.TopLeft.X+2,r.TopLeft.Y+2,r.Size.Width-4,r.Size.Height-4);
ctx.stroke();
ctx.fillStyle = fillColor;
ctx.fillRect(r.TopLeft.X+3,r.TopLeft.Y+3,r.Size.Width-5,r.Size.Height-5);
ctx.fillStyle = backup;
}
function renderSeatplan(seatInfo) {
var nrows = seatInfo.NRows;
var ncolumns = seatInfo.NColumns;
var seatColors = mapSeatStatusToSeatColor(seatInfo.Seats)
var canvas = document.getElementById("seatplan");
var ctx = canvas.getContext("2d");
var borderWidth = 10;
var rcContent = Rectangle(
borderWidth
, borderWidth
, canvas.width - 2 * borderWidth
, canvas.height - 2 * borderWidth
);
var szCell = Size(
Math.floor(rcContent.Size.Width/(ncolumns + 1))
, Math.floor(rcContent.Size.Height/(nrows + 1))
);
ctx.font = "30px Arial";
for(row = -1; row < nrows; row++) {
for(col = -1; col < ncolumns; col++) {
var r = Rectangle(
rcContent.TopLeft.X + szCell.Width * (col+1)
,rcContent.TopLeft.Y + szCell.Height * (row+1)
,szCell.Width
,szCell.Height
);
var center = Point(szCell.Width/2, szCell.Height/2);
if (row == -1 && col == -1) {
// nothing to render.
}
else if(row == -1){
// render column headers as numbers...
ctx.fillStyle = "black";
ctx.textAlign = "center";
ctx.fillText(col.toString(),r.TopLeft.X+center.X,r.TopLeft.Y+center.Y+6);
}
else if(col == -1){
// render row header
ctx.fillStyle = "black";
ctx.textAlign = "center";
ctx.fillText(String.fromCharCode(65 + row),r.TopLeft.X+center.X+4,r.TopLeft.Y+center.Y+6);
}
else
{
// render seat
renderSeat(ctx,r,seatColors[seatKeyFromPosition(row,col)]);
}
}
}
}
</script>
</head>
<body onload="renderSeatplan(getSeatInfo(10,16));">
<h1>Seatplan</h1>
<canvas id="seatplan" width="640" height="480"></canvas>
</body>
</html>
これは裸の骨のアプローチであるとして、例えば、角度(Webフレームワークがあること、unmentioned残されてはなりません、node.js、...)、これははるかに少ないコード行で同じ問題を解決する可能性があります。
最終なく、少なくとも、実際にHTMLの専門家があり、ひどい私のコーディングスタイルを見つけるすべての人に私の謝罪;)
関連する問題
- 1. redbusのような座席レイアウトを作るには?
- 2. Java上の配列による座席予約の考え方
- 3. jQueryの座席表の数を制限する方法
- 4. 会場の座席図
- 5. PHPの座席予約システム
- 6. バス座席地図
- 7. 座席予約システムデータベースデザイン
- 8. angularJSで座席図を作成する方法
- 9. Jqueryの座席図とcodeigniterの統合方法
- 10. ユーザーに特定の座席のみを選択させる方法は?
- 11. レイアウトを期待レイアウトのようにデザインする方法
- 12. 円テーブルの2者座席配置
- 13. 出席者によるMYSQL出席
- 14. 動的に作成された座席図にdraggableを付け加えよう
- 15. 3列レイアウト(縦のみ)のようにレイアウトを縦に整列する方法
- 16. 座標のレイアウトを使用してviberプロファイルのような視差効果を作成する方法
- 17. レイアウトを別のレイアウトに配置し、そのレイアウトをクリックしないようにする方法
- 18. setBuiltInZoomControlsによるズームコントロールのレイアウト方法(true)?
- 19. (Jquery-Seat-Charts)プラグインでの座席ネーミングの問題
- 20. RecyclerViewの座標レイアウト内
- 21. (youtubeのような)サブスクリプションデータベースをレイアウトする方法は?
- 22. Palabreのようなレイアウトを実装する方法
- 23. Python:Pymouseの座標をカメの座標に変換する方法
- 24. 航空会社の座席情報 - SOAP API
- 25. Android CallLogのレイアウトのようにレイアウトを作成するには
- 26. フライト番号に基づくセーバー座席図
- 27. テーブルのように見えるこのCSSレイアウトを改善する方法
- 28. PHPどのように動的に出席ベースのシステム
- 29. HTML5 Canvas - Cinema Seating Plan、緑と赤の座席が利用できなくなるように選ばれた座席を取得しようとしています
- 30. ブートストラップCSSのnoobの - 私はこのような何かに見える座席表アプリ作成しようとしています
ないHTMLの専門家だが...私の最初の試みは、おそらくその後、HTML、2Dキャンバスととなりますjavascriptを使って四角形のグリッドをレンダリングします。この関数は、各座席(行、列)の座席ステータス(空白、緑、赤)を得るルックアップテーブルを入力として持つことができます。 – BitTickler
あなたはすでに何をしようとしましたか? – Jhecht
テーブルまたはフレックスのいずれかが機能します。そして、私はあなたがこのようにしなければならないような質問をするべきではないと思っています...それはSOのためではなく、意見ベースの質問です。問題があれば、何かをして特定の質問をしてみてください。 – Hp93