Skip to content

Instantly share code, notes, and snippets.

@fencermonir
Forked from dfinnema/functions.php
Created February 18, 2020 11:08
Show Gist options
  • Select an option

  • Save fencermonir/c40efdb7ac43141c3124e89aa53c3a38 to your computer and use it in GitHub Desktop.

Select an option

Save fencermonir/c40efdb7ac43141c3124e89aa53c3a38 to your computer and use it in GitHub Desktop.
Flatsome UX Builder Addon - Scroll Down
/**
*
* Flatsome UX Builder Addon
*
* adds a scroll to mouse animation to parts of the page
*
* Dependent files (in your child theme):
* /css/scroll.min.css
*
* Parent Theme Supported
* flatsome (v3+)
*/
if ('Flatsome' == wp_get_theme()->parent()->get( 'Name' )) {
add_action('ux_builder_setup', 'dfc_ux_builder_element');
function dfc_ux_builder_element()
{
$position_options = require( get_template_directory() . '/inc/builder/shortcodes/commons/position.php' );
$position_options['options']['position_x']['on_change'] = array(
'recompile' => false,
'class' => 'x{{ value }} md-x{{ value }} lg-x{{ value }}'
);
$position_options['options']['position_y']['on_change'] = array(
'recompile' => false,
'class' => 'y{{ value }} md-y{{ value }} lg-y{{ value }}'
);
add_ux_builder_shortcode('dfc_scroll_icon', array(
'name' => __( 'Scroll Down' ),
'category' => __( 'Content' ),
'thumbnail' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAjJJREFUWAntVzlLA0EUzmZTCAYsAiKClV0sNhAbO7WTkMajykFiEfQHqF2EdGKhXUBYcxEQFAvFwspOG8GkCTaLhU0QgiCRWGwSvwk7kGNnZkOEgOzAMDvve8c3L3O8OBx2G3MGpGHjx2KxmWazmYBdAH0efRK92m63n2RZvsjlcjeYW25DEYhGo3sIdADvRQS7arVaFafT+Y0+q+v6KrAdYDrmIRDRrLCwTCASiahwuOByubYymcy7mXMQkKBHSByCxFo+n38x0+uWWSJgrHwDq17OZrM/3Q7MvkFiHfITt9vtS6fTn2Y6VOakH6yR/OYk7WTlVoITP4VC4RrDbb1eT7L8UrmQgLHhimZpTyQSU+FwWKHO+sYUiG9jARN98p6pkAC0A2TD9VgZk0aj4cPnqRmGLHxIkvSMjbpihlOZFQLzZLdTg2FGEKjAlhxVZnMxEQNAGj1YTU2kx8CJnYeBdcRCAjxjrPAL+CtPB8eRe9JGImCc810eARFmZQ+IfIyE2wTsDPz/DOAmbPOOiTADuGxqeI65txknALHj3qJCAnCg4TbzcoIwIVzjXthyKyMrBO7wJG8yozAAFCXTILAIAg8MlY5YSABP8Rk0Q/F4fI7nyARL4uc7FxUxQgJwUIWjIxSdl6LigpIwSrIgSrIUlbFGmQV0y8vl8qOiKEtI6b7f778vlUrkFRxowCVN08jjdIzUB1VVfRtQ6hNwn8o+XcdYy3JK5q//mFC/9ji2DPwCPrLYBcf6uCAAAAAASUVORK5CYII=',
'info' => '{{ height }}',
'allow_in' => array('text_box','ux_image','ux_banner'),
'wrap' => false,
'move' => 'top-left',
'styles' => array(
'dfc-scroll-mouse' => get_stylesheet_directory_uri() . '/css/scroll.min.css'
),
'presets' => array(
array(
'name' => __( 'Default' ),
'content' => '[dfc_scroll_icon pos="x50 y100"][/dfc_scroll_icon]',
)
),
'options' => array(
'position_options' => $position_options,
)
));
}
}
// Add Shortcode
function dfc_scroll_icon_shortcode( $atts , $content = null ) {
// Attributes
$atts = shortcode_atts(
array(
'id' => 'text-box-'.rand(),
'position_x' => '50',
'position_x__sm' => '',
'position_x__md' => '',
'position_y' => '100',
'position_y__sm' => '',
'position_y__md' => '',
),
$atts,
'dfc_scroll_icon'
);
wp_enqueue_style( 'dfc-scroll-mouse');
extract( $atts );
ob_start();
$classes[] = 'text-box banner-layer';
// Set positions
$classes[] = flatsome_position_classes( 'x', $position_x, $position_x__sm, $position_x__md );
$classes[] = flatsome_position_classes( 'y', $position_y, $position_y__sm, $position_y__md );
$classes = implode(" ", $classes);
?>
<div id="<?php echo $id; ?>" class="<?php echo $classes; ?>">
<p>&nbsp;</p>
<div class="scroll-down-wrap no-border">
<a href="#page_content" class="section-down-arrow"><svg class="nectar-scroll-icon" viewBox="0 0 30 45" enable-background="new 0 0 30 45"><path class="nectar-scroll-icon-path" fill="none" stroke="#ffffff" stroke-width="2" stroke-miterlimit="10" d="M15,1.118c12.352,0,13.967,12.88,13.967,12.88v18.76c0,0-1.514,11.204-13.967,11.204S0.931,32.966,0.931,32.966V14.05C0.931,14.05,2.648,1.118,15,1.118z"></path></svg></a>
</div>
<p>&nbsp;</p>
</div>
<?php
$content = ob_get_contents();
ob_end_clean();
return $content;
}
add_shortcode( 'dfc_scroll_icon', 'dfc_scroll_icon_shortcode' );
// Scrolling CSS
add_action( 'init', 'dfc_add_mouse_scroll_css_reg' );
function dfc_add_mouse_scroll_css_reg() {
wp_register_style('dfc-scroll-mouse', get_stylesheet_directory_uri() . '/css/scroll.min.css', '','1.0','screen');
}
.scroll-down-wrap.hidden {
transform: translateY(55px);
-webkit-transform: translateY(55px);
opacity: 0;
}
.scroll-down-wrap {
transition: opacity 0.4s ease,
transform 0.8s cubic-bezier(0.175, 0.985, 0.2, 1.275);
-webkit-transition: opacity 0.4s ease,
-webkit-transform 0.8s cubic-bezier(0.175, 0.985, 0.32, 1.275);
-moz-transition: opacity 0.4s ease,
transform 0.8s cubic-bezier(0.175, 0.985, 0.32, 1.275);
}
.section-down-arrow,
body[data-button-style="rounded"] .scroll-down-wrap {
position: absolute;
bottom: 15px;
left: 50%;
width: 60px;
margin-left: -30px;
z-index: 101;
}
body[data-button-style="rounded"] .scroll-down-wrap {
margin-left: -22px;
}
.scroll-down-wrap.no-border .section-down-arrow,
.slider-down-arrow.no-border {
border: none !important;
overflow: visible;
text-align: center;
opacity: 1;
height: auto;
bottom: 50px;
-webkit-animation: nudgeMouse 2.4s cubic-bezier(0.25, 0.46, 0.45, 0.94)
infinite;
animation: nudgeMouse 2.4s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite;
}
.nectar-scroll-icon-path {
fill: transparent;
stroke-width: 2px;
stroke-dashoffset: 120;
stroke-dasharray: 120;
-webkit-animation: carousel-scroll-btn-roll-out 0.55s
cubic-bezier(0.5, 0.1, 0.07, 1);
animation: carousel-scroll-btn-roll-out 0.55s cubic-bezier(0.5, 0.1, 0.07, 1);
}
.nectar-scroll-icon {
width: 30px;
height: 45px;
text-align: center;
cursor: pointer;
position: relative;
z-index: 100;
}
.scroll-down-wrap.no-border .section-down-arrow:after,
.slider-down-arrow.no-border:after {
content: " ";
position: absolute;
top: 0;
left: 50%;
display: block;
width: 30px;
height: 45px;
margin-left: -15px;
border: 2px solid rgba(255, 255, 255, 0.5);
border-radius: 30px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
z-index: 62;
}
.scroll-down-wrap.no-border:hover .section-down-arrow:before,
.slider-down-arrow.no-border:hover:before {
background-color: rgba(255, 255, 255, 1);
}
.scroll-down-wrap.no-border:hover .nectar-scroll-icon-path,
.slider-down-arrow.no-border:hover .nectar-scroll-icon-path {
stroke-dashoffset: 0;
-webkit-animation: carousel-scroll-btn-roll-over 0.55s
cubic-bezier(0.5, 0.1, 0.07, 1);
animation: carousel-scroll-btn-roll-over 0.55s cubic-bezier(0.5, 0.1, 0.07, 1);
}
@-webkit-keyframes carousel-scroll-btn-roll-over {
0% {
stroke-dashoffset: 120;
}
100% {
stroke-dashoffset: 0;
}
}
@keyframes carousel-scroll-btn-roll-over {
0% {
stroke-dashoffset: 120;
}
100% {
stroke-dashoffset: 0;
}
}
@-webkit-keyframes carousel-scroll-btn-roll-out {
0% {
stroke-dashoffset: 0;
}
100% {
stroke-dashoffset: -120;
}
}
@keyframes carousel-scroll-btn-roll-out {
0% {
stroke-dashoffset: 0;
}
100% {
stroke-dashoffset: -120;
}
}
.scroll-down-wrap.no-border .section-down-arrow:before,
.slider-down-arrow.no-border:before {
position: absolute;
content: "";
display: block;
left: 50%;
margin-left: -1px;
top: 22px;
background-color: rgba(255, 255, 255, 0.5);
width: 2px;
height: 6px;
border-radius: 10px;
transition: background-color 0.55s cubic-bezier(0.5, 0.1, 0.07, 1);
-webkit-animation: trackBallSlide 2.4s cubic-bezier(0, 0, 0.725, 1) infinite;
animation: trackBallSlide 2.4s cubic-bezier(0, 0, 0.725, 1) infinite;
}
@-webkit-keyframes trackBallSlide {
0%,
100%,
65% {
opacity: 1;
-webkit-transform: scaleY(1) translateY(-10px);
transform: scaleY(1) translateY(-10px);
}
45% {
opacity: 0;
-webkit-transform: scaleY(0.5) translateY(13px);
transform: scaleY(0.5) translateY(13px);
}
46% {
opacity: 0;
-webkit-transform: scaleY(1) translateY(-10px);
transform: scaleY(1) translateY(-10px);
}
}
@keyframes trackBallSlide {
0%,
100%,
65% {
opacity: 1;
-webkit-transform: scaleY(1) translateY(-10px);
transform: scaleY(1) translateY(-10px);
}
45% {
opacity: 0;
-webkit-transform: scaleY(0.5) translateY(13px);
transform: scaleY(0.5) translateY(13px);
}
46% {
opacity: 0;
-webkit-transform: scaleY(1) translateY(-10px);
transform: scaleY(1) translateY(-10px);
}
}
@keyframes nudgeMouse {
0%,
100%,
65% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
45% {
-webkit-transform: translateY(8px);
transform: translateY(8px);
}
}
@-webkit-keyframes nudgeMouse {
0%,
100%,
65% {
-webkit-transform: translateY(0);
transform: translateY(0);
}
45% {
-webkit-transform: translateY(8px);
transform: translateY(8px);
}
}
html{background-color:#000}.scroll-down-wrap.hidden{transform:translateY(55px);-webkit-transform:translateY(55px);opacity:0}.scroll-down-wrap{transition:opacity .4s ease,transform .8s cubic-bezier(.175,.985,.2,1.275);-webkit-transition:opacity .4s ease,-webkit-transform .8s cubic-bezier(.175,.985,.32,1.275);-moz-transition:opacity .4s ease,transform .8s cubic-bezier(.175,.985,.32,1.275)}.section-down-arrow,body[data-button-style=rounded] .scroll-down-wrap{position:absolute;bottom:15px;left:50%;width:60px;margin-left:-30px;z-index:101}body[data-button-style=rounded] .scroll-down-wrap{margin-left:-22px}.scroll-down-wrap.no-border .section-down-arrow,.slider-down-arrow.no-border{border:none!important;overflow:visible;text-align:center;opacity:1;height:auto;bottom:50px;-webkit-animation:nudgeMouse 2.4s cubic-bezier(.25,.46,.45,.94) infinite;animation:nudgeMouse 2.4s cubic-bezier(.25,.46,.45,.94) infinite}.nectar-scroll-icon-path{fill:transparent;stroke-width:2px;stroke-dashoffset:120;stroke-dasharray:120;-webkit-animation:carousel-scroll-btn-roll-out .55s cubic-bezier(.5,.1,.07,1);animation:carousel-scroll-btn-roll-out .55s cubic-bezier(.5,.1,.07,1)}.nectar-scroll-icon{width:30px;height:45px;text-align:center;cursor:pointer;position:relative;z-index:100}.scroll-down-wrap.no-border .section-down-arrow:after,.slider-down-arrow.no-border:after{content:" ";position:absolute;top:0;left:50%;display:block;width:30px;height:45px;margin-left:-15px;border:2px solid rgba(255,255,255,.5);border-radius:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;z-index:62}.scroll-down-wrap.no-border:hover .section-down-arrow:before,.slider-down-arrow.no-border:hover:before{background-color:rgba(255,255,255,1)}.scroll-down-wrap.no-border:hover .nectar-scroll-icon-path,.slider-down-arrow.no-border:hover .nectar-scroll-icon-path{stroke-dashoffset:0;-webkit-animation:carousel-scroll-btn-roll-over .55s cubic-bezier(.5,.1,.07,1);animation:carousel-scroll-btn-roll-over .55s cubic-bezier(.5,.1,.07,1)}@-webkit-keyframes carousel-scroll-btn-roll-over{0%{stroke-dashoffset:120}100%{stroke-dashoffset:0}}@keyframes carousel-scroll-btn-roll-over{0%{stroke-dashoffset:120}100%{stroke-dashoffset:0}}@-webkit-keyframes carousel-scroll-btn-roll-out{0%{stroke-dashoffset:0}100%{stroke-dashoffset:-120}}@keyframes carousel-scroll-btn-roll-out{0%{stroke-dashoffset:0}100%{stroke-dashoffset:-120}}.scroll-down-wrap.no-border .section-down-arrow:before,.slider-down-arrow.no-border:before{position:absolute;content:"";display:block;left:50%;margin-left:-1px;top:22px;background-color:rgba(255,255,255,.5);width:2px;height:6px;border-radius:10px;transition:background-color .55s cubic-bezier(.5,.1,.07,1);-webkit-animation:trackBallSlide 2.4s cubic-bezier(0,0,.725,1) infinite;animation:trackBallSlide 2.4s cubic-bezier(0,0,.725,1) infinite}@-webkit-keyframes trackBallSlide{0%,100%,65%{opacity:1;-webkit-transform:scaleY(1) translateY(-10px);transform:scaleY(1) translateY(-10px)}45%{opacity:0;-webkit-transform:scaleY(.5) translateY(13px);transform:scaleY(.5) translateY(13px)}46%{opacity:0;-webkit-transform:scaleY(1) translateY(-10px);transform:scaleY(1) translateY(-10px)}}@keyframes trackBallSlide{0%,100%,65%{opacity:1;-webkit-transform:scaleY(1) translateY(-10px);transform:scaleY(1) translateY(-10px)}45%{opacity:0;-webkit-transform:scaleY(.5) translateY(13px);transform:scaleY(.5) translateY(13px)}46%{opacity:0;-webkit-transform:scaleY(1) translateY(-10px);transform:scaleY(1) translateY(-10px)}}@keyframes nudgeMouse{0%,100%,65%{-webkit-transform:translateY(0);transform:translateY(0)}45%{-webkit-transform:translateY(8px);transform:translateY(8px)}}@-webkit-keyframes nudgeMouse{0%,100%,65%{-webkit-transform:translateY(0);transform:translateY(0)}45%{-webkit-transform:translateY(8px);transform:translateY(8px)}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment