サイトマップ

JavaScriptコードスニペット:IE6でfixed

CSSの”position:fixed;”は、要素をウインドウ内の相対位置に固定するもので、スクロールしても場所が変わらない要素を配置するのに便利です。ですが、残念ながら未だに人気ブラウザランキングのトップにいるInternet Explorer 6.0はこのCSSをサポートしていません。

そこで、IEの場合のみIE独自のsetExpressionというプロパティを使って、fixedもどきを実装します。スクロールすると少しちらつきますが、当面の目的は果たせるかと思います。

【サンプル】

(function(node) {
  node.style.left = "10px";
  node.style.top = "10px";
 
  if (typeof(node.style.setExpression) == 'function') {
    node.style.position = "absolute";
    node.dy = node.offsetTop;
    node.dx = node.offsetLeft;
    node.style.setExpression('top', 'y=(document.documentElement.scrollTop+this.dy)+"px"');
    node.style.setExpression('left', 'x=(document.documentElement.scrollLeft+this.dx)+"px"');
  } else {
    node.style.position = "fixed";
  }
})($('rectangle'));

【サンプルの実行】クリックすると、下の矩形領域が画面左上に固定されます。

改定履歴

  • 2012-04-17:新しいInternetExplorerではsetExprはサポートされていないですが、fixedは使えるようになってるようです。で、setExprが使えるかどうかの判定でエラーが出てしまうようになっていたのでtypeofを使うように修正しました。

関連コンテンツ

 
research/1308815194.txt · 最終更新: 2012/04/17 17:08 by Kazuyuki Matsuda
特に明示されていない限り、本サイトの内容は次のライセンスに従います:Copyright(C) 2011 Shorindo, Inc. All Rights Reserved
Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki