【发布时间】:2017-09-14 16:56:35
【问题描述】:
您好,我有一些 CSS 和 JS 代码可以在用户向下滚动页面并且元素进入视图时创建有效的幻灯片。我只是想知道是否有人可以帮助解释我将如何创建一个 mixin 来允许值改变。
我的 HTML 元素会是这样的
<div class="animation-element slide-left"></div>
我目前的 CSS 是这样的
.animation-element {
opacity: 0;
position: relative;
}
.animation-element.slide-left {
opacity: 0;
-moz-transition: all 500ms linear;
-webkit-transition: all 500ms linear;
-o-transition: all 500ms linear;
transition: all 500ms linear;
-moz-transform: translate3d(-100px, 0px, 0px);
-webkit-transform: translate3d(-100px, 0px, 0px);
-o-transform: translate(-100px, 0px);
-ms-transform: translate(-100px, 0px);
transform: translate3d(-100px, 0px, 0px);
}
.animation-element.slide-left.in-view {
opacity: 1;
-moz-transform: translate3d(0px, 0px, 0px);
-webkit-transform: translate3d(0px, 0px, 0px);
-o-transform: translate(0px, 0px);
-ms-transform: translate(0px, 0px);
transform: translate3d(0px, 0px, 0px);
}
我的JS是
var $animation_elements = $('.animation-element');
var $window = $(window);
function check_if_in_view() {
var window_height = $window.height();
var window_top_position = $window.scrollTop();
var window_bottom_position = (window_top_position + window_height);
$.each($animation_elements, function() {
var $element = $(this);
var element_height = $element.outerHeight();
var element_top_position = $element.offset().top;
var element_bottom_position = (element_top_position + element_height);
//check to see if this current container is within viewport
if ((element_bottom_position >= window_top_position) &&
(element_top_position <= window_bottom_position)) {
$element.addClass('in-view');
} else {
$element.removeClass('in-view');
}
});
}
$window.on('scroll resize', check_if_in_view);
$window.trigger('scroll');
我希望能够传递一个变量 $distance,它可以动态更改元素滑入的 100 / 距离。
提前致谢。
【问题讨论】:
-
你想将
$distance变量从 JS 传递到 SASS mixin 吗? -
sass不能做吗?一切都按原样工作,但如果我想将距离(即 -100px 到 -200px 的不同元素)更改为不同的元素,我将不得不再次写出整个 css 并给它一个新类。我不知道是否可以通过 sass 传入距离变量?这样我就可以有一个代码块,只需更改每个元素的距离?
-
抱歉回复晚了。是的,您可以将变量传递给 mixin,但据我所知,您不能将变量从 JS 传递给 SASS。