2012-07-06 10 views
10

Ok, così ho fatto questa FC Barcelona CSS logo e tutto funziona bene sotto:trabocco sbagliato ritaglio in elemento con border-radius su Opera

  • Firefox 13
  • Chrome 20
  • Safari 5
  • IE 9

MA su Opera 11 (e anche 12) quelle strisce blaugrana non sono ritagliate. Ho provato molte configurazioni, con e senza wrapper aggiuntivo, ma non ho potuto farlo funzionare.

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> 

relativi 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; 
} 

Ho copiato qui perché c'è un sacco di codice, così forse aiuterà. Sopra ho saltato le classi utilizzate per la decorazione (border_black fill_purple), z-indexing (layer9) e meccanismi javascript (rounded) perché penso che non siano correlati al problema.

Ovviamente tutto è visualizzabile tramite Firebug o altri strumenti di sviluppo su demo site.

Qualche suggerimento?

+1

1) Le proprietà non prefisse devono venire dopo i prefissi, non prima di 2) '-o-border-radius' non esiste. – BoltClock

+0

Ok, l'ho corretto (sul sito demo e qui), ma questo è solo un cambiamento estetico, non fa nulla in questo caso. – Wirone

+0

FWIW questo non è davvero un buon modo di fare grafica. Tutte le cuciture diventano visibili durante lo zoom (in tutti i browser). Suggerirei invece di usare SVG per questo. Ad ogni modo, questo è stato segnalato come: https://bugs.opera.com/browse/CORE-35453. –

risposta

3

Non so perché questo è bacato in Opera, ma è possibile utilizzare il gradiente (vedere il codice di seguito). Non funziona in IE (testato con la versione 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

Questa è una soluzione intelligente, ma se non funziona su IE non ha senso cambiare il modo di visualizzare le strisce. Ora ogni browser visualizza il logo, solo Opera non ritaglia il fondo, ma penso che sia meglio di no-stripes su IE :) Comunque grazie! – Wirone

+0

Ma si può mescolare sia usando i condizionali semplici ' ' e con basso costo tutto sarà ok :) –

3

C'è un modo ancora più pulito di usare gradienti:

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

Si può solo sbarazzarsi di nulla all'interno #blaugrana_stripes_container.

Il gradiente CSS sopra riportato è compatibile con tutti i browser can be found here.

Codice rubato da Lea Verou.

+0

+1 per ColorZilla, ma non sono sicuro Voglio usare le sfumature qui. Il gradiente a ripetizione è davvero più pulito, ma Opera lo rende con linee orizzontali (anche se uso 'background-size: 70px 244px;' invece '50px' come hai scritto tu). Il ritaglio funziona, ma ci penserò dopo, perché ora sono in vacanza;) – Wirone

+0

Anche la galleria di modelli CSS3 di Lea Verou è fantastica, grazie! – Wirone

+0

Il ritaglio dovrebbe funzionare. Stavo cercando di capire perché non fosse così, ma gli strumenti di sviluppo di Opera non sono molto fluidi. Firebug mi ha rovinato. – approxiblue

0

Opera 12.01 risolve questo problema, tuttavia c'è another bug non correlato a questo argomento. So che questa non è una soluzione, ma volevo renderla più visibile del commento.

Problemi correlati