css - 根据父 div 高度调整水平滚动条位置

标签 css

我是 CSS 新手,不知道该怎么做。

我有一个具有固定高度的父 div 和一个具有固定宽度且水平滚动溢出的子 div。问题是子 div 水平滚动隐藏在 div 的底部。有没有办法让child div水平滚动可以像附图那样显示?

enter image description here

谢谢

最佳答案

我使用 jQuery 的方法,看看 this fiddle !

enter image description here

说明

此版本与桌面和移动设备 (Touch) 兼容。此处,#scroller 是一个带有水平滚动条的隐藏 div,用于捕获滚动并调整 #inner div 的滚动位置。

#scroller#inner 之间的最大水平滚动范围可能不同,因此我从一个范围映射到另一个范围。

HTML

<div id="outer">
  <div id="scroller">
    <div id="expander"></div>
  </div>
  <div id="inner">
    <h1>This is looong text for testing</h1>
  </div>
</div>

CSS

#outer {
  width: 100%;
  height: 300px;
  border: 3px solid red;
  overflow-y: scroll;
  position: relative;
}

#inner {
  width: 50%;
  height: 700px;
  border: 3px solid blue;
  overflow-x: hidden;
}

#scroller {
  height: 300px;
  width: 50%;
  position: absolute;
  top: 0;
  left: 0;
  overflow-x: scroll;
}

#expander {
  width: 200%;
  height: 1px;
}

h1 {
  width: 700px;
}

JQuery

$("#outer").on('scroll', function() {
  var oTop = $("#outer").scrollTop();
  $('#scroller').css('top', oTop);
});

$("#scroller").on('scroll', function() {
  var scrollerMax = $(this)[0].scrollWidth - $(this).width();
  var innerMax = $('#inner')[0].scrollWidth - $('#inner').width();
  $('#inner').scrollLeft(mapRange($("#scroller").scrollLeft(), 0, scrollerMax, 0, innerMax))
});

function mapRange(x, in_min, in_max, out_min, out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

关于css - 根据父 div 高度调整水平滚动条位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482549/

相关文章:

javascript - 内容和页脚重叠而不是将页脚推到底部

javascript - 不同对象的getAttribute是一样的

javascript - 允许用户获取部分网页的 'screenshot'

css - 通过多个父元素使元素透明?

javascript - 自定义 CSS 按钮动画在 MVC C# 局部 View 中不起作用

php - 标题背景图像不会在 cms 的所有页面中更改

css - 在嵌套表中获取第三级后代

css - iPhone 对最小宽度 : 768px 进行媒体查询

javascript - 当我单击不同页面应用程序中页眉中的超链接时,如何向下滚动到页脚

css - 是否可以在 SVG 元素的笔划上使用背景图像?