2015-06-02 13 views
5
element1 { 
    height: calc(100% - 50px); 
    -webkit-transition: .5s; 
    -moz-transition: .5s; 
    -ms-transition: .5s; 
    -o-transition: .5s; 
    transition: .5s; 
} 

element1:hover { 
    height: calc(100% - 200px); 
} 

Se si sostituisce la calc nella proprietà altezza px o %, la transizione funziona bene, ma con il calc, va solo da un'altezza all'altro senza transizione.Come posso far funzionare la proprietà di transizione in IE usando le proprietà calc?

In altri browser che funziona bene, il problema è solo in IE


L'aggiunta del codice e JSFiddle example simile alla mia situazione reale.

div{ 
 
    position: fixed; 
 
    right: 0; 
 
    width: 250px; 
 
    height: calc(100% - 200px); 
 
    background: #1c8080; 
 
    top: 158px; 
 
    color: #fff; 
 
    text-align: center; 
 
    padding-top: 40px; 
 
    font-size: 18px; 
 
    border: 1px solid #000; 
 
    
 
    -webkit-transition: all .3s; 
 
    -moz-transition: all .3s; 
 
    transition: all .3s; 
 
} 
 

 
div:hover{ 
 
    height: calc(100% - 100px); 
 
    top: 58px; 
 
} 
 

 
.bottom{ 
 
    position: absolute; 
 
    bottom: 15px; 
 
    width: 100%; 
 
    font-size: 26px; 
 
}
<div> 
 
    <p>Height's tansition</p> 
 
    <p>Works fine in Chrome, FF</p> 
 
    <p class="bottom">But not in IE</p> 
 
</div>

sì, lo so che nella mia impostazione bottom: 0 al <div> e solo modificare l'altezza caso, funziona anche, ma a causa del bug in IE, che solo le modifiche da un'altezza a un altro, ecco perché ho simulato l'effetto, cambiando la posizione in alto e l'altezza.

Quindi, come posso simulare questo tipo di effetto in IE?

Nota: Non è possibile utilizzare le unità di Viewport: vh, vw.

PD: il comportamento rara con IE nel mio caso è perché il passaggio da top: value a top: otherValue opere, ma la transizione height: calc(value)-height: calc(otherValue) non lo fa, questo è solo per guidare.

+0

io so che non è esattamente quello che state facendo, ma ci sono noti bug in IE10-11 per 'calc' in uso in' transforms'. Vedere [qui] (https://connect.microsoft.com/IE/feedback/details/814380/), potrebbero essere correlati – zgood

+0

grazie, ho trovato questo collegamento in quello che hai postato https://connect.microsoft .com/IE/feedback/dettagli/762719/css3-calc-bug-inside-transition-or-transform qui il team di Internet Explorer lo ammette come bug e ha dichiarato: "Siamo stati in grado di convalidare il tuo feedback. in base all'impatto limitato di questo errore, non saremo in grado di risolvere questo problema durante questa versione. " –

+0

Potresti aggiungere uno snippet di codice funzionante vicino alla situazione reale? Forse è possibile fare un workaround con layout HTML extra. –

risposta

1

Che dire di this? Funziona come il tuo snippet di codice (secondo me), è OK in IE10/IE11. O non ho capito la tua vera situazione.

html, body { 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 
div { 
 
    position: fixed; 
 
    right: 0; 
 
    width: 250px; 
 
    bottom: 0; 
 
    background: #1c8080; 
 
    top: 158px; 
 
    color: #fff; 
 
    text-align: center; 
 
    padding-top: 40px; 
 
    font-size: 18px; 
 
    border: 1px solid #000; 
 
    
 
    -webkit-transition: all .3s; 
 
    -moz-transition: all .3s; 
 
    transition: all .3s; 
 
} 
 

 
div:hover { 
 
    top: 58px; 
 
} 
 

 
.bottom { 
 
    position: absolute; 
 
    bottom: 15px; 
 
    width: 100%; 
 
    font-size: 26px; 
 
}
<div> 
 
    <p>Height's transition</p> 
 
    <p>Works fine in Chrome, FF</p> 
 
    <p class="bottom">But not in IE</p> 
 
</div>

+0

Sì, funziona, ma il problema è che non so dove sarà il fondo, l'ho solo messo alla fine come esempio, ma non so davvero dove sarà. Dai un'occhiata a questo esempio http://jsfiddle.net/Yandy_Viera/jgh0k25r/ –

+0

@YandYViera nel tuo primo snippet di codice (simile alla tua situazione reale come hai detto tu) usi 'position: fixed'. In questo caso sai sempre come 'top',' right', 'bottom',' left' (relativo a viewport). Nel secondo caso usi 'position: absolute' e dici che non sai dove sarà il fondo. Non capisco la tua situazione reale, perché vuoi usare 'height: 100%'? Cosa succede se l'elemento genitore sarà troppo piccolo? Ad esempio http://oi60.tinypic.com/vpu9gi.jpg. –

+0

Hai ragione, non me ne ero reso conto fino ad ora, se avessi la cima e l'altezza posso calcolare il fondo, anche nel mio caso particolare con la posizione: assoluta, quindi la tua risposta ha risolto il mio problema, ne sono davvero grato. –

Problemi correlati