-1

それはすべてjsファイルの競合が原因のようです。私はまだ完全に解決することができません。

サイトを見る

もともと私の問題は、.hover クラスの Java スクリプト アニメーションを統合して、ページ全体の高さを減らしたいということでした。以来:

<script type="text/javascript"     src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function() {

  $("#div1").hover(
//on mouseover
function() {
  $(this).animate({
    height: '+=250' //adds 250px
    }, 'slow' //sets animation speed to slow
  );
},
//on mouseout
function() {
  $(this).animate({
    height: '-=250px' //substracts 250px
    }, 'slow'
  );
}
);

});
</script> 

<style type="text/css">
#div1{
height:50px;
overflow:hidden;
background: red; /* just for demo */
}
</style>

<body>
<div id="div1">This is div 1</div>
</body>

これが、このアニメーションを実装する最も簡単な方法のようでした。そこで、最初に静的ブロックを作成し、上記の修正版を配置しました。

<script type="text/javascript"     src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function() {

$(".short-description").hover(
//on mouseover
function() {
$(this).animate({
height: '+=250' //adds 250px
}, 'slow' //sets animation speed to slow
);
},
//on mouseout
function() {
$(this).animate({
height: '-=250px' //substracts 250px
}, 'slow'
);
}
);

});
</script>

次に、テーマ スキン css フォルダー編集行 1987 内の styles.css を変更して、高さとオーバーフロー属性を追加しました。

.product-view .product-shop .short-description { margin:10px 0; height:200px; overflow: hidden; }

この解決策は機能しましたが、デフォルトの magento 画像ビューアーに干渉しました。製品ページで、メインの製品画像が画像ボックスに収まるようにサイズ変更 (ズーム) されませんでした。シャドーボックスの実装を決定する前に、微調整と修正を試みました。私はシャドウボックスを実装することができませんでしたが、1.7.0.2 の機能を示すレビューで拡張機能が magentocommerce.com で利用可能になったため、後で LightBox2 に変更しました。

出力エラーなしで、magento バックエンド内の接続マネージャーを介してパブリッシャーから直接受け取った拡張機能のダウンロードをインストールしました。しばらくの間、LightBox2 はうまく機能しましたが、次の行を page.xml ファイルに配置するなど、さまざまな提案された修正を試みた後:

<action method="addItem">
    <type>skin_js</type>
    <name>http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js</name>
</action>

css/js キャッシュをフラッシュした後、動作を停止しました。フロントエンドでは WSOD / 空白の画面が表示されましたが、バックエンドでは通常の動作でした。多くの異なる修正を試みた後、問題は表示オン - すべての製品タイプ、すべての製品、ブロック参照 - ページ ヘッダー、CMS - 静的ブロックのデフォルト テンプレートである静的ブロックを含むウィジェットから発生したようです。ウィジェットをメイン コンテンツ エリアなどの別の場所に移動したときに、page.xml を更新して最初に次の行を追加しました。

<action method="addJs"><script>lib/jquery.min.js</script></action>

.js ファイルをローカルに配置し、ブロック レイアウト キャッシュを更新すると、フロントエンドが復活しました。

静的ブロックを次のように更新しました。

<script type="text/javascript">// <![CDATA[
jQuery.noConflict();
// ]]></script>
<script type="text/javascript" src="/js/lib/jquery.min.js">// <![CDATA[
$j(document).ready(function() {

$j(".short-description").hover(
//on mouseover
function() {
  $j(this).animate({
    height: '+=300' //adds 300px
    }, 'slow' //sets animation speed to slow
  );
},
//on mouseout
function() {
  $j(this).animate({
    height: '-=300px' //subtracts 300px
    }, 'slow'
  );
}
);

});
// ]]></script>

まだホバーアニメーションはありません。ビューソースによると、この静的ブロックはページのどこにも配置されていませんでした。スクリプトを静的ブロックから移動し、[システム] -> [構成] -> [デザイン] -> [その他のスクリプト] に配置しました (これは、ページ HTML の head 終了タグの前に含まれます)。

<script type="text/javascript" src="http://foryourrestroom.com/js/lib/jquery.min.js">
var $j = jQuery.noConflict();

$j(document).ready(function() {

$j(".short-description").hover(
//on mouseover
function() {
  $j(this).animate({
    height: '+=250px' //adds 250px
    }, 'slow' //sets animation speed to slow
  );
},
//on mouseout
function() {
  $j(this).animate({
    height: '-=250px' //substracts 250px
    }, 'slow'
  );
}
);

});
</script>

スクリプトがページに読み込まれ、ビュー ソースから表示されるようになりましたが、ホームページのスライダーと競合します。現在、LightBox2 が機能しておらず、アニメーションもありません。

ビュー ソースによる LightBox2 のスクリプトは次のとおりです。

<script type="text/javascript">
//<![CDATA[
jQuery('.ig_lightbox2').fancybox({"padding":10,"margin":20,"opacity":0,"modal":0,"cyclic":1,"autoScale":1,"centerOnScroll":1,"hideOnOverlayClick":1,"hideOnContentClick":0,"overlayShow":1,"overlayOpacity":0.3,"overlayColor":"#333333","titleShow":1,"titlePosition":"float","transitionIn":"fade","transitionOut":"fade","speedIn":300,"speedOut":300,"changeSpeed":300,"changeFade":"fast","easingIn":"swing","easingOut":"swing","showCloseButton":1,"showNavArrows":1,"enableEscapeButton":1});
//]]>
</script>

ビュー ソースに基づくホバー アニメーションのスクリプトは次のとおりです。

<script type="text/javascript" src="http://foryourrestroom.com/js/lib/jquery.min.js">
var $j = jQuery.noConflict();

$j(document).ready(function() {

$j(".short-description").hover(
//on mouseover
function() {
  $j(this).animate({
    height: '+=250px' //adds 250px
    }, 'slow' //sets animation speed to slow
  );
},
//on mouseout
function() {
  $j(this).animate({
    height: '-=250px' //substracts 250px
    }, 'slow'
  );
}
);

});
</script></head>

LightBox2 をホバー アニメーションと一緒に動作させるための提案をいただければ幸いです。

4

1 に答える 1

1

コードを確認したところ、問題は jQuery No conflict variable was missing だったようです。

したがって、次のように完全な jQuery 形式を使用してください。

jQuery(document).ready(function() {
    jQuery(".short-description").hover(
    //on mouseover
    function() {
      jQuery(this).animate({
        height: '+=250px' //adds 250px
        }, 'slow' //sets animation speed to slow
      );
    },
    //on mouseout
    function() {
      jQuery(this).animate({
        height: '-=250px' //substracts 250px
        }, 'slow'
      );
    }
    );
});

「簡単な説明」クラスを持つ div の CSS スタイルを忘れないでください。

.product-view .product-shop .short-description {
    height: 100px;
    margin: 10px 0;
    overflow: hidden;
}

祝福。

于 2012-10-04T19:24:05.027 に答える