Без использования JavaScript вы ограничены использованием CSS-переходов, где это возможно.И хотя они довольно впечатляющие, они, на мой взгляд, не особенно хороши для условной анимации;они могут в основном анимировать от начальной точки до другой точки и затем обратно (на основе собственных событий браузера, доступных в самом браузере), с помощью JS вы можете добавлять / удалять дополнительные классы, а элементы div
перемещаются к содержимому вашего сердца., но не с помощью «просто» CSS (хотя я бы хотел, чтобы в этом оказались неправы).
Лучшее, что я смог до сих пор придумать, это:
#left {
float:left;
width:200px;
}
.right {
height: 0;
background-color: #fff;
margin-left: 205px;
overflow: hidden;
-webkit-transition: all 1s linear;
-ms-transition: all 1s linear;
-o-transition: all 1s linear;
-moz-transition: all 1s linear;
transition: all 1s linear;
}
.right:target {
display: block;
height: 5em;
background-color: #ffa;
-webkit-transition: all 1s linear;
-ms-transition: all 1s linear;
-o-transition: all 1s linear;
-moz-transition: all 1s linear;
transition: all 1s linear;
}
JS Fiddle demo .
И это не скатывается со стороны (хотя вы можете сделать это, если хотите), потому что не выглядело хорошо, учитываяповторное переформатирование содержимого, которое происходило при изменении ширины элемента.
Отредактировано , потому что я думаю, что, возможно, неправильно истолковал часть исходного вопроса:
... Я бы хотел без какого-либо javascript
В таком случае, и комментарий (ниже), по-видимому, предполагает, что jQuery - хороший вариант, это может быть полезно в качестве демонстрации:
$('#left a').click(
function(){
var div = $('div').not('#left').eq($(this).index('#left a'));
var others = $('div[data-visible="true"]');
others.each(
function(){
$(this).animate({
'left' : '2000px'
},1000,function(){
$(this).removeAttr('style data-visible');
});
});
if (div.attr('data-visible')) {
div.animate({
'left' : '2000px'
},1000,function(){
$(this).removeAttr('style data-visible');
});
}
else {
div.animate({
'left' : '210px'
},1000).attr('data-visible',true);
}
});
Демонстрация JS Fiddle .
Справочные материалы: