此滑块的概念是使滑块居中,并使自定义滑点居中。
我尝试为自定义的光滑点应用克隆,以便使它的中心与滑块的中心模式相同。
现在的问题是,单击时按钮的行为,活动的滑点和活动的滑块不相同或相等。
加载后的输出。
html / php
<section id="gallery" class="center slider" style="max-width: 100%; max-height: 100% !important; height: 165px; background: transparent; background-repeat: no-repeat; background-size: 100%; position: relative; top: -545px; z-index: 1;">
<?php
$timelin = wp_get_recent_posts(array(
'post_status' => 'publish', // Show only the published posts
'orderby' => 'date',
'order' => 'ASC',
'posts_per_page' => 15,
'post_type' => 'history-timeline',
));
$i = 0;
foreach($timelin as $time)
{
$year = get_the_title($time['ID']);
echo '<div class="container" title="'.str_replace("年","",$year).'" style ="padding-right: 5px !important; border-radius: 25px !important;
padding-left: 5px !important;">';
echo ' <div class="row-fluid">';
echo ' <div class="col-lg-12 col-sm-12">';
echo ' <div class="card-body" style=" border-radius: 25px !important;">';
echo ' <div class="col-md-8 col-sm-7 card-title">';
echo ' <h4 style="font-weight:bold">'.get_the_title($time['ID']).'</h4>';
echo ' </div>';
echo ' <div class="">';
echo ' <p class="card-text carousel-text'.$i.'">'.get_post($time['ID'])->post_content.'</p>';
echo ' <img class="card-img-right float-right img-responsive carousel-image'.$i.'" src="'.get_the_post_thumbnail_url($time['ID']).'">';
echo ' </div>';
echo ' </div>';
echo ' </div>';
echo ' </div>';
echo '</div>';
$i++;
}
?>
</section>
Javascript/jquery
window.onresize = resize;
var vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
console.log("Initial value is: " + vpWidth);
function resize() {
var height= Math.max(document.documentElement.clientHeight, window.innerHeight || 0)
var oldWidth = vpWidth;
vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
console.log("Old Width is " + oldWidth);
console.log("New Width is " + vpWidth);
if( (oldWidth < 1200 && vpWidth > 1200) || (oldWidth > 1200 && vpWidth < 1200) ){
console.log("The user crossed the 1200 mark!");
setTimeout(function(){
deferredScript();
centerActive();
}, 500);
}
console.log("Viewport size is " + vpWidth + "x" + height);
}
function deferredScript() {
alert($('li.slick-active').attr('id'));
var slickDots = document.querySelectorAll("ul.slick-dots li");
var i;
for (i = 0; i < slickDots.length; i++) {
slickDots[i].setAttribute("onclick", "centerActive()");
}
document.getElementsByClassName("slick-next")[0].setAttribute("onclick", "centerActive()");
document.getElementsByClassName("slick-prev")[0].setAttribute("onclick", "centerActive()");
//document.getElementById("slick-slide00").style.marginLeft = "calc(48vw + -70px)";
console.log("deferred script ran!");enter code here
var gallery = $('#gallery ul.slick-dots'), /* Getting specific element*/
items = gallery.find('li'), /* Getting child element*/
len = items.length,/* ????? */
current = 0, /* the current item we're looking */
first = items.filter(':first-child'),
second = items.filter((index)=>index==1),
third = items.filter((index)=>index==2),
last = items.filter(':last-child'),
secondlast = items.filter((index)=>index==items.length-2),
triggers = $('button');
console.log("second 0 " + second);
/* 1. Cloning first and last item */
first.before(secondlast.clone(true));
first.before(last.clone(true));
last.after(second.clone(true));
last.after(first.clone(true));
/* 2. Set button handlers */
triggers.on('click', function() {
if (gallery.is(':not(:animated)')) {
var cycle = false,
delta = ($( "button" ).hasClass( ".slick-prev" ))? -1 : 1;
/* in the example buttons have id "prev" or "next" */
gallery.animate({ left: "+=" + (-100 * delta) }, function() {
current += delta;
/**
* we're cycling the slider when the the value of "current"
* variable (after increment/decrement) is 0 or when it exceeds
* the initial gallery length
*/
cycle = !!(current === 0 || current > len);
if (cycle) {
/* we switched from image 1 to 4-cloned or
from image 4 to 1-cloned */
current = (current === 0)? len : 1;
gallery.css({left: -100 * (current + 1) });
}
});
}
});
var myuls = $("#gallery").find("ul");
for(var i=0;i<myuls.length;i++){
$(myuls[i]).wrap("<div id='wow'></div>");}
}
function centerActive() {
alert($('li.slick-active').attr('id'));
var slickOrder = parseInt(document.getElementsByClassName("slick-active")[0].getAttribute("data-slick-index")) + 1;
console.log("Viewport Width: " + vpWidth);
if(window.innerWidth < 1176)
{ slickOrder--; }
//var newPadding = 45.5 - (slickOrder * 11.5);
var newPadding = 48 - (slickOrder * 12);;
if(window.innerWidth == 995){
newPadding = 48 - (slickOrder * 12);
}
if(typeof vpWidth == "undefined")
{
vpWidth = window.innerWidth;
}
var vwFactor = (vpWidth / 1366);
var correctivePadding = (vpWidth - 1011) * 0.0135;
if (vpWidth <= 1011){
correctivePadding = 0;
}
var responsivePadding = slickOrder *(((vwFactor - 1) * 145) + correctivePadding);
//console.log("Corrective Padding: " + correctivePadding);
console.log("Inner Width: " + window.innerWidth)
console.log("VW Factor: " + (vwFactor - 1.045));
console.log("Slick Order: " + slickOrder);
console.log("View Width Factor: " + vwFactor);
//document.getElementById("slick-slide00").style.marginLeft = "calc(" + newPadding + "vw + " + responsivePadding + "px - 70px)";
console.log(newPadding + "vw");
console.log("center active script ran!");
}
slick
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script type="text/javascript"src="<?php echo get_stylesheet_directory_uri(); ?>/slick/slick.js"
charset="utf-8"></script>
<script type="text/javascript">
$(document).on('ready', function() {
$(".center").slick({
dots: true,
customPaging: function(slider, i) {
return '<div> <a class="dots">'+ $(slider.$slides[i]).attr('title') +'</a><img class="dot" src="//drx1czj26dxbr.cloudfront.net/files/circle.png"></div>';
},
infinite: true,
arrows:true,
prevArrow:'<button type="button" id="slick-prev" class="slick-prev"></button>',
nextArrow:'<button type="button" id="slick-next" class="slick-next"></button>',
centerMode: true,
slidesToShow: 1.65,
slidesToScroll: 15,
mobileFirst: true,
responsive: [
{
breakpoint: 1200, // or whatever breakpoint you want to render below
settings:
{
slidesToShow: 1.95
}
},
{
breakpoint: 991, // or whatever breakpoint you want to render below
settings:
{
slidesToShow: 1.65
}
},
{
breakpoint: 575, // or whatever breakpoint you want to render below
settings:
{
slidesToShow: 1
}
}
]
});
});
与概念相同的光滑点的无限循环, Infinity Loop Slider Concepts
尝试一些测试,加载时 enter image description here
当单击下一步按钮时 enter image description here