CSS:悬停状态图像缓存

时间:2010-12-02 10:03:37

标签: css hover preload

当我们定义任何CSS的悬停状态时......&在悬停状态我们改变background:url('image path');这个图像是预装的将在元素的第一个悬停下载..如果那样那么如何预加载...我知道javascript预加载图像..是打算工作......

4 个答案:

答案 0 :(得分:5)

如果你试图避免让你的悬停状态图像加载它们,它们会被徘徊,而不是预加载它们,为什么不创建同时保存正常和悬停图像的精灵?这样您就可以确保已经加载了所有悬停状态图像,同时减少了所有请求的开销。您需要做的唯一事情是设置background-position属性的值。

关于你的第一个问题,我想找到答案的最好方法是使用两个大图像(一些壁纸可以工作)并自己测试,虽然我怀疑图像只会在鼠标时加载是在原始图像上,因为那是在执行代码的时候。

希望这有帮助!

答案 1 :(得分:5)

如果你有div身高20px,并且希望在悬停时更改背景图片,请使用包含无悬停和悬停图片的图片, - 悬停在顶部,悬停图像在底部。这两个部分应该是你的div的高度,在这种情况下,20px。然后,首先将CSS background-position设置为0px 0px(左上角)。这是默认值(无悬停)。

当用户将鼠标悬停在div上时,请将background-position设置为0px -20px(20px以上)。这会将背景图像向上移动20px,显示精灵的下半部分,即悬停图形。当从div中移除鼠标时,精灵将回落到它的原始位置。

<强> CSS:

.hoverDiv          /* Normal state */
{
    background: url('images/img.png');
    background-position: 0px 0px;
}

.hoverDiv:hover    /* Hover state */
{
    background-position: 0px -20px;     /* Move background up by 20px, hiding the top image */
}

如果你有一个不同高度的div,只需用div的高度更改20px位。

如果您的精灵并排而不是彼此重叠,请使用background-position: -20px 0px;代替0px -20px;移动X轴。当然,你也可以积极地移动背景。

希望这有帮助,

詹姆斯

答案 2 :(得分:2)

您可以使用css sprites

答案 3 :(得分:0)

最好的办法是使用CSS Sprites。精灵表是一个包含大量图像的大图像,将在您的网站上使用。有什么好处?嗯,这意味着只发送一个http请求来下载所有图像。因此,使网站加载速度稍快。

悬停效果真的很好用!

使用加上简单的代码要容易得多。不像JavaScript,乱糟糟的代码。这很容易学习。基于精灵中图像的位置。这是一个有用的教程,在Flowdev上。以下是W3Schools

的示例