bootstrap table 固定table最底部的滚动条到屏幕底部

在使用bootstrap表格时,之前想着说直接把外层的div添加滚动,这样也算是实现了效果,但是伤心的是我的表格里面有固定列,如果直接用表格外层的overflow-x: scroll的话滚动时固定列的效果就消失了,所以没有办法,必须得把她本身的表格滚动条固定到屏幕的底部(想放置的位置),
之前的效果,必须拉倒表格最底部才能看到滚动条
必须拉到表格最底部才能看到左右滚动条
实现以后的效果,冻结表格依然有效
把滚动条固定在底部,并且冻结表格的效果依然有效
作为一个小白,经历了好几个思想斗争,终于有了一点思路,就是自己写一个div,然后把表格的宽赋值给它,并且用这个div的滚动条联动table自带的滚动条,通过样式查看,发现table最底部的滚动条在.fixed-table-body这个样式上,所以对他联动,代码如下

body里面

<body>
	<!-- 表格 -->
	<div id="tbaleDiv" class="pre-scrollable"></div>
	<!-- 滚动条 -->
	<div id="scrollDiv">
         <div id="scrollDivTable"></div>
    </div>
</body>

style里面

	/*位置自己定,想在哪里都行*/
    #scrollDiv{
        position: fixed;
        left: 22px;
        bottom: 43px;  
        /*width: 200px;*/
        height: 10px;
        overflow-y: scroll;
        overflow-x: scroll;
        z-index: 3;
    }
    #scrollDivTable{
        height: 10px;  
    }
    
    /*原本的滚动条不显示*/
    .fixed-table-body::-webkit-scrollbar {
        display: none;
    }

js里面

	//生成表格
 	$("#tbaleDiv").html("<table id='tableDetailsDiv' class='table text-nowrap'></table>");
 	.
 	.
 	.(表格的生成内容不详述)
 	.

 	//把原来外层的宽度赋值给新滚动条的外层
    $("#scrollDiv").css('width',$('.fixed-table-body').width()); 
    //把表格的宽度赋值给新滚动条的内层以撑出原本的滚动条的样子
    $("#scrollDivTable").css('width',$('#tableDetailsDiv').width());
    
    // 滚动条联动
    $("#scrollDiv").scroll(function(){
        $(".fixed-table-body").scrollLeft($(this).scrollLeft()); // 横向滚动条
    });
一个前端小白的发言,希望能对大家有帮助,有问题的小可爱也请多多留言,一起成长~
### 解决 Bootstrap Table 固定列遮挡滚动条的问题 Bootstrap Table 插件提供了强大的表格功能,但在某些情况下可能会遇到固定列遮挡滚动条的问题。为了有效解决这一问题,可以采取以下几种方案: #### 方案一:调整 CSS 样式 通过修改 CSS 来增加固定的右侧边距,从而防止固定列覆盖住水平滚动条。 ```css .fixed-table-container { margin-right: 18px !important; } ``` 此样式增加了容器右边的外边距,使得即使有垂直滚动条存在也不会被隐藏[^1]。 #### 方案二:自定义 JavaScript 调整宽度 另一种方法是在初始化表格之后动态计算并设置 `.fixed-table-body` 和 `.fixed-table-fixed-left` 或者其他相关类的选择器的实际宽度,确保它们之间留有足够的空间给滚动条。 ```javascript $(function() { var table = $('#table'); function adjustWidth() { let scrollbarWidth = getScrollbarWidth(); $('.fixed-table-body').each(function () { $(this).width($(this).parent().width() - scrollbarWidth); }); // 如果有左侧冻结列,则也需要相应减少其宽度 if ($('.fixed-table-fixed-left').length > 0) { $('.fixed-table-fixed-left').each(function(){ $(this).height($('.fixed-table-body').outerHeight()); $(this).find('>.panel').css({ 'margin-bottom': '-' + (scrollbarWidth) + 'px' }); }); } } // 获取滚动条宽度的方法 function getScrollbarWidth() { const div = document.createElement('div'); div.style.width = '100px'; div.style.height = '100px'; div.style.overflow = 'scroll'; document.body.appendChild(div); const scrollWidth = div.offsetWidth - div.clientWidth; div.remove(); return scrollWidth; } // 初始化表格后调用该函数 table.bootstrapTable({ onLoadSuccess: function(data){ setTimeout(adjustWidth, 0); }, onCheck:function(row,$element){ setTimeout(adjustWidth, 0); }, onUncheck:function(row,$element){ setTimeout(adjustWidth, 0); }, onPageChange:function(size,pagenumber){ setTimeout(adjustWidth, 0); } }); }); ``` 这段脚本会在每次加载数据成功、切换页面大小或页码以及选中/取消选中行时重新调整表格主体及其内部元素的高度和宽度,以适应可能出现的新尺寸变化情况下的布局需求[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值