二、CSS自制浏览器滑动条

news2024/11/26 4:46:41

一、滑动条

思路:首先我们需要想清楚,大体思路应该是把浏览器默认滑动条隐藏,然后自己手写一个好看的滑动条,主要是做出和浏览器滑动条一样的上下移动的效果出来。

解释:如下图所示,有一个盒子高度是100px,里面有一个(100+100)px的内容,也就是200px,然后它的右侧是一个滑动条。可以根据对等比例设置滑动条的高度,比如设内容区100px时,滑动条100px,此时正好不显示滑动条,此时是一个边界
内容区域超过100px,例如达到250px,相当于内容区扩大2.5倍数,滑动条缩小2.5倍到40px,然后当滑动100px时(document.scrollTop获取该值
其占内容区总长度的40%,对应的滑动条向下移动的距离40%document.clientHeight*40%)即可
在这里插入图片描述

1.1 隐藏不同浏览器的滑动条

    /* 把火狐浏览器设置成隐藏滑动条,这样的目的是显示我们自己的滑动条 */
    *{
      scrollbar-width: none;
    }
    /* 把edge、chrome、Safari设置成隐藏滑动条,这样的目的是显示我们自己的滑动条 */
    *::-webkit-scrollbar {
      display: none;
    }

1.2 自制滑动条

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 把火狐浏览器设置成隐藏滑动条,这样的目的是显示我们自己的滑动条 */
    *{
      scrollbar-width: none;
    }
    /* 把edge、chrome、Safari设置成隐藏滑动条,这样的目的是显示我们自己的滑动条 */
    *::-webkit-scrollbar {
      display: none;
    }
    #one {
      position: relative;
      overflow: auto;
      -ms-overflow-style: none;
      overflow: auto;
      background-color: yellow;
      width: 300px;
      /* height: 100px; */
    }
    #two {
      position: absolute;
      transform: translateY(0);
      right: 0;
      top: 0px;
      height: 100px;
      width: 10px;
      background-color: #0003;
    border-radius: 10px;

    }
  </style>
</head>

<body>
  <div style="position: relative;width: 300px;">
    <div id="one">
      <!-- 设置内容块占用位置 -->
      <div style="height: 299px;">
        Hendrerit lorem lorem nonumy ut ut sadipscing sed dolore. Diam aliquyam dolor sea. Vero takimata in at iusto duis ex doming vero elitr ut. Dolor consequat et nonumy tincidunt kasd stet consetetur labore dolor sea magna placerat duis et. Euismod et kasd option vel ut sadipscing no ipsum diam lorem eirmod nonumy. In ipsum nonumy lorem et tincidunt. Takimata aliquyam diam at ea nulla ipsum dolor ullamcorper et et duis invidunt et tation. Cum sed commodo kasd invidunt liber at nonumy amet est magna et gubergren dolore sit. Sed amet molestie liber ut accumsan et iusto diam stet sit ipsum dolore id. Tempor erat soluta ut consetetur lobortis stet sed. Est eirmod voluptua gubergren ex et sea amet magna eu ut sed aliquyam. Clita erat ullamcorper aliquyam dolore eos suscipit accusam ullamcorper et nonumy consetetur lorem et in diam consectetuer magna. Labore nobis rebum stet gubergren eos dignissim lorem. Nonumy invidunt gubergren eum takimata accumsan sanctus sanctus ut at te suscipit duis et consequat tempor diam vero amet.
      
      </div>
    </div>
    <!-- two是自制滑动条 -->
    <div id="two"></div>
  </div>
</body>
<script>
  var one = document.getElementById('one')
  var two = document.getElementById('two')
  const longHeight = one.scrollHeight //加上隐藏的总高度
  const showHeight = one.clientHeight// 表面上显示的高度
  const oneHeight = showHeight
  // 根据对等比例设置滑动条的高度,比如设内容区100px时,滑动条100px,此时正好不显示滑动条,此时是一个边界。
  // 当内容区域超过100px,例如达到250px,相当于内容区扩大2.5倍数,滑动条缩小2.5倍到40px,然后当滑动100px时(document.scrollTop)
  //其占内容区总长度的40%,对应的滑动条向下移动表面高度的40%(document.clientHeight*40%)即可
  console.log(longHeight,showHeight,100/(longHeight/showHeight))
  if(longHeight>showHeight){
    var lastUse;
    lastUse = two.style.height=oneHeight/(longHeight/showHeight)+'px';
    two.style.height=lastUse+'px';
  }
  one.onscroll = function () {
    var result = showHeight * (one.scrollTop / longHeight)
    
    two.style.transform="translateY(" + result + "px)"
  }
</script>

</html>

效果图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/52127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读笔记】A review of the deep learning methods for medical images super resolut

摘要 医疗图像中分辨率的限制来源于&#xff1a;图像采集次数的限制&#xff0c;由于硬件限制导致的低辐射&#xff08;Low irradiation&#xff09;等。 这篇综述应该比较基础&#xff0c;从深度学习 -> 超分网络架构 -> 再到医疗图像超分问题的介绍。对于医疗方向的介绍…

[附源码]JAVA毕业设计高校信息资源共享平台(系统+LW)

[附源码]JAVA毕业设计高校信息资源共享平台&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

3.13 小红书笔记怎样带话题,才能增加曝光?【玩赚小红书】

虽然很多博主都知道在笔记内容最后要带上一个相关话题&#xff0c;但却很少人知道带什么样的话题&#xff0c;如何找到官方话题或热门话题来提高笔记内容的曝光。这一篇文章黄宇风就来讲讲&#xff0c;小红书笔记该如何带话题。 ​ ​ 1、挖掘小红书笔记热门话题 笔记带话题主…

命令行下编译与运行简单的OC程序

学习OC的语法建议还是用普通的编辑器写OC代码&#xff0c;然后在终端命令行下编译与运行。那我们来看一下是如何在命令行下编译一个OC源文件&#xff0c;以及运行编译后的可执行文件的 开发环境 操作系统&#xff1a;macOS Big Sur 终端&#xff1a;iTerm2 Build 3.4.8 clong…

Linux基础知识与实操-篇五:bash使用进阶

通过上篇 篇四:初识bash与配置 的学习&#xff0c;已经基本认识了Linux下bash工具的使用和配置&#xff0c;下面将讲解过多关于bash在其他地方的使用。 终端机的环境设置 stty -a 命令可以得到 目前环境中 所有的 按键列表&#xff0c;其中 ^ 表示的是 ctrl 按键&#xff0c;…

原来电商企业也能运用模型规划设计营销活动

营销推广是电商重要的运营组成。电商平台要发起一场综合性的推广活动&#xff0c;需要明确参与活动的商品范围、促销价格、推广渠道以及如何触达到消费者等。很多营销推广活动规则复杂且不断变化&#xff0c;就需要使用模型来设计&#xff0c;例如邀人砍一刀的“免费提现”、多…

[附源码]Python计算机毕业设计Django高校学生宿舍管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【人工智能】知识图谱

文章目录一、知识图谱的概况二、知识图谱的基本概念三、知识图谱构建技术四、知识图谱主要应用四、知识图谱主要应用一、知识图谱的概况 知识&#xff08;Knowledge&#xff09;&#xff1a;合理性&#xff08;Justified&#xff09;、真实性&#xff08;True&#xff09;、被…

B轮融资背后:未势能源在万亿“长坡”上,铺出三重“厚雪”

今年以来&#xff0c;氢能源行业爆发出强劲的资本热潮。 川财证券分析称&#xff0c;我国氢能领域已完成35起投融资事件&#xff0c;总金额超过63亿元。另外&#xff0c;在A股市场&#xff0c;今年以来就有东华能源、粤水电等上市公司宣布涉足氢能。11月30日&#xff0c;专注氢…

汇川伺服电机位置控制模式QT程序Demo实现

0.实现效果 1.工程文件 #------------------------------------------------- # # Project created by QtCreator 2022-11-30T09:37:26 # #-------------------------------------------------QT core gui QT serialportgreaterThan(QT_MAJOR_VERSION, 4): QT …

JAVA实现数组模拟队列

队列本身是有序列表&#xff0c;若使用数组的结构来存储队列的数据&#xff0c;则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理&#xff0c;因此需要两个变量 front及 rear分别记录队列前后端的下标&#xff0c;front 会…

RepVGG论文理解与代码分析

最近&#xff0c;看到很多轻量化工作是基于RepVGG改进而来&#xff0c;决定重新回顾一下RepVGG&#xff0c;并在此记录一些理解与心得。 论文地址&#xff1a;https://arxiv.org/abs/2101.03697 Introduction RepVGG通过结构重参数化思想&#xff0c;让训练网络的多路结构(多…

[附源码]JAVA毕业设计-高中辅助教学系统-(系统+LW)

[附源码]JAVA毕业设计-高中辅助教学系统-&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

[附源码]Python计算机毕业设计Django电商小程序

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

「湖仓一体」释放全量数据价值!巨杉数据库亮相2022沙丘大会

近日&#xff0c;由数字化研究与知识服务平台沙丘社区主办的2022沙丘大会成功举办&#xff0c;巨杉数据库受邀出席大会&#xff0c;并在湖仓一体专场进行《湖仓一体释放全量数据价值》的主题演讲。 近日&#xff0c;由数字化研究与知识服务平台沙丘社区主办的2022沙丘大会以线上…

低代码开发平台助力生产管理:采购成本管理的优化

采购是企业经营活动中的重要环节&#xff0c;它处于企业生产经营活动的最前端&#xff0c;同时也是成本费用中占较大比重的环节。采购成本主要是指企业在生产过程中用于采购产品及服务等交易活动所产生的一系列支出&#xff0c;包括物资的购买价格、税费、运输费等&#xff0c;…

X电容和Y电容

X电容和Y电容 1安规电容 安规电容之所以称之为安规&#xff0c;它是指用于这样的场合&#xff1a;即电容器失效后&#xff0c;不会导致电击&#xff0c;也不危及人身安全。安规电容包含X电容和Y电容两种&#xff0c;它普通电容不一样的是&#xff0c;普通电容即使在外部电源断…

从0到1 Webpack搭建Vue3开发、生产环境

起步 创建项目目录 mkdir webpack-vue3-demo初始化 package.json npm init -y参考文档 安装 webpack webpack-cli webpack-dev-server webpack-merge npm install webpack webpack-cli webpack-dev-server webpack-merge --save-dev创建配置文件 mkdir build cd build …

vscode配置git和c++

vscode配置git和cvscode配置c1.必要配置2.可选配置配置git1.命令行使用git2.IDE使用git3.一点补充过滤文件设置别名之前一直在用vscodepython做实验&#xff0c;现在想利用vscode复习下c和git顺便做做力扣。vscode配置c 1.必要配置 由于vscode只是个编辑器&#xff0c;所以首…

JVM之运行时数据区 面试相关

JVM创建对象的方式创建对象的步骤内存布局对象访问定位![请添加图片描述](https://img-blog.csdnimg.cn/fa106bd4936440b28e1c359d57ba4d25.png)直接内存创建对象的方式 new 常见方式 Xxx静态方法 XxxBuilder/XxxFactory的静态方法Class的newInstance() 反射&#xff0c;只能空…