- » Kindle
- » iBooks
- » kobo
- » B.W.
- 300円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 600円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 100円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 490円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 400円
doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍
せっかくの週末なのに
曇天雨混じりの寒空、だ。おまけに、週末まで、ブラウザ間の解釈に違いにムカつく。
Ajaxで取ったデータをコンテナに流し込んで、そいつをポップアップ風に表示する、てのはありがちなこと。で、「ポップアップ風」てのはページ上の最前面に表示するのが当然なので、z-indexというのを使う。
こいつの解釈が、FireFoxやSafariと、IEで違ってるので悶絶。ありえねえ。
firefox safari
z-indexが最優先。z-indexの大きいものが必ずページ上最前面に表示される。
z-indexの指定がなければ、HTMLの順番(後ろのものが上に)
ie
HTMLの順番がz-indexよりも優先される、っぽい。z-indexの指定に関わらず、HTMLの後ろに別のコンテナが書かれていたら、それが上となってz-indexで表に出したいコンテナは下に潜りこんでしまう。
ieでz-indexの指定を、別のコンテナに適用するには、z-indexを指定したコンテナの親コンテナにもz-indexを指定して前面に出すか、後ろのコンテナにz-indexを指定して背面にまわすか。
if(document.all){
$(c).parentNode.style.zIndex=999;
}
って、なんでieだけのために、と思いつつ入れてみた。とりあえず、直後のコンテナに対しては意図どおり…だけど、さらにコンテナをまたがってポップアップすると、さらに後ろのコンテナにz-indexの指定が勝てなくて、下に潜り込んでしまった。
もうなんかね。ieにイラついたので、ieの時だけ。
HTMLのフッター部分に(最後に)ポップアップ用の空コンテナを用意、
body左上(0,0)から表示位置にある該当div要素の座標を取得して、
絶対位置指定で表示
function get_offset(ele) {
var ele = (typeof ele == 'string') ?
document.getElementById(ele) : ele;
var valuetop = 0, valueleft = 0;
do {
valuetop += ele.offsetTop || 0;
valueleft += ele.offsetLeft || 0;
ele = ele.offsetParent;
} while (ele);
return {left:valueleft, top:valuetop};
}
body左上から、divなどblock要素の座標を取得するスクリプトを、検索しまくり。ありがたくいただいた。
ううううむ。しかし、こんなしょーもないことに半日も取られてしまって…ふぁっきんIEが。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」