【问题标题】:Set height and width of background on :hover element在 :hover 元素上设置背景的高度和宽度
【发布时间】:2013-02-24 03:19:31
【问题描述】:

我目前有这个代码

#navlogo {
    background: url(img/logo.png);
    background-size: 100px;
    display: block;
    height: 98px;
    width: 98px;
    border-radius: 49px;
}

我想添加这段代码

#navlogo:hover {
    background:url(img/logoblog.png);
    display: block;
    height: 98px;  /* this doesn't work */
    width: 98px;   /* this doesn't work */
}

原始图像是 150x150 缩小的,出于某种原因,它看起来比使用 98x98 更好,尤其是在 iPhone 上。但是,我似乎无法为 :hover 元素设置背景大小......它保持原来的大小。我知道它可以用background-size: 98px 98px; 完成,但这也不兼容IE8 及更低版本,而且CSS3PIE 也不涵盖背景大小。无论如何要这样做还是我必须调整悬停图片的大小?

【问题讨论】:

  • 您是说 div 在悬停时会改变大小?那没有意义。这个故事一定还有更多内容。
  • 我认为logoblog一定比logo大,他需要改变大小。但是我不明白为什么会出现问题。如果图像在 div 中,它应该可以工作,不是吗?

标签: background resize hover css


【解决方案1】:

尝试将背景大小从定义的 100 像素更改为包含。如果您在悬停时更改 div 大小,那么在这种情况下背景大小将随之更改。

例如:

#navlogo {
background: url(img/logo.png);
background-size: **contain**;
display: block;
height: 100px;
width: 100px;
border-radius: 49px;
}

#navlogo:hover {
background:url(img/logoblog.png);
display: block;
height: 98px;               /*this doesn't work*/
width: 98px;                /*this doesn't work*/
}

我假设这就是您在此示例中的目标,因为您在悬停样式中指定“不起作用”的属性正在重置正常状态样式中存在的相同值。鉴于它们的定义完全相同,一切都不会改变。

编辑

如果 logoblog 图片确实更大,将 background-size 属性设置为 'contain' 也应该可以解决这个问题。

【讨论】:

  • 我认为只将“包含”放入悬停的元素中可能会做到这一点。
  • 这可行,但它可以与 IE 一起使用,因为 background-size 是 CSS£ 并且不包含在 CSS3PIE 中
  • 最少 8 个,但如果可能的话我希望更低。
  • 是否可以用 IE8 解决这个问题,还是应该只导出一个较小的版本?
  • 如果您希望支持 8 个,您需要一个背景图像,该图像是您想要显示的实际大小。您仍然可以保留背景大小规则,然后只需通过 IE Conditional Comments 添加覆盖
猜你喜欢
  • 2012-07-24
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多