【问题标题】:Opera: position: fixed & background-imageOpera:位置:固定和背景图像
【发布时间】:2013-02-11 00:14:17
【问题描述】:

在我的页面上,我有一个具有以下 CSS 规则的元素:

.pointer {
    position: fixed;
    background-repeat: no-repeat;
    background-position: center;
    top: 70%;
    z-index: 1;
    width: 3%;
    height: 6%;
    text-indent: 100%;
    white-space: nowrap;
    overflow: hidden;
    float: left;
    left: 0;
    background-image: url("img/myImage.jpg");
}

在我测试的浏览器中运行良好,只有 Opera 不喜欢它。当我滚动时,背景图像也会“滚动”并因此从容器中消失。
我相信这是一个已知问题,但我仍然无法找到解决方案。

this page 上,描述了一种如何从 Opera 中隐藏 CSS 规则的方法,但除了这篇文章是 anno 2002 之外,我实际上不想使用 CSS hack。

删除overflow: hidden 并不能解决问题,添加background-attachment: fixed 也没有帮助。还有其他想法或解决方案吗?

编辑:
http://jsfiddle.net/mvV7G/

【问题讨论】:

  • 您能为我们创建一个演示吗? (见:jsfiddle.net
  • @cimmanon 添加了一个小提琴。当然必须在opera中打开才能出现bug。

标签: css positioning background-image opera css-position


【解决方案1】:

我看过你的小提琴项目。我认为问题是由于背景图像和边框半径应用于同一个元素造成的,老实说,我无法解释为什么这只发生在歌剧中。

但一个简单的解决方案是将锚点包装在一个 div 中并在每个之间拆分样式,确保背景图像和半径位于不同的元素上。

我已经创建了一个可能的解决方案,它需要一些整理,但我认为它会让你走上正轨 - http://jsfiddle.net/zyj6Z

CSS 如下:

.link {
-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4d000000, endColorstr=#4d000000)";
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4d000000, endColorstr=#4d000000);
zoom: 1;
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBvbHlnb24gZmlsbD0iI2ZmZiIgcG9pbnRzPSIyLjc2OSw3Ljk5MiAxMC43NjIsMCAxMy4xMzIsMi4zNjIgNy42MDQsNy44OTkgMTMuMjMxLDEzLjUyOCAxMC43NjIsMTYgMi43NjksOC4wMDcgMi43NzYsOCIvPjwvc3ZnPg==");
background-position: center;
background-repeat: no-repeat;
width: 10%;
height: 10%;
position: fixed;
top: 70%;
left: 0;
}
.test {
width: 10%;
height: 10%;
position: fixed;
top: 70%;
left: 0;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
overflow: hidden;
-webkit-border-radius: 0 5px 5px 0;
-moz-border-radius: 0 5px 5px 0;
border-radius: 0 5px 5px 0;
background-color: #000000;
background-color: transparent\9;
background-color: rgba(0, 0, 0, 0.3);
text-indent: 100%;
white-space: nowrap;
}

这里是 HTML:

<div class="outer">
<div class="wrap">
     <h1>Stuff</h1>

    <div class="test"> 
        <a href="#" class="link">Hide me!</a>
    </div>
    <ul>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
        <li>
            <img src="//placehold.it/150x150" />
        </li>
    </ul>
</div>

我希望这会有所帮助。

【讨论】:

  • 你是对的,你的版本有效!我也做了一些测试,发现了一些奇怪的东西:当你插入一个 PNG 文件作为背景图像(目前是 SVG)时,问题也得到了解决。那里发生着奇怪的事情。让我们再等一会儿,但我猜你的帖子会被接受:-)
  • 取得了一些巨大的进展,并且对于这两个问题,我已经能够将其归结为歌剧中的一个已知错误。提到了here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
相关资源
最近更新 更多