ネスケでtableのmargin-leftが効かない(スタイルシート)

[上に] [前に] [次に]
ケットシー [E-Mail] 2000/03/08(水) 18:11:06
HTML4.0 Strict + CSS1でHTML文書を作成していたのですが、問題がおきました。
IE5では問題無く表示されるのですが、NC4.7ではうまく表示されないのです。

style.css内で以下の様に指定しています。
-----------------------------------------

p { margin-left: 4em; }
table { margin: 0em 0em 1em 4em; }

-----------------------------------------

ネスケでみると、pの指定は有効で、左側に余白をとって表示されるのですが
tableの左余白の指定は効かず、左側にぴったりくっついて表示されてしまいます。
そのため、表だけが左にでっぱってなんともカッコ悪いです。

色々な数値をためしてみた結果、右の余白も指定が無効になっているようです。
しかし、上下の余白はちゃんとなります。
NC4.7ではtableの左右の余白は指定できないとしてあきらめるしかないのでしょうか。

なにか対処方法があったら教えて下さい。

ラクーン市警 2000/03/08(水) 18:21:23
>なにか対処方法があったら教えて下さい。

ないです。

Syn [E-Mail] 2000/03/08(水) 18:45:59
邪道かもですが、

.alternate-table {
    margin-left: 4em;
}

として

<div class="alternate-table">
<table>
:
</table>
</div>

でどうでしょう。

ラクーン市警 2000/03/08(水) 19:21:25
そういうこざかしい手法を使うとせっかく
css使ってる意味が無くなりますね、はい。
書かないほうがいいですね。
使っちゃう奴がいるので。

Syn [E-Mail] 2000/03/08(水) 20:13:40
どのへんが小賢しいでしょうか。
<table> を括るだけの <div> は無意味に見えますか?
でも、

<div class="○○表">
  <table class="表本体">
  :
  </table>
  <p class="注記事項">
  注:
  〜〜は××です。
  </p>
</div>

なんて使いかたもできるので、とくに論理構造として間違っている
とは思いませんけど。

# class="注記事項" はうまく inherit しないと妙な表示になるか
# もだけど

EMI 2000/03/08(水) 20:30:28
自分で、
>邪道かもですが、
と言っておいて、
>どのへんが小賢しいでしょうか。
もないと思いますが、要は、既に論理構造として完成しているHTMLをスタイルシートがうまく働かないからと言っていじり直すことが「邪道である」とか「小賢しい」とかそういうことではないかと思います。

ケットシー [E-Mail] 2000/03/09(木) 02:13:38
[[解決]]
>Synさん
divでくくる方法があったのですね。
結構基本だったかも。

小賢しいとかそういうことが言われてますが、
divはスタイルコンテナなのでSynさんの使い方は小賢しいなんてことはなく、
むしろdivの自然な使い方だと私は思います。

解答ありがとうございました。

#でもtableに直接スタイルシートで設定する方法がないのは残念。

コウノトリ 2000/03/09(木) 02:30:41
解決しちゃってるけど・・・

私もdivの使用には反対です。
というのは、divにレイアウト目的以外の意味がないから。
明らかに間違った使い方です。
こんな使い方をするならTrabsitionalのcss無しで書いたほうが何倍もマシです。

ケットシー [E-Mail] 2000/03/09(木) 15:15:31
> というのは、divにレイアウト目的以外の意味がないから。
> 明らかに間違った使い方です。

・Synさんの提案された方法では、divがレイアウトを整える以外の意味と目的を持っていない。
論理構造をしっかりさせるHTML Strictでは、
意味のないエレメントを挿入することは方針として間違っている。

W3Cの仕様書(strict.dtd)では、
<!ELEMENT DIV - - (%flow;)*            -- generic  anguage/style container -->
<!ATTLIST DIV
  %attrs;                              -- %coreattrs, %i18n, %events --
  %reserved;                           -- reserved for possible future use --
  >
とされています。
つまり、ブロックレベルとインラインレベルの要素に対して、
「包括的な言語属性/スタイルシートで定義する属性」
を与える「箱」として導入されているということです。

レイアウト目的に使っているのに、どうして間違った使い方なんですか?

あなたの仕様書の解釈が私のものと異なっているならば、それを聞かせて下さい。

#ごめんなさい、雰囲気のよい発言でなくて。

ケットシー [E-Mail] 2000/03/09(木) 15:18:14
ごめんなさい。上の発言書き間違えました。

何回も読んでいるうちに色々な意味で取れてしまったので、
「・Synさんの〜方針として間違っている。」と考えていると解釈して反論します。

に差しかえてください。

らー 2000/03/09(木) 15:46:47
>レイアウト目的に使っているのに、どうして間違った使い方なんですか?

「間違っている」かは不明ですけど、「よろしくない」のには同感です。
WAI の指針からすれば「レイアウト目的で」HTML を使っているのが「よろしくない」のです。

DIV は箱として用意されたものというよりは、
そのブロックを意味するに相応しいブロック要素がない場合のためのものであると思います。

確かに、

><div class="○○表">
>  <table class="表本体">
>  :
>  </table>
>  <p class="注記事項">
>  注:
>  〜〜は××です。
>  </p>
></div>

は論理的といえるかもしれません。
しかし、それが「物理的指定といわれないように」後からこじつけたものであっては、よろしくないでしょう。

Syn さんも「出来ることならしたくない方法」と自覚していませんか?(^-^;)

ケットシー [E-Mail] 2000/03/09(木) 17:10:48
> DIV は箱として用意されたものというよりは、
> そのブロックを意味するに相応しいブロック要素がない場合のためのものであると思います。

divが「箱」だというのは、私個人の解釈ではなく、dtdの注釈にある"container"の訳です。
それを示すためにかぎかっこをつけたのですが、伝わらなかったようで残念です。

> WAI の指針からすれば「レイアウト目的で」HTML を使っているのが「よろしくない」のです。

これは違うでしょう。他の人もここを勘違いしている様です。
「レイアウト目的でHTMLを使う」のが悪いのではなく、
「HTMLでレイアウトを指定する」のが悪いのです。
実際、class="hoge"などのアトリビュート指定はレイアウト目的で使われているでしょう。
しかし、レイアウトを指定するのはスタイルシートなのです。

こう考えれば、divを挿入することは「ここはかたまりだよ〜」
という論理的意味を与えることであって、
それにスタイルシートが組み合わさって初めてレイアウトを指定できるのです。

ただ、箱の中にtableが1つだけというのに違和感があるのは私もわかります。
でも、要素がいくつであるかなんてことは問題じゃないんじゃないですか?

らー 2000/03/09(木) 17:27:19
>divが「箱」だというのは、私個人の解釈ではなく、
>dtdの注釈にある"container"の訳です。
>それを示すためにかぎかっこをつけたのですが、
>伝わらなかったようで残念です。

すいません(^-^;)
箱というのを強調したいための鍵括弧かと受け取ってしまいました。

>「レイアウト目的でHTMLを使う」のが悪いのではなく、
>「HTMLでレイアウトを指定する」のが悪いのです。

書き方を間違えました。
そもそも「HTML でレイアウトや見栄えを制御することは出来ない」わけですから。

言いたかったのは、EMI さんがおっしゃるように、
「既に論理構造として完成しているHTMLをスタイルシートがうまく働かないからと言っていじり直していること」に関するダウトなのです。

ケットシー [E-Mail] 2000/03/09(木) 18:29:24
またよく考えてたら引っかかりました。

> 「既に論理構造として完成しているHTMLを
> スタイルシートがうまく働かないからと言っていじり直していること」に関するダウトなのです。

私は、論理構造だけを考えてHTMLを書き、次にスタイルシートで
見栄えにも手を加える、という順序で文書をつくっています。

で、「ここは左に余白が欲しいな」と思って
<div class="hoge"> と div.hoge { left-margin: 4em; }
をそれぞれ書いたとしますよね。
これは問題ないはずです。

つまり、「既に論理構造として完成しているHTMLをいじり直していること」
は問題ないということです。

そう考えると、「スタイルシートがうまく働かないから」
という理由でいじるのがダウトだということですよね。

それもおかしい話です。
私は「ネットスケープを使っている人でも、ちゃんと見えるようにしたい」
と思っていじり直しているのに、どうしてダウトなのでしょうか。
どうしてネットスケープに合わせてスタイルシートの書き方を変えるのがダウトなのでしょうか。
それによって論理構造が崩れるわけでもないのに。

ケットシー [E-Mail] 2000/03/09(木) 18:30:41
しょーもないことなんだけど、left-marginはmargin-leftの間違いね。

EMI 2000/03/09(木) 19:04:44
これ以上、ここで論議するにはふさわしくない話題になってきたような気がします。
続きは、
http://www.wakusei.ne.jp/twn/lng/blue/wwwlng.cgi?data/200003/00030002.txt
に場所を移した方がいいと思いますが、どうでしょう?>とほほさん

ケットシー [E-Mail] 2000/03/09(木) 22:18:16
現在ここで問題となっているのは、
「Synさんの提案された方法が対策として適当であるのかどうか」
であると私は認識しています。

適当でない、という意見が結構出ているのですが、
どれも主観的な意見だけで、ちゃんとした根拠を持っているものが無いようです。
個人の好み、宗教的な意見は私の欲しい回答ではないし、
その類の論争はいくら議論しても結論はでません。

そこで
「tableだけをdivでくくるのは、スマートなやり方ではないが、
 指針、概念として別に間違っているわけでもない。」
として締めたいのですが、どうでしょうか。

これに対して反論があり、きちんとした根拠があるのでしたら、
EMIさんの提示された場所にて議論いたしましょう。

コウノトリ 2000/03/09(木) 23:20:45
私の発言で嫌なムードになってしまったようで、申し訳ありません・・・
討論の場には行きたくないので、私なりの回答を・・・

>私は「ネットスケープを使っている人でも、ちゃんと見えるようにしたい」
>と思っていじり直しているのに、どうしてダウトなのでしょうか。

 ネットスケープでdivを入れないと見えないのは、ネットスケープのバグなのです。
 あなたがhtmlに手を入れて修正するのではなく、ネットスケープ社がMozilla5を早く完成させて公開するのが正しい解決策なのです。

Syn [E-Mail] 2000/03/09(木) 23:36:37
あ、今日会社休んでたので昼間に見れなかったのですが、なんだか
わたし抜きで話が進んでいるようで…

いちおうわたしのスタンスを語っておくと、
<table> に対するスタイルシートが正しく適用されないからといっ
て単純に HTML に <div> を追加して回避するのは「邪道」である
と思っています。
現状の HTML を書き換えないで CSS だけでなんとかできるならそ
れが一番です。
そういう意味でダウトをいただいていることに関して反論はありま
せん。

ただ、文書全体の構造を再考して、 <div> で <table> を括っても
問題のないかたちに書き直すことはできますので、
> css使ってる意味が無くなりますね、はい。
> 書かないほうがいいですね。
> 使っちゃう奴がいるので。
ここまで問題のある行為だとは思ってませんです。

# left-margin を使わない、とゆーテもあるな…(おいおい)
# ちなみに、わたしのサイトでは @import を使用して、 NN で見
# たときには左右のマージンを取らないようにしています。
## それもダウト?

ケットシー [E-Mail] 2000/03/09(木) 23:36:38
> ネットスケープ社がMozilla5を早く完成させて公開するのが正しい解決策なのです。

ごもっとも。
でも、私の方がわざわざバグに対応してあげても、ダウトではないですよね。

ダウトってコトバは良く分かんないけど、要するにダメだってコトでしょ?

これ以上なにかあったらメールでお願いします。
言いたいことを我慢するのは良くないけど、
皆に有益な議論とはいえないと思うので、個人的にやりましょう。

らー 2000/03/10(金) 00:03:13
>「ここは左に余白が欲しいな」と思って
><div class="hoge"> と div.hoge { left-margin: 4em; }
>をそれぞれ書いたとしますよね。これは問題ないはずです。

そうは思いません。

>つまり、「既に論理構造として完成している
>HTMLをいじり直していること」は問題ないということです。

思わないので「つまり」とならず、結局ダウト。

>そう考えると、「スタイルシートがうまく働かないから」
>という理由でいじるのがダウトだということですよね。

「そう考え」ませんが、ダウトでしょう。

>それもおかしい話です。

「それ」はともかく「も」というのは・・(^^;)

>私は「ネットスケープを使っている人でも、
>ちゃんと見えるようにしたい」
>と思っていじり直しているのに、どうしてダウトなのでしょうか。

Mozilla の CSS への対応がかなりダメなのは周知の通りです。
バグブラウザの為に、本来あるべき姿を失わせることはあまり良くないと思っております。

コウノトリさんの意見に同感なのです。

>どうしてネットスケープに合わせて
>スタイルシートの書き方を変えるのがダウトなのでしょうか。
>それによって論理構造が崩れるわけでもないのに。

見栄えのために、「スタイルシート」の書き方(というか指定)を変えるのは全然問題ないでしょう。

ただし、Mozilla のために「HTML」を加筆した点にちょっとダウトしてみました。

とある table の左にマージンを欲しい。
で<table class="hoge"> とするのは、まだしも、
「Mozilla の見栄えのためだけの為に」div を付けたのだとしたら、
あんま「良くはない」と思っただけです。

>個人の好み、宗教的な意見は私の欲しい回答ではないし、
>その類の論争はいくら議論しても結論はでません。

宗教はよくしりませんけど、WAI は「見た目のために HTML を書くのは良ろしくない」といってますよね??????

>そこで
>「tableだけをdivでくくるのは、スマートなやり方ではないが、
> 指針、概念として別に間違っているわけでもない。」
>として締めたいのですが、どうでしょうか。

「レイアウトのために divでくくるのは、指針、概念として推奨できないが、現在の対処法としてはまぁ理解できる。」というのであれば御意。

とほほ 2000/03/10(金) 01:46:11
当分の間、「本ラウンジ」で「スタイルシートのポリシー」に関する
話題を禁止します。管理者からのお願いです。

どうしても続けたい人は「裏ラウンジ」へどうぞ。
(こういう目的で用意していた訳じゃないけど・・・)
http://www.wakusei.ne.jp/twn/lng/blue/wwwlng.cgi

zizz... [HomePage] 2000/03/11(土) 16:23:50
>  あなたがhtmlに手を入れて修正するのではなく、ネットスケープ社がMozilla5を早く完成させて公開するのが正しい解決策なのです。
Mozillaの管理をしているのはmozilla.orgです。
開発にあたっている人は今でもNetscape社の人が一番多いですが、それ以外の人も多いです。
この表現は不適切です。

[上に] [前に] [次に]