#jquery #html #css
#jquery ( jquery ) #HTML #css — код
Вопрос:
Это проблема со структурой / позицией HTML / CSS, вероятно, это быстро, и я просто что-то пропустил. Занимаюсь этим уже несколько дней … Не могу в этом разобраться.
У меня есть поток информации, который я отображаю почти во всю ширину, когда я нажимаю кнопку, я хочу, чтобы вторая панель скользила справа в соотношении ~ 68/28, и если я нажму другую кнопку, правая панель займет всю ширину.
Я перепробовал кучу вещей, относительное положение, поплавки … но, кажется, я не могу в этом разобраться. И в идеале было бы использовать атрибут CSS «position», чтобы сделать анимацию плавной с помощью CSS3.
Кажется, я действительно плохо разбираюсь в позиционировании.
Вот HTML, простой и понятный:
<div class="container">
<div class="col-left">Some content here from left col</div>
<div class="col-right">Some content ehre from right col</div>
</div>
и CSS, который не работает:
.container{
position: absolute;
left: 50px;
padding: 0 40px;
right: 0;
}
.col-left. col-left{
position: relative;
display: block;
top:0px;
-webkit-transition: all 500ms ease;
-moz-transition: all 500ms ease;
-ms-transition: all 500ms ease;
-o-transition: all 500ms ease;
transition: all 500ms ease;
}
.col-left{
left:0px;
}
.col-right{
right: -100%;
}
body.split .col-left{
}
body.split .col-right{
}
Вот скрипка:
http://jsfiddle.net/5zG3q/21 / (как вы можете видеть, я уже нахожусь на версии 21 скрипки и до сих пор не могу в этом разобраться)
Заранее спасибо за вашу помощь.
ПРАВКИ После некоторой настройки я получил что-то более близкое к тому, что я хочу, но оно кажется грязным… http://jsfiddle.net/5zG3q/23 /
Комментарии:
1. Следует отметить, что столбцы имеют разные heights…so родительский элемент вроде как должен это знать…
2. Я не совсем уверен, что понимаю вопрос, но это больше то, что вы ищете? jsfiddle.net/YABD6
3. Я немного обновил скрипку. Может быть, это будет иметь больше смысла. jsfiddle.net/5zG3q/21
4. Но в принципе, у меня есть основной контейнер, внутри этого контейнера я бы хотел, чтобы 2 divs (всегда были рядом, а не друг на друге). По умолчанию вы видите только первый столбец. Нажмите кнопку, чтобы 2-й столбец скользнул справа, нажмите другую кнопку, чтобы 2-й столбец занял всю ширину.
5. @drew_w : Неплохо, кажется, работает. Есть ли шанс получить анимацию слайдов? Кроме того, поскольку ширина правого столбца равна 0% при скрытом, это делает родительский div супер мега высоким.
Ответ №1:
После вдохновения от @drew_w и из другого поста, я думаю, что нашел решение. Я добавил обтекающий DIV вокруг столбца, который был в два раза шире. Затем, очевидно, мне пришлось разделить коэффициенты divs на 2. Тогда я мог бы просто поиграть с шириной и позициями, чтобы получить анимацию.
.container {
position: absolute;
left: 60px;
padding: 0 40px;
right: 0;
overflow:hidden;
background:#e2e2e2;
}
.inner-container{
display: block;
width: 200%;
overflow: hidden;
}
.col-left, .col-right {
display: inline-block;
vertical-align: top;
-webkit-transition: all 500ms ease;
-moz-transition: all 500ms ease;
-ms-transition: all 500ms ease;
-o-transition: all 500ms ease;
transition: all 500ms ease;
}
.col-left {
width: 50%;
background: green;
}
.col-right {
margin-left: 10%;
width: 29%;
background: red;
}
body.split .col-left {
width: 33%;
}
body.split .col-right {
margin-left: 1%;
width: 15%;
}
body.full .col-left {
width: 33%;
margin-left: -33%;
}
body.full .col-right {
margin-left: 0%;
width: 50%;
}
Пришлось добавить немного JS, который добавляет класс в тело:
$("body").on("click", "[data-toggle-view]", function () {
var $this = $(this);
var $body = $("body");
var view = $this.data("toggleView");
$body.removeClass("split full");
$body.addClass(view);
return false;
});
Вот скрипка:
http://jsfiddle.net/5zG3q/23 /
Все еще кажется не очень чистым, но это работает.