Css 如何创建一个图像精灵,作为一个单一的图像水平和垂直拉伸?

Css 如何创建一个图像精灵,作为一个单一的图像水平和垂直拉伸?,css,sprite,css-sprites,Css,Sprite,Css Sprites,我正在尝试为一个盒子制作一个图像精灵,它可以垂直和水平拉伸,同时也可以在状态上悬停。我通常创建一个只能垂直或水平拉伸的精灵。在这种情况下,我会让盒子的部分无限延伸,接触图像的顶部和底部,以垂直循环,或接触左侧和右侧,以水平延伸,但我坚持为两者制作一个精灵 下面是我正在处理的内容,其中将包含一个链接列表(),这些链接将使用悬停状态的背景色 左侧:常规状态右侧:悬停状态 我不知道我是否可以将CSS与我现在所拥有的一起使用,来完成我正在尝试完成的任务,或者我是否必须将图像分解成一个文件的小部分。下面

我正在尝试为一个盒子制作一个图像精灵,它可以垂直和水平拉伸,同时也可以在状态上悬停。我通常创建一个只能垂直或水平拉伸的精灵。在这种情况下,我会让盒子的部分无限延伸,接触图像的顶部和底部,以垂直循环,或接触左侧和右侧,以水平延伸,但我坚持为两者制作一个精灵

下面是我正在处理的内容,其中将包含一个链接列表(
    ),这些链接将使用悬停状态的背景色

    左侧:常规状态右侧:悬停状态

    我不知道我是否可以将CSS与我现在所拥有的一起使用,来完成我正在尝试完成的任务,或者我是否必须将图像分解成一个文件的小部分。下面是我如何想象为一方做这件事

    以下是我在两个不同文件中得到的结果。还是不完全高兴,因为我希望这个雪碧是自给自足的,但也许我只是太挑剔了

    问题:

  • 我可以通过使用大多数标准浏览器支持的CSS代码来实现第一幅图像的目标吗?这意味着不需要绝对最新版本的Firefox、Chrome和Safari?我希望这是高度兼容的
  • 如果问题1为否,那么如何为本例创建精灵布局
  • 如果圆角的实现不明显,您可以提供示例CSS(伪代码也可以)吗

  • 注意:我知道现在框中有列表项,但想象一下菜单,当你将鼠标悬停在第一个或最后一个项上时,页眉/页脚的角应该也变为白色,以悬停在状态上。我可能可以自己解决这一部分,但我只是想提一下,这样雪碧设计就不会缺少这一功能。

    这是对你问题的回答#1:

    不完全是这样,但在CSS中它是可以实现的。结帐

    有关兼容性,请参阅以下页面:

  • 总之,它适用于大多数浏览器,但以下浏览器除外:

  • 在IE8及以下版本中,阴影和圆形边框缺失
  • 在IE7及以下版本中,箭头和悬停状态也会丢失,因此只有一个框:(
  • 如果您不必支持IE7,我认为这是可用的

    CSS代码:

    .box {
        background-color: #ccc;
        display: inline-block;
        padding: 10px 20px;
        border-radius: 5px;
        box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
        position: relative;
    }
    .box:hover {
        background: white;
    }
    .box:hover:after {    
        border-bottom: 20px solid white;
    }
    .box:before {
        content: ' ';
        display: block;
        position: absolute;
        top: -6px;
        right: 26px;
        width: 8px;
        height: 6px;
        box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.5);
    }
    .box:after {
        content: ' ';
        display: block;
        position: absolute;
        top: -10px;
        right: 10px;
        border-bottom: 20px solid #ccc;
        border-left: 20px solid transparent;
        border-right: 20px solid transparent;
    }
    

    经过更多的研究,我找到了答案。不幸的是,我的问题没有真正的答案,我也不想让这成为一个骗人的问题。尽管如此,我们还是来了

    答复:

    1) 不,这是不可能的

    2) 注释框应该从宽度和高度无限延伸,这使得无法使用1个精灵。如果这是真正的需要,那么我必须做的链接贾里德Farrish说做2背景图像

    取而代之的是,我找到的最好的解决方案是将第一张图片和带角的精灵结合起来。想象一个精灵如下:

    从左到右,但按右栏、左栏、右悬停栏、左悬停栏的顺序排列的侧栏,从顶部接触到底部

    其次,抓取两个指针并将它们放在注释框顶部的栏的右侧。这使得以后使用CSS对它们进行编程更加容易

    最后,抓取第一张图中的两个注释框,将悬停状态置于正常状态之下。我开始意识到,尽管我说我希望盒子无限延伸,但事实并非如此。永远不会有一个盒子是300000px宽的情况,所以我把它们拉伸到900px,因为这是我的内容的宽度,这些盒子的最大宽度是900px,高度是无限的


    整个图像的大小约为4kb,我能够获得一个包含精灵的图像。我不需要在sprite的另一部分单独放置角落,因为我只需要在注释气泡中的位置引用它们。:)

    CSS3或CSS4有一种方法可以将不同的图像添加到背景的不同部分,因此您只能使用一个图像。在这一点上,我不确定是否有浏览器支持它。可能是铬合金或Safari。+1和fav。您已经提供了您的问题中的所有内容,现在我们只需要一个演示。如果你想要的是多个背景(因此你不需要为每个角将两个背景分割成四个),那么除了IE8之外,其他所有方法都适用,这是一个非常接近的解决方案。这个想法是有一个图像精灵,它拥有构建精灵所需的一切。虽然这非常接近我需要的。请看悬赏要求