2012-05-15 2 views
73

Я хотел бы применить переход CSS ко всем свойствам, кроме фонового положения. Я пытался сделать это таким образом:Как применить переход CSS3 ко всем свойствам, кроме background-position?

.csstransitions a { 
    -webkit-transition: all 0.3s ease;     
    -moz-transition: all 0.3s ease;     
    -o-transition: all 0.3s ease; 
    -ms-transition: all 0.3s ease;   
    transition: all 0.3s ease; 
} 

.csstransitions a { 
    -webkit-transition: background-position 0s ease 0s;     
    -moz-transition: background-position 0s ease 0s;     
    -o-transition: background-position 0s ease 0s; 
    -ms-transition: background-position 0s ease 0s;   
    transition: background-position 0s ease 0s; 
} 

Сначала я установить все свойства перехода, а затем я попытался переписать только переход для свойства фона позиции.

Однако это, похоже, также сбросит все остальные свойства - так что, по существу, ни один из переходов, похоже, не происходит.

Есть ли способ сделать это без перечисления всех свойств?

+1

Привет, я на самом деле ищет для этого вопроса. Получили ли вы приемлемый ответ? –

+0

Извините, я не думаю, что это возможно. Я считаю, что в конце концов я перечислил все свойства отдельно: переход: ширина 0,3 с, высота 0,3 с, фоновый цвет 0,3 с, преобразование 0,3 с; – Dine

ответ

96

Вот решение, которое также работает на Firefox:

transition: all 0.3s ease, background-position 1ms; 

Я сделал небольшой демо: http://jsfiddle.net/aWzwh/

+2

По какой-то причине '1ms' не работал для меня, но' 0'. – Flimm

+0

@Flimm, какой браузер вы используете? И что вы имеете в виду, «не работали», ничего не оживляли? –

+0

Google Chrome не принимает '0' как принятый параметр для переходов, но 1 мс, похоже, делает трюк –

2

Try:

-webkit-transition: all .2s linear, background-position 0; 

Это работало для меня на что-то подобное ..

+2

это не работает на хроме – alex

+0

фиксация фона-позиции до 0 не является удалением перехода из фонового положения. Не так ли? –

+0

Это никогда не может работать. После переопределения свойства перехода впоследствии вы полностью переопределяете предыдущее свойство перехода, как будто оно никогда не существовало. Они не консолидируются. – animuson

10

Надежда не опоздать. Это достигается только одной строкой!

-webkit-transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0; 
-moz-transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0; 
-o-transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0; 
transition: all 0.2s ease-in-out, width 0, height 0, top 0, left 0; 

Это работает на Chrome. Вы должны разделить свойства CSS запятой.

Вот рабочий пример: http://jsfiddle.net/H2jet/

+1

Это, похоже, не работает для Firefox. – Bryan

+5

Я пробовал это в Chrome, и, похоже, это не работает для меня. По-видимому, свойство перехода «все» переоценивает все остальные независимо от того, что. – animuson

+0

@animuson см. Мой отредактированный пост, я добавил пример jsfiddle. На самом деле, он еще не работает в Mozilla, но он находится в Chrome –

3

Попробуйте это ...

* { 
    transition: all .2s linear; 
    -webkit-transition: all .2s linear; 
    -moz-transition: all .2s linear; 
    -o-transition: all .2s linear; 
} 
a { 
    -webkit-transition: background-position 1ms linear; 
    -moz-transition: background-position 1ms linear; 
    -o-transition: background-position 1ms linear; 
    transition: background-position 1ms linear; 
}