居中元素的 scrollleft 的计算方法

如果需要将某个元素 在可以滚动元素(scroll)中设置为居中计算方法为: 
需要的scrollleft + 普通居中时候的offsetLeft 
= 当前的scrollleft+当前元素的offsetLeft 
= 固定的当前元素在整个滚动条中距离左边的位置

DEMO

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="./base/jquery.js"></script>
    <style>
        ul, li {
            padding: 0px;
            margin: 0px;
            list-style: none;
        }
        ul {
            width: 1000000px;
        }
        li {
            height: 100px;
            float: left;
            border: 1px solid red;
        }
        li.selected {
            background-color: yellow;;
        }
    </style>
</head>
<body>
<div class="container" id="J_container" style="width: 200px;height: 100px;border:1px solid gray;     overflow-x: scroll;
    overflow-y: hidden;">
    <ul>
        <li>测试1</li>
        <li>测试1</li>
        <li>测试1</li>
        <li>测试1</li>
        <li>测试1</li>
        <li>测试1</li>
        <li>测试1</li>
        <li class="selected">请将我居中</li>
        <li>测试1</li>
        <li>测试1</li>
    </ul>
</div>
<script>
    $(function () {
        var item = $(".selected");
        var container = $("#J_container");
        var itemOffset = item.offset();
        var itemOffsetLeft = itemOffset.left + container.scrollLeft();
        var centerLeft = ( container.width() - item.width()) / 2;
        container.scrollLeft(itemOffsetLeft - centerLeft);
    })
</script>
</body>
</html>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
在Vue中实现滚动条居中通常涉及到监听目标元素的滚动事件,并动态调整滚动位置以使得内容居中。这可以通过Vue的响应式数据和事件处理功能实现。以下是一个简单的实现方法: 1. 在Vue组件中使用`mounted`生命周期钩子来获取目标元素,并监听滚动事件。 2. 在滚动事件的处理函数中,根据目标元素的当前滚动位置以及元素的尺寸计算应该滚动到的位置,使得特定的子元素居中显示。 3. 通过修改目标元素的`scrollTop`或`scrollLeft`属性来滚动到计算出的位置。 下面是一个简单的代码示例: ```html <template> <div class="outer" @scroll="onScroll"> <div class="inner">内容</div> </div> </template> <script> export default { data() { return { outer: null }; }, mounted() { this.outer = this.$refs.outer; this.outer.addEventListener('scroll', this.onScroll); }, methods: { onScroll() { const outer = this.outer; const inner = outer.querySelector('.inner'); const top = outer.scrollTop; const outerHeight = outer.clientHeight; const innerHeight = inner.offsetHeight; if (top + outerHeight / 2 < innerHeight / 2) { outer.scrollTop = innerHeight / 2 - outerHeight / 2; } else if (top + outerHeight / 2 > innerHeight / 2) { outer.scrollTop = innerHeight / 2 - outerHeight / 2; } } }, beforeDestroy() { this.outer.removeEventListener('scroll', this.onScroll); } }; </script> <style> .outer { height: 300px; overflow-y: scroll; } .inner { height: 1000px; } </style> ``` 在这个例子中,`.outer` 是可以滚动的容器,`.inner` 是需要居中的内容。当`.inner`内容滚动时,`onScroll`方法会计算并调整`.outer`的滚动位置,使得`.inner`内容垂直居中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值