짧고 달콤한 버전 :CSS 전환 혼합 절대 및 상대 위치
는 부드러운 CSS-전환과 position: relative
및 position: absolute
을 결합 할 수 있습니까?
자세한 정보 버전 :
내가이 축소 및 확장 상태를 가질 수 있도록 wan't 작은 위젯 (나는 갑판 호출)를 만드는거야. 지금까지 모든 것이 잘 작동하고 있습니다.
두 상태를 전환하면 자연스럽게 전환 애니메이션이 보장됩니다. 이것은 너무 효과적이지만 그것이 실현되기를 바라는 방식이 아닙니다. 제가하고 싶은 것은 JavaScript처럼 절대 위치 지정을 사용하는 대신 CSS 전환을 사용하는 것입니다.
아아, 현재 시나리오는 확장 된 상태에서 항상 갑판에있는 카드가 배치되며, 그 위치는 갑판에 추가 될 때 즉시 계산됩니다. 접을 때 처음 4 개는 계단식 방식으로 쌓이고 나머지는 4 번째 카드 상단에 쌓입니다. 시각적으로 스택을 모방합니다.
이 접근법의 문제점은 카드를 배치하기위한 일반적인 레이아웃 흐름에 의존 할 수 없다는 것입니다. 확장 상태의 카드에 position: relative
을 사용하면 카드는 차례대로 잘 흐릅니다. 그러나 접힌 상태로의 전환은 움직이지 않고 있습니다. 단순히 한 위치에서 다른 위치로 순간적으로 스냅합니다. 이것은 처음부터 절대 위치 지정이 없기 때문에 브라우저가 어디에서 전환할지 명확하게 알 수 없기 때문에 당연한 논리입니다.
CSS (에만 관련 규칙) :
div.deck-container {
position: relative;
}
div.deck-container li {
display: inline-block;
position: relative;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}
div.deck-container.collapsed li {
position: absolute;
left: 9px;
top: 6px;
}
div.deck-container.collapsed li:first-child {
left: 0;
top: 0px;
}
div.deck-container.collapsed li:nth-child(2) {
left: 3px;
top: 2px;
}
div.deck-container.collapsed li:nth-child(3) {
left: 6px;
top: 4px;
}
HTML (관련 마크 업 만 해당) :
<div class="deck-container">
<ul>
<li>Card 1</li>
<li>Card 2</li>
<li>Card 3</li>
<li>Card 4</li>
<li>Card 5</li>
</ul>
</div>
꿈꾸는에서
내가 지금까지 가지고하면이 (Fiddle)입니다 클래스 collapsed
을 div.deck-container
에 추가하면 카드가 접힌 위치로 움직이거나 그 반대의 경우에도 애니메이션이 적용되지만 이는 불가능합니다. 누군가 내가 틀렸다고 말해줘.
내가이 두려워했다.확장 된 상태에서 절대 위치 지정을 사용하여 상태간에 애니메이션을 적용하는 것이 가능하다는 것을 알고 있습니다. 하지만 갑판에있는 카드의 수가 유한 한 것이 아니기 때문에 현재의 JavaScript 기반 솔루션을 사용하면 나쁘지 않습니다. –
아, 그럴 경우 JS가 필요합니다. 어쨌든, 혼합 된 솔루션으로 JS를 사용하여 카드를 왼쪽 위와 왼쪽에 배치 할 수 있습니다. 쉬운 방법 일 수도 있고 전환을 사용하여 애니메이션을 만들 수도 있습니다. – scumah
전환은 마우스 오버 기능입니까? div # hoverdiv에 마우스를 가져 가면 div # 테스트를 옮길 수 있습니까? – ShibinRagh