Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 垂直对齐滑动转盘导航箭头与幻灯片图像,而不是其下方的文本_Javascript_Jquery_Css_Vertical Alignment_Slick.js - Fatal编程技术网

Javascript 垂直对齐滑动转盘导航箭头与幻灯片图像,而不是其下方的文本

Javascript 垂直对齐滑动转盘导航箭头与幻灯片图像,而不是其下方的文本,javascript,jquery,css,vertical-alignment,slick.js,Javascript,Jquery,Css,Vertical Alignment,Slick.js,无论窗口宽度如何,我都需要将导航箭头与幻灯片图像垂直对齐。目前,它将占整个幻灯片的50%。我希望能够用CSS实现这一点,但似乎需要用JavaScript实现。如果是这样的话,jQuery是可以的,它只需要支持现代浏览器(IE 11+) 棘手的是,它需要位于图像的50%,而不是整个容器,因为图像下的文本可以有不同的高度 它目前正在做什么: 我需要它做的是:(注意导航箭头与图像垂直居中,无论窗口宽度如何都应该是) 下面是一个JSFIDLE: 在整个普尔维纳山脉中,我们的智者利托拉·努克·努克

无论窗口宽度如何,我都需要将导航箭头与幻灯片图像垂直对齐。目前,它将占整个幻灯片的50%。我希望能够用CSS实现这一点,但似乎需要用JavaScript实现。如果是这样的话,jQuery是可以的,它只需要支持现代浏览器(IE 11+)

棘手的是,它需要位于图像的50%,而不是整个容器,因为图像下的文本可以有不同的高度

它目前正在做什么:

我需要它做的是:(注意导航箭头与图像垂直居中,无论窗口宽度如何都应该是)

下面是一个JSFIDLE:


  • 在整个普尔维纳山脉中,我们的智者利托拉·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克、多奈克·拉奥里特、阿库的乌兰科珀前厅和塞德。Tempus omnis,mattis taciti cras a
  • Lorem ipsum dolor sit amet,et hymenaeos elit orci,rutrum dolor magna Pelletsque ante euismod magna,sodales turpis quos级调味品。级别为整数。在这一阶段中,所有人都是平等的,所有人都是平等的,所有人都是平等的。生命之路,前庭之路,前庭之路,拍卖人洛雷姆·厄罗斯,生命之路,平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等平等。这是一种猫科动物,它的生命来源于兽类。欧盟成员国
  • 在整个普尔维纳山脉中,我们的智者利托拉·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克、多奈克·拉奥里特、阿库的乌兰科珀前厅和塞德。Tempus omnis,mattis taciti cras a
  • 在整个普尔维纳山脉中,我们的智者利托拉·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克·努克、多奈克·拉奥里特、阿库的乌兰科珀前厅和塞德。Tempus omnis,mattis taciti cras a
.集装箱{ 位置:相对位置; 宽度:80%; 保证金:自动; } .幻灯片{ 浮动:左; 身高:100%; 最小高度:1px; } img{ 宽度:100%; 显示:块; } .clearfix:之后{ 内容:“; 显示:表格; 明确:两者皆有; } 身体{ 背景色:#aaa; } $('.list').slick({ 点:是的, 无限:是的, 速度:300,, 幻灯片放映:1, 自适应高度:真 });
覆盖css规则,该规则以以下方式定位两个箭头:

body .slick-next, body .slick-prev{
  top: 40%;
}

结果:

我用解决方案更新了JS fiddle,使箭头始终与图像对齐,即使每张幻灯片上的图像高度不同

function fixVerticalArrows(){
    var h = ($('.slick-active').find("img").height()/2);
    $('.slick-arrow').css('top',h+'px');
}
$(document).ready(function(){
  $('.list').slick({
    dots: true,
    infinite: true,
    speed: 300,
    slidesToShow: 1,
    adaptiveHeight: true
  }).on('afterChange',function(event){
    fixVerticalArrows();
  }).trigger('afterChange');
  $(window).resize(function(){
    fixVerticalArrows();
  })
});

您可以使用JQuery在图像中间设置跟随方向箭头键

$(window).on('load resize', function () {
 changepos();
});

function changepos() {
  var toppos = ($('.slick-active').find("img").height()/2);
  $('.slick-arrow').css('top',toppos+'px');
}

$('.list').slick({
  dots: true,
  infinite: true,
  speed: 300,
  slidesToShow: 1,
  adaptiveHeight: true
}).on('afterChange',function(event){
  var toppos = ($('.slick-active').find("img").height()/2);
  $('.slick-arrow').css('top',toppos+'px');
}).trigger('afterChange');

您只需覆盖
.slick prev
上的
top:%50
属性

.slick-prev {
  top:100px;
}
.slick-next {
  top:100px;
}

.

那么,使用两个传送带怎么样?一个用于打开箭头的图像,另一个用于不带箭头的内容流动。这是我能想到的最干净的解决方案:

它利用slick的
asNavFor
使两个转盘成为一个:

$('#list_above').slick({
  infinite: true,
  speed: 300,
  slidesToShow: 1,
  adaptiveHeight: true,
  dots: false,
  asNavFor: '#list_below',
});

$('#list_below').slick({
    dots: true,
  arrows: false,
  slidesToShow: 1,
  asNavFor: '#list_above',
  adaptiveHeight: true,
});

尝试更改幻灯片,并注意箭头如何因附加内容而在页面上向下移动:(如果图像高度从未改变,您可以使用固定大小(top:145px;)来解决此问题。我注意到的一个问题是,如果窗口大小调整(或方向改变),箭头不在正确的位置。有什么办法可以修复吗?我已经用此修复更新了JSFIDLE,在调整窗口大小时,我们调用修复函数来重新计算。
$('#list_above').slick({
  infinite: true,
  speed: 300,
  slidesToShow: 1,
  adaptiveHeight: true,
  dots: false,
  asNavFor: '#list_below',
});

$('#list_below').slick({
    dots: true,
  arrows: false,
  slidesToShow: 1,
  asNavFor: '#list_above',
  adaptiveHeight: true,
});