cssレイアウト崩れの原因 — バグ回避方法 —

● フォントサイズ

font-sizeは%かpxで指定

【バグ対象ブラウザIE6】

⇒ キーワードで文字サイズを指定すると標準モードと互換モードで文字サイズが変わる ⇒

em単位で指定した値が文字サイズ変更後に正しく反映されない

● ボックス

widthと同時に左右brderや左右paddingを指定しない

heightと同時に上下brderや上下paddingを指定しない

⇒ ボックスの幅や高さを算出するときにパディングやボーダーのサイズを含めてしまう

【バグ対象ブラウザIE5.5,IE6】

⇒ 左右ボーダーとパディングを設置した要素に後続する部分がずれる body要素にはborderやwidthを指定しない。

⇒ 初期コンテナブロックを生成する要素の幅を指定できない

● 視覚的

フロートのコンテナブロックにはwidthを指定

【バグ対象ブラウザ IE5.5,IE6】

⇒ 背景色が指定された要素内にフロートがあるときに要素内の文字が消える

⇒ フロートを含むボックスのマージンが無視される

左フロートの左marginはゼロにする

右フロートの右marginはゼロにする

【バグ対象ブラウザ IE5.5,IE6】

⇒ フロートの左右マージンが指定値より大きくなる

clearしていないブロックボックスにはwidthもheightも指定しない

【バグ対象ブラウザ IE5.5,IE6】

⇒ フロートに後続するボックスの幅がフロートに合わせて短縮される

clearするボックスの上marginはゼロ

【バグ対象ブラウザ IE5.5,IE6】

⇒ clearを指定した要素ではフロートに対して上マージンを設置する

clearするボックスには同時にwidthも指定

絶対配置要素のコンテナブロックにはwidthを指定

絶対配置要素の位置指定はtopとleftまたはrightとbottomで行う。

leftとrightやtopとbottomを同時指定しない。

【バグ対象ブラウザ IE6】

⇒ left, topが指定された要素ではright, bottomを認識しない

verflwを使うときは同時にwidthやheightを指定する

⇒ 幅と高さが明示されていない要素へのverflow:hidden;指定が完全に反映されない

EC-CUBE商品画像をlightboxで表示させる

lightboxを使って商品画像を表示する

EC-CUBE 商品詳細ページ商品画像をlightboxで表示する。
商品画像拡大表示をlightboxで表示する。

EC-CUBEバージョン 2.4.1
PHPバージョン PHP 5.2.6
DBバージョン MySQL 5.0.51a-community-log

1.lightboxをダウンロードする。
lightbox2.04.zip をダウンロード

eccube_lightbox

2.上の3つのフォルダをアップロードする。

アップロード先

html/user_data /packages/default/lightbox

*lightboxというファルダを作成する。

*index.html以外をアップロード

EC-CUBEのファイルを書き換える

data/Smarty/templates/default/detail.tpl

data/Smarty/templates/default/site_frame.tpl

1.書き換えるファイルは上記の2ファイル

data/Smarty/templates/default/detail.tpl

【修正箇所】

1,59行目付近にある

<!--{assign var=key value="main_image"}-->

の下に

<!--{assign var=keyl value="main_large_image"}-->

を追加します。

—————————————————————————————————-

2,61行目付近にある

<!–★画像★–>の下の

<a href="javascript:void(win01('./detail_image.php?product_id=
<!--{$arrProduct.product_id}-->&amp;image=main_large_image
<!--{if $smarty.get.admin == 'on'}-->&amp;admin=on<!--{/if}-->','detail_image','
<!--{$arrFile.main_large_image.width+60}-->', '
<!--{$arrFile.main_large_image.height+80}-->'))">
<img src="<!--{$arrFile[$key].filepath}-->
" width="<!--{$arrFile[$key].width}-->" height="
<!--{$arrFile[$key].height}-->" alt="<!--{$arrProduct.name|escape}-->" />
</a>

を以下に書き換えます。

<a href="<!--{$arrFile[$keyl].filepath}-->" rel="lightbox">
<img src="<!--{$arrFile[$key].filepath}-->" width="
<!--{$arrFile[$key].width}-->" height="<!--{$arrFile[$key].height}-->
" alt="<!--{$arrProduct.name|escape}-->" />
</a>

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

3,<!–★拡大する★–>の下の

<a href="javascript:void(win01('./detail_image.php?product_id=
<!--{$arrProduct.product_id}-->&amp;image=main_large_image
<!--{if $smarty.get.admin == 'on'}-->&amp;admin=on<!--{/if}-->','
detail_image','<!--{$arrFile.main_large_image.width+60}-->', '
<!--{$arrFile.main_large_image.height+80}-->'))" onmouseover="chgImg
('<!--{$TPL_DIR}-->img/products/b_expansion_on.gif','expansion01');"
onMouseOut="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion.gif','expansion01');">
<img src="<!--{$TPL_DIR}-->img/products/b_expansion.gif"
 width="85" height="13" alt="画像を拡大する" name="expansion01" id="expansion01" />
</a>

を以下に書き換えます。

<a href="<!--{$arrFile[$keyl].filepath}-->" rel="lightbox"
 onmouseover="chgImg('<!--{$TPL_DIR}-->img/products/b_expansion_on.gif','
expansion01');" onMouseOut="chgImg('<!--{$TPL_DIR}-->
img/products/b_expansion.gif','expansion01');">
<img src="<!--{$TPL_DIR}-->img/products/b_expansion.gif"
 width="85" height="13" alt="画像を拡大する" name="expansion01" id="expansion01" />
</a>

data/Smarty/templates/default/site_frame.tpl

【修正箇所】

1,<head>と</head>の間に以下を追加。

<script type="text/javascript" src="<!--{$TPL_DIR}-->
lightbox/js/prototype.js"></script>
<script type="text/javascript" src="<!--{$TPL_DIR}-->
lightbox/js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="<!--{$TPL_DIR}-->
lightbox/js/lightbox.js"></script>
<script>LightboxOptions.fileLoadingImage="<!--{$TPL_DIR}-->
lightbox/images/loading.gif"; </script>
<script>LightboxOptions.fileBottomNavCloseImage="<!--{$TPL_DIR}-->
lightbox/images/closelabel.gif"; </script>
<link rel="stylesheet" href="<!--{$TPL_DIR}-->
lightbox/css/lightbox.css" type="text/css" media="screen" />