是否可以使用 css 将 DIV 的垂直滚动条放在 div 的左侧?jscript呢?
左侧的 DIV 垂直滚动条
IT技术
javascript
html
css
2021-02-21 08:09:25
3个回答
我有一个简单的用例,所以选择了一个简单的 css 解决方案:
<div style="direction: rtl; height: 250px; overflow: scroll;">
<div style="direction: ltr; padding: 3px;">
Content goes here
</div>
</div>
你可以使用JQuery和这个插件在任何你想要的地方添加一个伪滚动条:JScrollPane
好的,所以,我写了一个 jQuery 插件来给你一个完全原生的左滚动条。
这是它的工作原理:
div
在窗格内注入一个内部以允许计算内容宽度 (content_width
)。然后,使用该,天然滚动条宽度可以这样计算:scrollbar_width = parent_width - content_width - horizontal_padding
。divs
在窗格内制作两个不同的,都填充了内容。一个人的目的是成为一个“伪装者”。它仅用于滚动条。使用负的左边距,插件将其向左拉,以便只有滚动条在视图中(其内容
div
在边缘被剪掉)。另一个
div
用于实际容纳可见的滚动内容。
现在,是时候将两者结合在一起了。每 50 毫秒 (
window.setInterval
),scrollTop
从“装腔作势”的偏移量div
应用于可见的滚动内容div
。因此,当您使用左侧的滚动条向上或向下滚动时,滚动偏移会重新应用div
到可见内容上。
这个解释可能很糟糕,实际上还有很多我没有描述的,但是,不用多说,这里是:
$.fn.leftScrollbar = function(){
var items = $(this);
$(function(){
items.each(function(){
var e = $(this);
var content = e.html();
var ie = !jQuery.support.boxModel;
var w = e[ie?'innerWidth':'width'](), h = e[ie?'innerHeight':'height']();
//calculate paddings
var pad = {};
$(['top', 'right', 'bottom', 'left']).each(function(i, side){
pad[side] = parseInt(e.css('padding-' + side).replace('px',''));
});
//detect scrollbar width
var xfill = $('<div>').css({margin:0, padding:0, height:'1px'});
e.append(xfill);
var contentWidth = xfill.width();
var scrollerWidth = e.innerWidth() - contentWidth - pad.left - pad.right;
e.html('').css({overflow:'hidden'});
e.css('padding', '0');
var poserHeight = h - pad.top - pad.bottom;
var poser = $('<div>')
.html('<div style="visibility:hidden">'+content+'</div>')
.css({
marginLeft: -w+scrollerWidth-(ie?0:pad.left*2),
overflow: 'auto'
})
.height(poserHeight+(ie?pad.top+pad.bottom:0))
.width(w);
var pane = $('<div>').html(content).css({
width: w-scrollerWidth-(ie?0:pad.right+pad.left),
height: h-(ie?0:pad.bottom+pad.top),
overflow: 'hidden',
marginTop: -poserHeight-pad.top*2,
marginLeft: scrollerWidth
});
$(['top', 'right', 'bottom', 'left']).each(function(i, side){
poser.css('padding-'+side, pad[side]);
pane.css('padding-'+side, pad[side]);
});
e.append(poser).append(pane);
var hRatio = (pane.innerHeight()+pad.bottom) / poser.innerHeight();
window.setInterval(function(){
pane.scrollTop(poser.scrollTop()*hRatio);
}, 50);
});
});
};
在页面中包含 jQuery 和此插件后,应用左侧滚动条:
$('#scrollme').leftScrollbar();
将#scrollme
CSS 选择器替换为您希望应用左滚动条的元素。
(而且,显然,这会很好地降级)
其它你可能感兴趣的问题