Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用一个背景图像位置切换图像_Html_Css - Fatal编程技术网

Html 使用一个背景图像位置切换图像

Html 使用一个背景图像位置切换图像,html,css,Html,Css,因此,我有一个带有背景图像的列表项。当用户将鼠标悬停在列表项上时,我希望更改背景项。我用这个: li { width: 400px; height: 80px; background-repeat: no-repeat; background-position: 10px 10px; background-image: url('myimg.png'); } li:hover { background-image: url('myimg-h

因此,我有一个带有背景图像的列表项。当用户将鼠标悬停在列表项上时,我希望更改背景项。我用这个:

li       { width: 400px; height: 80px;
           background-repeat: no-repeat; background-position: 10px 10px;
           background-image: url('myimg.png'); }
li:hover { background-image: url('myimg-hover.png'); }
不幸的是,当您第一次查看页面并将鼠标悬停在某个项目上时,这会导致一些闪烁

我宁愿将这些图像合并成一个图像,当您将鼠标悬停在列表项上时,只需更改背景图像的位置

合并成一幅的图像宽25px,高50px,显示的图像仅为25px x 25px

我试过这个:

li       { background: url('mynewimg.png') 0 0; }
li:hover { background: url('mynewimg.png') 0 -25px; }
但这只是显示了整个图像,因为我的列表项太大了,而且位置不对


有人知道我是如何做到这一点的吗?

没有JSFIDLE,我无法想象这个例子,但我想你说的是图像精灵。查看更多关于它们的信息

如果没有jsFiddle,我无法想象这个示例,但我认为您谈论的是图像精灵。查看更多关于它们的信息

我能做的是:

<li class="icon"><i></i></li>

.icon {
  width:25px;
  height:50px;
  display:table-cell;
 vertical-alignment:middle;
}
.icon>i
{
  background:url();
  background-position:<value>px,<value>px
}
.icon:hover>i{
background-position: <value>px,<value>px
}
  • .图标{ 宽度:25px; 高度:50px; 显示:表格单元格; 垂直排列:中间; } .icon>i { 背景:url(); 背景位置:px,px } .图标:悬停>i{ 背景位置:px,px }
    希望此解决方案能解决您的问题。

    我能做什么:

    <li class="icon"><i></i></li>
    
    .icon {
      width:25px;
      height:50px;
      display:table-cell;
     vertical-alignment:middle;
    }
    .icon>i
    {
      background:url();
      background-position:<value>px,<value>px
    }
    .icon:hover>i{
    background-position: <value>px,<value>px
    }
    
  • .图标{ 宽度:25px; 高度:50px; 显示:表格单元格; 垂直排列:中间; } .icon>i { 背景:url(); 背景位置:px,px } .图标:悬停>i{ 背景位置:px,px }
    希望此解决方案能解决您的问题。

    您的CSS应该是:

    li {
        width: 400px; height: 80px;
        background-repeat: no-repeat;
        background-size: 50px 50px; 
        background-position: 10px 10px;
        background-image: url('mynewim.png'); 
        background-origin: 0px 0px;
    }
    li:hover { 
       background-origin: 50px 0px; 
    }
    
    您必须明确地设置大小,然后使用origin

    您的CSS应该是:

    li {
        width: 400px; height: 80px;
        background-repeat: no-repeat;
        background-size: 50px 50px; 
        background-position: 10px 10px;
        background-image: url('mynewim.png'); 
        background-origin: 0px 0px;
    }
    li:hover { 
       background-origin: 50px 0px; 
    }
    

    你必须明确地设置大小,然后使用origin

    一个JSFIDLE怎么样,这样我们就可以看到标记和脚本?一个JSFIDLE怎么样,这样我们就可以看到标记和脚本?他使用sprite idea作为第二个选项,他需要使用JSFIDLE,这样我们就可以给他一个更好的解决方案。他使用sprite idea作为第二个选项,他需要做些事,这样我们才能给他一个更好的解决方案。