ネスケのCSSのバグ 対処法は?

[上に] [前に] [次に]
【豆】 [E-Mail] 2000/01/23(日) 21:24:56
NN4.6ですが
div id=でCSSレイヤー使ってますが、リサイズした時
(ウインドウのサイズを小さくした時)
レイヤー内の文字の改行が無茶苦茶になります
一応リサイズで再読み込みしてバグ回避してるのですが
効果がありません
何か対処法はあるでしょうか?

http://www03.u-page.so-net.ne.jp/rb3/bunmei/go/sample/a02_07.html

通りすがり1号 2000/01/24(月) 00:30:32
んー。
GoLive使ってますねぇ。
ひどいコードを吐き出すなぁ。

まず、HTMLがあまり良くないところ。
1)<H3>でフォントを太くしてる。
2)<div>野中の全要素を<center>で挟んでる。
3)一続きの文章を<p>を使って改行している。

CSSについては、値を%で指定すると
NN4が上手く拾ってくれないときがあります。

JavaScriptについては、ソース追っかけるのが面倒なので
書き直しました。

動作確認はIE5とNC4.07で行ってます。

<html>
<head>
<style type="text/css">
#layer {
position: absolute;
top: 0px;
left: 0px;
width: 200px;
height: 200px;
clip: rect(0px 200px 200px 0px);
layer-background-color: #44ff88;
background-color: #44ff88;
font-weight: bold;
text-align: center;
}
</style>

<script>
function MoveToLayer(layName,x,y){
if(document.layers)document.layers[layName].moveTo(x,y);
if(document.all){
document.all(layName).style.pixelLeft=x;
document.all(layName).style.pixelTop=y;
}
}
function GetClientWidth(){
var pageWIDTH=null;
if(document.layers) pageWIDTH=window.innerWidth;
if(document.all) pageWIDTH=document.body.clientWidth;
return pageWIDTH;
}

function GetClientHeight(){
var pageHEIGHT=null;
if(document.layers) pageHEIGHT=window.innerHeight;
if(document.all) pageHEIGHT=document.body.clientHeight;
return pageHEIGHT;
}
function GetWidth(layName){
if(document.layers) return document.layers[layName].clip.right;
if(document.all) return document.all(layName).clientWidth;
}

function GetHeight(layName){
if(document.layers) return document.layers[layName].clip.bottom;
if(document.all) return document.all(layName).clientHeight;
}

function MoveCenter(layName){
x = (GetClientWidth()-GetWidth(layName))/2;
y = (GetClientHeight()-GetHeight(layName))/2;
MoveToLayer(layName,x,y);
}

</script>

</head>
<body onLoad="MoveCenter('layer')" onResize=location.reload();>

<div id="layer">
センタリングします<br>
<br>
Windowをリサイズして!<br>
<br>
でもNNはバグっぽい<br>
</div>

</body>
</html>

通りすがり1号 2000/01/24(月) 00:49:33
ごめんなさい。
ちょっと修正させてください。

onResize=location.reload();

onResize="location.reload();"
にしてください。

あと、質問はセンタリングだけで、上下方向の位置揃えは
必要ないようですので、
function MoveCenter(layName)
のなかのyを固定値にすれば、好きな高さに固定できます。

通りすがり1号 2000/01/24(月) 01:23:14
またやってしまった、、、
よく見たらこんなコード書く必要全く無い!

元のコードの
<body onload="CSScriptInit();" onresize="CSScriptInit();">
を、
<body onload="CSScriptInit();" onresize="location.reload();">
にするだけで、直っちゃいますね。

【豆】 [E-Mail] 2000/01/24(月) 05:37:44
通りすがり1号さん ありがとうございます
サンプルが適切でなかったため、ご迷惑をかけました
サンプル変更しました。

http://www03.u-page.so-net.ne.jp/rb3/bunmei/go/sample/sample.html

通りすがり1号 2000/01/24(月) 21:25:32
最初の質問については解決している気がしますが
何か問題が出たのでしょうか?(?-?

あえて言うなら、
CSSにlayer-background-color: 色;がないと
NNの背景色がIEと合わないってぐらいだけど、、、

もし、
「再読み込みをしないでBOX内の位置合わせしたい」
というのが質問の本質ならば、NN4.*では無理っぽいです。

【豆】 [E-Mail] 2000/01/24(月) 21:50:09
>元のコードの
><body onload="CSScriptInit();" onresize="CSScriptInit();">
>を、
><body onload="CSScriptInit();" onresize="location.reload();">
>にするだけで、直っちゃいますね。

うちでは直りません
というかreload()と同じことはすでに上のソースでもやってます

>一応リサイズで再読み込みしてバグ回避してるのですが
>効果がありません
>何か対処法はあるでしょうか?

が質問内容です
ブラウザのバージョンによって見え方が違うのでしょうかね

【豆】 [E-Mail] 2000/01/24(月) 22:26:47
[[解決]]
で、じっくりと私のソースと通りすがり1号さんのソースの
違いを検討してみたのですが
>text-align: center;
これを指定すると下のソースではうまく動くようです

上のソースはもちょっといろいろためしてみます
長時間お付き合いくださってありがとうございます
時間的にすぐにレスかえせませんので、とりあえず解決にしておきます

通りすがり1号 2000/01/24(月) 22:44:36
はあ、、、これだけはやりたくなかったが、、、
苦し紛れの解決法です。
どうしても駄目なときはこれで確認してみてください。
NN4出れイヤーを極端に小さくしたときにも対応しています。

<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis">
<meta name="generator" content="Adobe GoLive 4">
<title></title>
<style type="text/css">
#layer {
position: absolute;
z-index: 1;
top: 10px;
left: 50px;
visibility: visible
}
td {
background-color: #0c9;
text-align: center;
}
</style>
</head>

<body onresize="location.reload()">
<div id="layer">
<table width="200" height="100"><tr><td>
サンプル変更しました<br>
<br>
これではどう?
</td></tr></table>
</div>

</body>

</html>

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