コーディング初心者のグラフィックデザイナーです。
昔、htmlとCSSで簡単なコーディングをしたことはありますが
テーブルコーディングしかしたことがありません。
この度仕事で、自力でコーディングをしなければいけないことになり
(数日中に納品しなければいけないのですが)
大変困っています。
無謀なのはわかっていますが、
お力をお貸しいただけないでしょうか;;
「table-cell」を使用してコーディングしたものを
「table-cell」を使わずにコーディングしなおさなければいけないことになりました。
現状使用しているのは
以下のようなタグです。
【CSS】-----------------------------------------------
#table {
display:table;
margin: auto;
}
.row {
display:table-row;
}
.row>div {
display:table-cell;
margin:0px;
padding:0px;
border:0px;
}
【html】-----------------------------------------------
<div id="table">
<div class="row">
ここにコンテンツ
</div>
</div>
時間がないのですが、
table-cellを使わずに組み直す(修正する)には
どんな方法があるでしょうか?
No.4ベストアンサー
- 回答日時:
と書きながら、そうなっていなかった。
スタイルシート部分を書き直した。
media="screen"
を追加して、ウィンドウ幅で表示を変えるようにmediaqueryを追記した。
これで、ウィンドウを小さくしていくと、デザインが変わるようになる。
そして、印刷やハンドヘルド(携帯電話)などでは、素のデザインのままになる。
★これが、tableを使わないデザインということ。
たぶん、元のHTMLが酷いものになっていると思うので、
>時間がないのですが、
と言われても、少し時間が必要だと思います。もう20年近く言い続けられてきた、構造とプレゼンテーションの分離をされてこられなくて、「テキストを画像に置き換えて表現する。」「余白制御のために画像を用いる。」「ページレイアウトの目的で表を用いる。」「HTMLでページを作らずにプログラムに頼る。」( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )を守ってこられなかったつけが回ってきた。
大変だと思いますが、身に着ければこれほど楽なものはない。(^^)私のHTMLソース( https://oshiete.goo.ne.jp/qa/9285798.html#an9914 … )を見ればお分かりかと。
頑張ってくださいね。
<style type="text/css" media="screen">
<!--
/* わかりやすいように色分け */
html{background-color:gtay;}
body{background-color:silver;}
div.header{background-color:aqua;}
div.section{background-color:yellow;}
div.section div.section{background-color:white;}
div.section div.nav{background-color:lime;}
div.section div.aside{background-color:fuchsia;}
div.footer{background-color:orange;}
/* ここから */
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;}
p{text-indent:1em;}
div.header{min-height:200px;}
div.header,div.section,div.footer{width:90%;min-width:980px;max-width:900px;margin:0 auto;padding:5px;}
div.section{position:relative;}
div.section{min-height:400px;}
div,section div.section{min-height:0;}
div.section div.section,
div.section h2,
div.section p{margin:0 200px;width:auto;min-width:0;}
div.section * p{margin:0;}
div.section div.nav,
div.section div.aside{position:absolute;top:0;width:180px;height:100%;}
div.section div.nav{left:0;}
div.section div.aside{right:0;}
@media screen and (max-width: 979px) {
div.header,div.section,div.footer{width:95%;min-width:0;margin:0 auto;padding:5px;}
div.section{position:relative;}
div.section{min-height:200px;}
div.section div.section,
div.section h2,
div.section p{margin:0 0 0 200px;}
div.section div.aside{position:static;top:auto;width:auto;height:auto;}
div.section div.nav{left:0;}
}
@media screen and (max-width: 640px) {
div.section{position:relative;}
div.section{min-height:200px;padding-top:50px;}
div.section div.section,
div.section h2,
div.section p{margin:0 ;}
div.section div.aside{position:static;top:auto;width:auto;height:auto;}
div.section div.nav{width:100%;left:0;top:0;height:50px;}
}
-->
</style>
No.3
- 回答日時:
スタイルシート部分です。
★ これがtableを使わない本来のHTML/CSSの記述方法です。
16年以上前から言われ続けているので今更で申し訳ない。
★ media="creen" とPCやスマホなどだけのデザインです。
携帯電話や印刷、スクリーンリーダー、点字端末には適用されない。
リキッドですからウィンドウサイズを変えてもよい
★ media="handheld" で携帯電話やPDA用のデザイン
media="print" で印刷用
media="speach" で音声出力--例えばsafariの読み上げ
と別途指定できます。
★ そしてデザインはいつでも変えられる
ナビゲーションリストを様々にデザインしてみよう。( http://www.ichiya.com/WebService/Howto/sample/HT … )
をIEかfirefoxで訪問して、表示メニューからスタイルシートへ進み、いろいろなスタイルを選択してごらんなさい。HTMLは一切変えずにデザインは好きにできるし、印刷用は別のデザイン(印刷プレビュー)で印刷される。
★ tableを使わないデザイン意味はこういうことです。
ページ制作もメンテナンスもとても楽になります。なによりも検索エンジンに「本文はsectionだよ」「ここはナビゲーション(nav)だよ」「ここ(aside)は関係ないよ」と示すことができる。
<style type="text/css">
<!--
/* わかりやすいように色分け */
html{background-color:gtay;}
body{background-color:silver;}
div.header{background-color:aqua;}
div.section{background-color:yellow;}
div.section div.section{background-color:white;}
div.section div.nav{background-color:lime;}
div.section div.aside{background-color:fuchsia;}
div.footer{background-color:orange;}
/* ここから */
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;}
p{text-indent:1em;}
div.header{min-height:200px;}
div.header,div.section,div.footer{width:90%;min-width:630px;max-width:900px;margin:0 auto;padding:5px;}
div.section{position:relative;}
div.section{min-height:400px;}
div,section div.section{min-height:0;}
div.section div.section,
div.section h2,
div.section p{margin:0 200px;width:auto;min-width:0;}
div.section * p{margin:0;}
div.section div.nav,
div.section div.aside{position:absolute;top:0;width:180px;height:100%;}
div.section div.nav{left:0;}
div.section div.aside{right:0;}
-->
</style>
No.2
- 回答日時:
table-cell を使うことと、tableでデザインするというのは、まったく違うことなのですよ。
・・・何かここが理解できていない気がする。1999年(16年前)のHTML4.01の勧告--実際にはその草案が出された18年前あたりから、否定されていたtableを使ってデザインは
「ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」
ですよ。
★ズバリHTMLの問題、HTMLは文書構造だけをマークアップするものなので、表でないものをtableでマークアップするな!!ということ。
《構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )》
一方、display:table-cell; は、文書構造上は、tableデータでないものを、あたかもtableのようにデザインする--プレゼンテーション側の問題。
例えば、次のようなリストがあるとします。
<div class="nav">
<ol>
<li><a href="">製品</a>
<ul>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</li>
・・・。ナビゲーションリストですね。これを表のようにデザインしたい場合に
div.nav ol li{display:table-row;}
div.nav ol li ul li{display:table-cell;}
とか・・
まあ、table-cellには色々厄介な問題があって、display:bock;ないし、display:inline-block;のほうが良いでしょう。
例えば、
<div class="section">
<h2>見出し</h2>
<p>記事</p>
<div class="section">
<h3>見出し</h3>
というHTMLがあったとします。
今更ですが
『DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するため( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』はご存知だと思います・
HTML5では、他に適切な要素があるときはdivは使えませんから
<section>
<h2>見出し</h2>
<p>記事</p>
<section>
<h3>見出し</h3>
となっているはずです。
divはブロック要素です。sectionは、文書のアウトラインを構成するセマンティクなブロック要素です。
あなたの場合は、別にdispaly:table-cellなんてしなくて、
単純に
div.section{
width:80%;
margin:0 auto;
}
とかでよいはずです。
★table、もしくはtable-cellを使わないというのは、具体的な例で示すとわかりやすいのでサンプルを
1) まず、HTMLをデザインは一切無視して、文書構造をマークアップします。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
※ 文書構造しか書かないのでとっても楽ですし、SEOも、ユーザビリティ・アクセシビリティも完璧です。
★タブは_に置換してあるので戻してください。文字コードはShift_JIS
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<style type="text/css">
<!--
/* わかりやすいように色分けだしておく */
html{background-color:gtay;}
body{background-color:silver;}
div.header{background-color:aqua;}
div.section{background-color:yellow;}
div.section div.section{background-color:white;}
div.section div.nav{background-color:lime;}
div.section div.aside{background-color:fuchsia;}
div.footer{background-color:orange;}
-->
_</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<p>このページでは・・・・</p>
_</div>
_<div class="section">
__<h2>見出し</h2>
__<p>本文はsectionのclass名をつけておく。</p>
__<p>HTML5では<section>要素になる。</p>
__<div class="section">
___<h3>項見出し</h3>
___<p>本文記事(二階層目)。HTML5では<section>要素</p>
___<p>sectionの階層でレベルが判断される</p>
__</div>
__<div class="nav">
___<h3>ナビゲーション</h3>
__</div>
__<div class="aside">
___<h3>関連記事</h3>
___<p>
____ここには本文と直接関係ない(asideな)記事を書く。
___</p>
___<p>
____HTML5では<aside></aside>要素になる。
___</p>
__</div>
_</div>
_<div class="footer">
__<h2>文書情報</h2>
__<dl class="documentHistory">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2013-03-03</dd>
__</dl>
_</div>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
<div id="container">の使いか...
-
html の divとtable の役割
-
HTML属性での「""」 「''」違い
-
div要素が重なってします
-
インラインフレームのページ内...
-
divを追加すると下に隠れてしまう
-
1時間30分を簡単に表したいで...
-
divとpの使いわけ
-
複数のボタンを等間隔に、かつ...
-
一括で全体を右にずらす
-
HTMLのJIS規格について
-
hタグの右横に画像を表示
-
可変長要素を中は左寄せのまま...
-
h1に自分自身へのリンクを張...
-
スペースを使わず文字位置を揃...
-
reuterのScraypingで不思議な現...
-
html5でheader,footerこみのwra...
-
h1を親要素の縦中央、画像の横...
-
開閉式の隠し要素が一瞬表示さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
div要素が重なってします
-
HTML属性での「""」 「''」違い
-
複数のボタンを等間隔に、かつ...
-
ヘッダーとフッターだけ背景を...
-
html の divとtable の役割
-
<div id="container">の使いか...
-
divとpの使いわけ
-
min-heightとheightの違いについて
-
HTML5 iframe の代わり
-
divの中に外部のHTMLを埋め込む
-
3カラムレイアウトで「常に残り...
-
ヘッダーを左右に二分割する方...
-
画面を縮小するとカラムが落ち...
-
reuterのScraypingで不思議な現...
-
htmlの見出しタグ(<h1>)の次...
-
1サイト内にHTML5とXHTMLが混在...
-
inline-blockをネストすると表...
-
html5でheaderの中にnav
-
<!-- #BeginLibraryItemとは
おすすめ情報