2012-07-06 49 views
10
邊界半徑

好了,所以我做了這個FC Barcelona CSS logo,一切都在正常工作:錯誤溢出元素裁剪與歌劇

  • 火狐13
  • 鉻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索引(layer9)和javascript機制(rounded)的類,因爲我認爲它們與問題無關。

當然,所有的東西都可以通過Firebug或其他開發工具在demo site上查看。

有什麼建議嗎?

+1

1)未加前綴的屬性應該在前綴之後,而不是在2)'-o-border-radius'不存在之前。 – BoltClock 2012-07-07 10:47:01

+0

好吧,我已經糾正了它(在演示網站和這裏),但這只是表面上的改變,在這種情況下它什麼也不做。 – Wirone 2012-07-07 21:52:05

+0

FWIW這不是一個很好的圖形處理方法。放大時(在所有瀏覽器中)所有接縫都可見。相反,我建議使用SVG。無論如何,這已被報告爲:https://bugs.opera.com/browse/CORE-35453。 – 2012-07-09 11:14:07

回答

3

我不知道爲什麼這是Opera中的bug,但你可以使用漸變(見下面的代碼)。它不適用於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%); 

} 
+0

這是一個聰明的解決方案,但是如果它不適用於IE,那麼改變顯示條紋的方式是沒有意義的。現在每個瀏覽器都顯示標誌,只有Opera不會裁剪底部,但我認爲它比IE上的無條紋更好:)無論如何,謝謝! – Wirone 2012-07-11 10:18:50

+0

但是你可以使用簡單的條件語句都混'<! - [如果IE 9]> '和低成本一切都會好的:) – 2012-07-11 10:48:51

3

有使用梯度的更清潔的方式:

#blaugrana_stripes_container { 
    background-image: -o-linear-gradient(0deg, #0B2E89 50%, #980F39 50%, #980F39); 
    background-size: 70px 50px; 
} 

你可以只擺脫任何內部#blaugrana_stripes_container

以上CSS漸變與所有瀏覽器兼容can be found here

Lea Verou盜竊的密碼。

+0

+1 Colorzilla,但我不知道我想在這裏使用漸變。重複漸變真的很乾淨,但Opera用水平線渲染它(即使我使用'background-size:70px 244px;'而不是'50px')。作物種植,但我會稍後考慮,因爲我現在正在度假;) – Wirone 2012-07-16 23:32:02

+0

Lea Verou的CSS3模式畫廊也太棒了,謝謝! – Wirone 2012-07-17 00:02:58

+0

裁剪應該工作。我試圖找出爲什麼它沒有,但Opera的開發工具不是很流暢。 Firebug寵壞了我。 – approxiblue 2012-07-17 04:03:15

0

Opera 12.01修復了這個問題,但是有another bug與此主題無關​​。我知道這不是一個解決方案,但我想讓它比評論更可見。