html固定左侧不滑动,css fixed 定位 让局部UI固定 不跟随滚动条移动

8e3574a50a760ba2df32930772a1d38d.png

文章目录

在国庆长假马上结束时,分享一篇关于 css定位的博文,收回你的玩心,开始工作了.

css 中的定位是一个重点,也是难点,之前有一篇专门探讨 css中position定位的问题

达到的效果 如果你够细心的话,你会发现我的博客列表也和博文详情页右侧侧边栏有变化

之前侧边栏是跟随滚动条移动的,当右侧内容不足时,会看到一片空白,体验不好

所以我希望,当滚到到右侧无内容填补时,指点的模块能做一个固定定位,漂浮在顶部右侧,不再跟随滚动条移动

简单说,当右侧侧边栏有内容时,跟随滚动条上下移动

当滚动到右侧无内容时,最小边的模块一直漂浮在右上角,如下图

入群讨论 和 订阅公众号 模块始终漂浮在右上角

实现原理 先选定你打算让哪个(或者多个)dom 模块漂浮

然后获取到此 模块 相对浏览器顶部的高度

当滚动条滚到高度 == 模块到浏览器顶部的高度时 (说明此时你关注的模块最上边刚刚碰到浏览器最上边,如果继续滚动,就会被隐藏到浏览器上方)

这时把准备漂浮的模块的position 定位更改成 fixed ,top:0

当滚动条逆向向上滚动时,当滚动高度 == 模块到浏览器顶部高度时

再把此模块的 position 更改成 relative ,同时移除 top 属性,让模块跟随滚动条滚动

实现代码 代码依赖 jquery

if($("#connect_me").size()>0){

var $elm = $('#connect_me');

var startPos = $elm.offset().top;

$(window).scroll(function(){

var p = $(window).scrollTop();

if( p > startPos-55 ){

$elm.css({

'position': 'fixed',

'top': 25,

'width':290

});

}else{

$elm.css({

'position': 'relative'

});

}

});

}

if($("#connect_me").size()>0)

这句代码你可以忽略,因为的 javascript代码压缩 到了一个js文件中.

而首页 和 详情页都有不同的dom 模块实现漂浮,所以这里先判断 有没有此 dom (jquery 判断有没有此 jquery 对象)

如果 dom 存在,那就继续执行

var startPos = $elm.offset().top; 计算出 dom 距浏览器顶部的高度

$(window).scroll(function() { 然后开始监听 浏览器滚动条事件

if( p > startPos-55 ){ 当滚动条滚动高度== dom 距离浏览器顶部距离 - 55 像素时

这里的55 像素,是因为我的顶部菜单栏也是固定定位,为了不挡住右侧漂浮的 dom 模块,所以减掉了 菜单栏的高度

$elm.css({ 'position': 'fixed' 修改模块的定位属性为 fixed

else (当滚动条逆向滚动回来时) 再把 position 属性修改为 relative ,跟随滚动条滚动.

你可以查看博客首页,或者详情页,滑动滚动条查看效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现CSS滚动条中的第一行固定不动,可以使用以下方法之一: 方法一:使用padding和overflow属性 1. 首先,隐藏body元素的滚动条,可以通过设置`overflow: hidden`来实现。 2. 接下来,让滚动内容垂直滚动,可以将主要内容区域的overflow-y属性设置为scroll。 3. 最后,为了预留出滚动条的宽度,将主要内容区域的右侧间距padding-right设置为滚动条的宽度。根据操作系统的不同,可以设置不同的数值。 方法二:使用CSS伪元素和overflow属性 1. 首先,隐藏浏览器的默认滚动条,可以使用`::-webkit-scrollbar`伪元素,并将其display属性设置为none。对于其他浏览器,可以使用`scrollbar-width`和`-ms-overflow-style`属性来隐藏滚动条。 2. 接下来,将主要内容区域的overflow-x属性设置为hidden,以隐藏水平滚动条,将overflow-y属性设置为auto,以实现垂直滚动。这样,只有垂直滚动条会显示出来。 无论使用哪种方法,都要注意以下几点: - 如果菜单固定在顶部不动,可以使用`position: fixed; top: 0; left: 0;`来实现。 - 同时,要注意将下方列表下移相应的位置,以避免菜单遮住一部分下方列表内容。 - 另外,为菜单设置背景,以防止透明的菜单与下方列表滚动上来的内容重叠。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [CSS实现内容可以滚动,不显示滚动条](https://blog.csdn.net/mufabixin/article/details/130792763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [CSS实现导航固定的、滑动滚动条制作方法](https://download.csdn.net/download/weixin_38602189/13128342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值