1
애니메이션 타임 라인을 만들려고합니다. 시간 표시 막대가 나타날 때 애니메이션을 트리거하기 위해 scroll reveal을 사용하고 있습니다. 각 타임 라인 엔트리는 왼쪽 테두리와 의사 요소가 연관되어 있습니다. : before 요소는 각 타임 라인 항목의 시작을 나타내는 점입니다. 테두리가 포함 된 div의 높이를 애니메이션으로 만들 때 : before 가상 요소 오버플로가 잘립니다. 나는 오버 플래그를! important 플래그로 표시하도록 설정했지만 트릭을 수행하지 않는 것 같습니다. 누구도 왜 : before 의사 요소가 잘리는 지 알고 있습니까? 도와 주셔서 감사합니다!높이 애니메이션 숨기기 : 의사 요소 전에
$(function() {
$('.tml-content h2').css("opacity", 0);
$('.tml-content p').css("opacity", 0);
var height = $('.timeline').height();
$('.timeline').height(height);
window.sr = ScrollReveal();
var config = {
// 'bottom', 'left', 'top', 'right'
origin: 'bottom',
// Can be any valid CSS distance, e.g. '5rem', '10%', '20vw', etc.
distance: '0px',
// Time in milliseconds.
duration: 1000,
delay: 0,
// Starting angles in degrees, will transition from these values to 0 in all axes.
rotate: {
x: 0,
y: 0,
z: 0
},
// Starting opacity value, before transitioning to the computed opacity.
opacity: 1,
// Starting scale value, will transition from this value to 1
scale: 1,
// true: reveals occur every time elements become visible
// false: reveals occur once as elements become visible
reset: false,
// Change when an element is considered in the viewport. The default value
// of 0.20 means 20% of an element must be visible for its reveal to occur.
viewFactor: 0.0,
// Callbacks that fire for each triggered element reveal, and reset.
beforeReveal: function(domEl) {},
beforeReset: function(domEl) {},
// Callbacks that fire for each completed element reveal, and reset.
afterReveal: function(domEl) {animateHeight(domEl)},
afterReset: function(domEl) {}
};
sr.reveal('.tml-line', config, 3000);
function animateHeight(domEl) {
var height = $(domEl).height();
$(domEl).css("border-left", "1px solid #cf1e27");
$(domEl).height(0);
$(domEl).children('.tml-content').addClass("fg-timeline-active");
$(".tml-line").animate({
height: height
}, 2000, function() {
$(domEl).find('h2').animate({"opacity": 1}, 1000);
$(domEl).find('p').animate({"opacity": 1}, 1000);
});
}
});
.filler {
height: 1200px;
width: 100%;
background-color: azure;
}
.timeline {
height: 100%;
margin: 16px auto;
margin: 1rem auto;
border-radius: 1rem;
padding: 32px 24px;
padding: 2rem 1.5rem;
overflow: visible !important;
}
.timeline .tml-content {
-webkit-transform: translate(0, -2rem);
-ms-transform: translate(0, -2rem);
transform: translate(0, -2rem);
padding: 24px;
padding: 1.5rem;
overflow: visible !important;
}
.timeline .tml-content.fg-timeline-active:before {
content: "";
width: 8px;
width: 0.5rem;
height: 8px;
height: 0.5rem;
background: #fff;
border-radius: 0.5rem;
border: 4px solid #cf1e27;
position: absolute;
-webkit-transform: translate(-2rem, 0.5rem);
-ms-transform: translate(-2rem, 0.5rem);
transform: translate(-2rem, 0.5rem);
z-index: 9999;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/scrollreveal.min.js"></script>
<div class="filler">
</div>
<div class="timeline">
<div id="test" class="tml-line">
<div class="tml-content">
<h2>1900</h2>
<p>Sample text...</p>
</div>
</div>
<div class="tml-line">
<div class="tml-content">
<h2>1900 - 2000</h2>
<p>Sample text...</p>
</div>
</div>
<div class="tml-line">
<div class="tml-content">
<h2>2001</h2>
<p>Sample text...</p>
</div>
</div>
<div class="tml-line">
<div class="tml-content">
<h2>2002</h2>
<p>Sample text...</p>
</div>
</div>
<div class="tml-line">
<div class="tml-content">
<h2>2003</h2>
<p>Sample text...</p>
</div>
</div>
</div>
애니메이션이 실행되는 동안 class = 'tml-line'인 div 요소가 동적으로 적용된 'overflow : hidden'인라인 스타일을 얻은 다음 애니메이션이 중단되면 즉시 제거된다는 사실을 알고 계셨습니까? 이는 이전 의사 요소가 간헐적으로 중단되게합니다. 내 생각은 아마도 당신이 사용하는 scrollreveal JS 플러그인이 그 인라인 스타일을 적용하고 있다는 것입니다. – atomCode
그게 다야! 나는 overflow : visible!을 잘못된 클래스에 중요하게 적용하고있었습니다! 이 문제가 수정되었습니다. .tml-line {overflow : visible! important;}. 도와 주셔서 감사합니다! –
좋아요! 다행히 간단한 수정이었습니다. – atomCode