Неправильное обрезка в элементе с граничным радиусом в Opera
Итак, я сделал этот логотип FC Barcelona CSS, и все работает отлично:
- Firefox 13
- Chrome 20
- Safari 5
- IE 9
НО в Opera 11 (и 12 тоже) эти полосы blaugrana не обрезаются. Я пробовал много конфигураций, с дополнительной оболочкой и без нее, но я не мог заставить ее работать.
HTML:
<div id="blaugrana_stripes_container" class="abs border_black fill_purple cropper layer9 rounded">
<!-- Wrapper needed for some browsers to crop overflow properly -->
<div id="blaugrana_stripes_overflow_cropper" class="rounded">
<div class="blaugrana_stripes fill_purple border_blue"></div>
<div class="blaugrana_stripes fill_purple border_blue"></div>
</div>
</div>
связанный CSS:
#blaugrana_stripes_container, #blaugrana_stripes_overflow_cropper {
width: 244px;
height: 244px;
text-align: left;
-moz-border-radius: 155px 155px 134px 134px;
-webkit-border-radius: 155px 155px 134px 134px;
border-radius: 155px 155px 134px 134px;
}
#blaugrana_stripes_container {
left: 36px;
top: 62px;
border-width: 2px;
-ms-transform: scaleY(0.79);
-moz-transform: scaleY(0.79);
-webkit-transform: scaleY(0.79);
-o-transform: scaleY(0.79);
transform: scaleY(0.79);
z-index: 3;
}
#blaugrana_stripes_overflow_cropper {
overflow: hidden;
white-space: nowrap;
}
.blaugrana_stripes {
height: 100%;
width: 35px;
border-width: 0px 35px 0px 35px;
margin-right: 35px;
display: inline-block;
}
.cropper {
overflow: hidden;
font-size: 0;
margin: 0px;
padding: 0px;
border: none;
}
.abs {
position: absolute;
}
Я скопировал его здесь, потому что там много кода, так что, возможно, это поможет. Выше я пропустил классы, используемые для украшения (border_black fill_purple
), z-indexing (layer9
) и javascript-механизмы (rounded
), потому что я думаю, что они не связаны с проблемой.
Конечно, все можно просмотреть через Firebug или другие инструменты разработчика на демонстрационном сайте .
Любые предложения?
Ответы
Ответ 1
Я не знаю, почему это багги в Opera, но вы можете использовать градиент (см. код ниже). Он не работает в IE (протестирован с версией 9).
.blaugrana_stripes{display:none;}
#blaugrana_stripes_overflow_cropper{
background: #0b2f89;
background: -moz-linear-gradient(left, #0b2f89 0%, #0b2f89 14%, #980f39 14%, #980f39 28%, #0b2f89 28%, #0b2f89 42%, #980f39 42%, #980f39 57%, #0b2f89 57%, #0b2f89 71%, #980f39 71%, #980f39 86%, #0b2f89 86%, #0b2f89 99%);
background: -webkit-gradient(linear, left top, right top, color-stop(0%,#0b2f89), color-stop(14%,#0b2f89), color-stop(14%,#980f39), color-stop(28%,#980f39), color-stop(28%,#0b2f89), color-stop(42%,#0b2f89), color-stop(42%,#980f39), color-stop(57%,#980f39), color-stop(57%,#0b2f89), color-stop(71%,#0b2f89), color-stop(71%,#980f39), color-stop(86%,#980f39), color-stop(86%,#0b2f89), color-stop(99%,#0b2f89));
background: -webkit-linear-gradient(left, #0b2f89 0%,#0b2f89 14%,#980f39 14%,#980f39 28%,#0b2f89 28%,#0b2f89 42%,#980f39 42%,#980f39 57%,#0b2f89 57%,#0b2f89 71%,#980f39 71%,#980f39 86%,#0b2f89 86%,#0b2f89 99%);
background: -o-linear-gradient(left, #0b2f89 0%,#0b2f89 14%,#980f39 14%,#980f39 28%,#0b2f89 28%,#0b2f89 42%,#980f39 42%,#980f39 57%,#0b2f89 57%,#0b2f89 71%,#980f39 71%,#980f39 86%,#0b2f89 86%,#0b2f89 99%);
background: -ms-linear-gradient(left, #0b2f89 0%,#0b2f89 14%,#980f39 14%,#980f39 28%,#0b2f89 28%,#0b2f89 42%,#980f39 42%,#980f39 57%,#0b2f89 57%,#0b2f89 71%,#980f39 71%,#980f39 86%,#0b2f89 86%,#0b2f89 99%);
background: linear-gradient(to right, #0b2f89 0%,#0b2f89 14%,#980f39 14%,#980f39 28%,#0b2f89 28%,#0b2f89 42%,#980f39 42%,#980f39 57%,#0b2f89 57%,#0b2f89 71%,#980f39 71%,#980f39 86%,#0b2f89 86%,#0b2f89 99%);
}
Ответ 2
Существует еще более чистый способ использования градиентов:
#blaugrana_stripes_container {
background-image: -o-linear-gradient(0deg, #0B2E89 50%, #980F39 50%, #980F39);
background-size: 70px 50px;
}
Вы можете просто избавиться от чего-либо внутри #blaugrana_stripes_container
.
Указанный CSS-градиент, совместимый со всеми браузерами можно найти здесь.
Код, украденный из Lea Verou.
Ответ 3
Opera 12.01 исправляет эту проблему, однако там другая ошибка, не связанная с этой темой. Я знаю, что это не решение, но я хотел сделать его более заметным, чем комментарий.