2

注意到使用 jquery.cycle 的简单启动页面存在问题。

http://www.rynicdesign.com/

使用 firefox(安装了 firebug),第一次访问页面时旋转图像不会显示(没有缓存 - ctrl-f5),但会在后续请求中正确加载。

在其他浏览器(即 chrome、safari)上看不到这种情况。

任何想法为什么?

(页面很小 - 但这里是相关信息)

    <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?2.8.0r4/build/reset-fonts-grids/reset-fonts-grids.css&amp;2.8.0r4/build/base/base-min.css" />
    <link rel="stylesheet" type="text/css" href="/templates/splash/css/splash.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.2.73.js"></script>
    <script type="text/javascript"><!--//--><![CDATA[//><!--
    $(document).ready(function() {
        $('.middle').cycle({
            fx: 'fade', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
            autostop: 1,
            timeout: 2500 // milliseconds between slide transitions (0 to disable auto advance)
        });
    });

    //--><!]]></script>
  </head>
  <body id="page">
    <div id="doc4" class="main-frame">
    <div class="top"></div>
    <div class="middle" align="center">
        <img src="/templates/splash/images/rynic-design.gif" alt="Welcome to RYNiC Designs" />
        <a href="/about"><img src="/templates/splash/images/enter.gif" alt="click to enter website" /></a>
    </div>
    <div class="bottom"></div>
    </div>
  </body>
</html>

这是 splash.css

html, body, #page, #doc4 {height:100%;margin:auto;}

.top, .middle, .bottom {clear:both;overflow:auto;display:block;}
.middle {background-color:#ffffff;overflow:hidden;}
.top, .bottom {height:35%;}

.top {background: #ffffff url(/templates/splash/images/left-bg.gif) repeat-y scroll top left;}
.bottom {background: transparent url(/templates/splash/images/right-bg.gif) repeat-y scroll top right;}

#doc4 {background:transparent url(/templates/splash/images/right-bg.gif) repeat-y scroll right bottom;}
4

1 回答 1

1

我以前见过这个问题(这是我之前对Jquery Cycle + Firefox Squishing Images的回答的摘录)。

问题是 Firefox在显示样式设置为 none时一劳永逸地修复了 img 元素的大小(当您开始循环时)。因此,如果图像尚未完成加载(它可能没有在初始 GET 请求中完成),它的 height 和 width 样式属性很小(我不确定它们到底对应什么 - 可能是 Firefox 图像占位符的大小,尽管在您的情况下它出现 164 X 16 像素)。

在随后的请求中,Firefox 知道它们的尺寸,因为它们在缓存中(我在这里猜测一下:也许它只是在循环可以设置之前加载它们display: none)。

您可以通过middle提前指定 div 的大小来解决此问题:

#middle {
    width:  974px;
    height: 110px;
}

(也就是说,只要您没有对图像做任何复杂的事情 - 我的网站正在动态加载不同大小的图像,因此我必须执行额外的步法。)

于 2010-01-12T14:33:39.693 回答