-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 图像查看器。在产品页面上,主要产品图像不会调整大小(缩放)以适合图像框。在决定实施 shadowbox 之前,我尝试了调整和修复。我从来没有能够实现 shadowbox,后来我更改为 LightBox2,因为 magentocommerce.com 上提供了该扩展,并带有评论说明 1.7.0.2 的功能。

我安装了我通过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>

仍然没有悬停动画。根据查看源代码,这个静态块从未被放置在页面上的任何地方。我将脚本从静态块中移出,并将其放置在 System -> Configuration -> Design -> Miscellaneous Scripts 中(这将包含在页面 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 变量。

所以只需使用完整的 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 回答