tag on yout theme's header.php
Read the detailed step-by-step at https://humbertosilva.com/visual-composer-infinite-image-carousel/
*/
// auxiliary code to create triggers for the add and remove class for later use
(function($){
$.each(["addClass","removeClass"],function(i,methodname){
var oldmethod = $.fn[methodname];
$.fn[methodname] = function(){
oldmethod.apply( this, arguments );
this.trigger(methodname+"change");
return this;
}
});
})(jQuery);
// main function for the infinite loop
function vc_custominfiniteloop_init(vc_cil_element_id){
var vc_element = '#' + vc_cil_element_id; // because we're using this more than once let's create a variable for it
window.maxItens = jQuery(vc_element).data('per-view'); // max visible items defined
window.addedItens = 0; // auxiliary counter for added itens to the end
// go to slides and duplicate them to the end to fill space
jQuery(vc_element).find('.vc_carousel-slideline-inner').find('.vc_item').each(function(){
// we only need to duplicate the first visible images
if (window.addedItens < window.maxItens) {
if (window.addedItens == 0 ) {
// the fisrt added slide will need a trigger so we know it ended and make it "restart" without animation
jQuery(this).clone().addClass('vc_custominfiniteloop_restart').removeClass('vc_active').appendTo(jQuery(this).parent());
} else {
jQuery(this).clone().removeClass('vc_active').appendTo(jQuery(this).parent());
}
window.addedItens++;
}
});
// add the trigger so we know when to "restart" the animation without the knowing about it
jQuery('.vc_custominfiniteloop_restart').bind('addClasschange', null, function(){
// navigate to the carousel element , I know, its ugly ...
var vc_carousel = jQuery(this).parent().parent().parent().parent();
// first we temporarily change the animation speed to zero
jQuery(vc_carousel).data('vc.carousel').transition_speed = 0;
// make the slider go to the first slide without animation and because the fist set of images shown
// are the same that are being shown now the slider is now "restarted" without that being visible
jQuery(vc_carousel).data('vc.carousel').to(0);
// allow the carousel to go to the first image and restore the original speed
setTimeout("vc_cil_restore_transition_speed('"+jQuery(vc_carousel).prop('id')+"')",100);
});
}
// restore original speed setting of vc_carousel
function vc_cil_restore_transition_speed(element_id){
// after inspecting the original source code the value of 600 is defined there so we put back the original here
jQuery('#' + element_id).data('vc.carousel').transition_speed = 600;
}
// init
jQuery(document).ready(function(){
// find all vc_carousel with the defined class and turn them into infine loop
jQuery('.vc_custominfiniteloop').find('div[data-ride="vc_carousel"]').each(function(){
// allow time for the slider to be built on the page
// because the slider is "long" we can wait a bit before adding images and events needed
var vc_cil_element = jQuery(this).prop("id");
if (window.innerWidth <= 480) {
// jQuery(vc_element).attr('data-per-view',1);
jQuery('.vc_item').each(function(){
this.style.width = '25%'
this.style.height = 'auto'
})
} else {
setTimeout("vc_custominfiniteloop_init('"+vc_cil_element+"')",2000);
}
});
});
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-TZHJ474');
var interval1 = setInterval(function(){
//console.log('ou no interval');
jQuery('.box-news .vc_gitem-zone-a').each(function() {
if((!jQuery(this).css('background-image').includes('vc_gitem_image'))) {
jQuery(this).css('background-image','none')
}
})
jQuery('.box-news .vc_gitem-zone-a a').each(function() {
jQuery(this).attr('data-hover','Leia mais')
})
}, 1000);
setTimeout(function() {
clearInterval(interval1);
},5000);
@font-face {
font-family: "FontAwesome";
src: url("/local/fonts/fa-brands-400.eot"),
url("/local/fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"),
url("/local/fonts/fa-brands-400.woff2") format("woff2"),
url("/local/fonts/fa-brands-400.woff") format("woff"),
url("/local/fonts/fa-brands-400.ttf") format("truetype"),
url("/local/fonts/fa-brands-400.svg#fontawesome") format("svg");
}
@font-face {
font-family: "FontAwesome";
src: url("/local/fonts/fa-solid-900.eot"),
url("/local/fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),
url("/local/fonts/fa-solid-900.woff2") format("woff2"),
url("/local/fonts/fa-solid-900.woff") format("woff"),
url("/local/fonts/fa-solid-900.ttf") format("truetype"),
url("/local/fonts/fa-solid-900.svg#fontawesome") format("svg");
}
@font-face {
font-family: "FontAwesome";
src: url("/local/fonts/fa-regular-400.eot"),
url("/local/fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"),
url("/local/fonts/fa-regular-400.woff2") format("woff2"),
url("/local/fonts/fa-regular-400.woff") format("woff"),
url("/local/fonts/fa-regular-400.ttf") format("truetype"),
url("/local/fonts/fa-regular-400.svg#fontawesome") format("svg");
unicode-range: U+F004-F005,U+F007,U+F017,U+F022,U+F024,U+F02E,U+F03E,U+F044,U+F057-F059,U+F06E,U+F070,U+F075,U+F07B-F07C,U+F080,U+F086,U+F089,U+F094,U+F09D,U+F0A0,U+F0A4-F0A7,U+F0C5,U+F0C7-F0C8,U+F0E0,U+F0EB,U+F0F3,U+F0F8,U+F0FE,U+F111,U+F118-F11A,U+F11C,U+F133,U+F144,U+F146,U+F14A,U+F14D-F14E,U+F150-F152,U+F15B-F15C,U+F164-F165,U+F185-F186,U+F191-F192,U+F1AD,U+F1C1-F1C9,U+F1CD,U+F1D8,U+F1E3,U+F1EA,U+F1F6,U+F1F9,U+F20A,U+F247-F249,U+F24D,U+F254-F25B,U+F25D,U+F267,U+F271-F274,U+F279,U+F28B,U+F28D,U+F2B5-F2B6,U+F2B9,U+F2BB,U+F2BD,U+F2C1-F2C2,U+F2D0,U+F2D2,U+F2DC,U+F2ED,U+F328,U+F358-F35B,U+F3A5,U+F3D1,U+F410,U+F4AD;
}
jQuery(document).ready(function(){
jQuery('.single-item').slick({
centerMode: true,
centerPadding: '60px',
slidesToShow: 5,
variableWidth: true,
autoplay: true,
autoplaySpeed: 2000,
responsive: [
{
breakpoint: 768,
settings: {
arrows: false,
centerMode: true,
centerPadding: '40px',
slidesToShow: 3
}
},
{
breakpoint: 520,
settings: {
arrows: false,
centerMode: true,
centerPadding: '40px',
slidesToShow: 1
}
}
]
});
});
.single-item img {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.single-item img:hover {
-webkit-filter: grayscale(0);
filter: grayscale(0);
}
422n14
In September 2015, over nine days, forest restoration experts from Brazil, China, Indonesia and Guatemala traveled through four key Brazilian states – Rio de Janeiro, São Paulo, Minas Gerais and Espírito Santo – to share experiences, form connections and learn how forest restoration can a green economy and healthy society.
Such exchanges can only be a good thing for large-scale restoration initiatives such as the Bonn Challenge, which now has more than 86 million hectares of forests committed for restoration. Going forward, implementation can benefit from techniques that are underway and future projects can be informed by approaches that are already working or being adapted.
The comprehensive visits to Rio de Janeiro, São Paulo, Minas Gerais and Espírito Santo meant that no topic was left out while meeting over 100 experts from 14 institutions. The topics included watershed restoration; green infrastructure; agroforestry; reforestation for economic use; enhancing soil conservation; reforestation with native species; employment opportunities from restoration; and payment for environmental services (PES).
One PES model highlighted improved water security from forest restoration made possible by a blend of funds from municipal and private sources as well as watershed committee fees. The group also met with an NGO that aims to restore 18 thousand hectares of degraded land and create a biodiversity corridor between several protected areas, and they toured a project to restore 4.5 thousand hectares of Atlantic Rainforest in a former forestry property, a project ed by Suzano Pulp and Paper group.
As a main forest , the pulp and paper industry was also high on the agenda with a visit to Fibria, a global leader in pulp and paper production. And a partnership among Atlantic Rainforest Pact, the Ecology and Forest Restoration Laboratory and the Tropical Forestry Laboratory seeks to assist tree farmers in complying with Brazil’s forest laws on deforestation while also making a viable economic profit.
Another visit was to the Reflorestar program, which works to improve the health and resilience of Vitoria’s primary watershed while generating jobs and income opportunities for rural landowners by providing payment for ecosystem services and funding to restoration.
More examples and lessons are detailed in the final report or read the original article as published on WRI Brasil’s blog.