Opera: позиция: фиксированная и фоновое изображение
На моей странице есть элемент со следующими правилами 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 не нравится. Когда я прокручиваю, фоновое изображение также "прокручивается" и, следовательно, исчезает при выходе из контейнера.
Я считаю, что это известная проблема, но все же я не смог найти решение.
На этой странице описан метод, как скрыть правила CSS от Opera, но помимо того факта, что этот пост датирован 2002 годом, я на самом деле не хочу использовать CSS-хаки.
Удаление overflow: hidden
не исправить это, добавив background-attachment: fixed
тоже не помогло. Любые другие идеи или решения?
РЕДАКТИРОВАТЬ:
http://jsfiddle.net/mvV7G/
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>
Надеюсь, это поможет.