js实现水平和竖直滑动条

最近在做练手项目时候,需要用到滑动条,所以就稍微研究了一下。

首先来看水平滑动条,效果图如下:

代码如下:

<html>
 <head>
  <meta charset="UTF-8">
  <title>水平滑动条</title>
  <style>
   * {
    margin: 0;
    padding: 0;
   }

   .scroll {
    margin: 100px;
    width: 500px;
    height: 5px;
    background: #ccc;
    position: relative;
   }

   .bar {
    width: 10px;
    height: 20px;
    background: #369;
    position: absolute;
    top: -7px;
    left: 0;
    cursor: pointer;
   }
   p{
    margin-left: 100px;
   }
  </style>
 </head>
 <body>
  <div class="scroll" id="scroll">
   <div class="bar" id="bar">
   </div>
  </div>
  <p></p>
  <script>
   //获取元素
   var scroll = document.getElementById('scroll');
   var bar = document.getElementById('bar');
   var ptxt = document.getElementsByTagName('p')[0];
   bar.onmousedown = function(event) {
    var event = event || window.event;
    //页面事件的X减去当前相对于最近的祖先定位元素
    var x = event.clientX - this.offsetLeft;
    document.onmousemove = function(event) {
     var event = event || window.event;
     var left = event.clientX - x;
     if (left < 0)
      left = 0;
     else if (left > scroll.offsetWidth - bar.offsetWidth) {
      left = scroll.offsetWidth - bar.offsetWidth;
     }
     //改变滑块的left
     bar.style.left = left + "px";
     ptxt.innerHTML = "当前滑块的移动的百分比:" + parseInt(left / (scroll.offsetWidth - bar.offsetWidth) * 100) + "%";
     //防止选择内容
     window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
    }

   }
   //当鼠标弹起的时候,不做任何操作
   document.onmouseup = function() {
    document.onmousemove = null;
   }
  </script>
 </body>
</html>

竖直滑动条效果图如下:

代码如下:

<html>
 <head>
  <meta charset="UTF-8">
  <title>竖直滑动条</title>
  <style>
   * {
    margin: 0;
    padding: 0;
   }
   .scroll{
    margin: 100px;
    width: 5px;
    height: 320px;
    background: #ccc;
    position: relative;
   }

   .bar {
    width: 15px;
    height: 5px;
    background: #369;
    position: absolute;
    top: 0px;
    left: -5;
    cursor: pointer;
   }
   p{
    margin-left: 100px;
   }
  </style>
 </head>
 <body>
  <div class="scroll" id="scroll">
   <div class="bar" id="bar">
   </div>
  </div>
  <p></p>
  <script>
   //获取元素
   var scroll = document.getElementById("scroll");
   var bar = document.getElementById("bar");
   var ptxt = document.getElementsByTagName('p')[0];
   //添加事件
   bar.onmousedown = function(event) {
    var event = event || window.event;
    //页面事件的Y减去当前相对于最近的祖先定位元素
    var y = event.clientY - this.offsetTop;
    // 拖动需要写到down里面
    document.onmousemove = function(event) {
     var event = event || window.event;
     //获取移动的距离
     var top = event.clientY - y;
     if (top < 0){
      top = 0;
     }
     else if (top > scroll.offsetHeight - bar.offsetHeight){
      top = scroll.offsetHeight - bar.offsetHeight;
     }
     //改变滑块的top
     bar.style.top = top + "px";
     //按照百分比得到当前滑动的距离
     ptxt.innerHTML = "当前滑块的移动的百分比:" + parseInt(top/(scroll.offsetHeight - bar.offsetHeight) * 100) + "%";
     //防止选择内容
     window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
    }
   }
   //当鼠标弹起的时候,不做任何操作
   document.onmouseup = function() {
    document.onmousemove = null;
   }

  </script>
 </body>
</html>

这里之所以加入移动百分比的展示效果,主要是考虑到后续如果需要对接后台的数据就可以达到动态控制的目的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 原生js拖拽功能制作滑动条实例代码

    拖拽属于前端常见的功能,很多效果都会用到js的拖拽功能.滑动条的核心功能也就是使用js拖拽滑块来修改位置.一个完整的滑动条包括 滑动条.滑动痕迹.滑块.文本 等元素,先把html代码写出来,如下所示: <div class="bar_wrap" id="wrap"><!--外包裹元素--> <div class="bar_container"><!--滑动条--> <div class=&qu

  • 使用Javascript开发sliding-nav带滑动条效果的导航插件

    本文介绍如何使用纯Javascript来开发一款简单的JS插件,本插件可以实现鼠标悬停在导航上时,下方的滑动条自动从当前菜单滑动到所选菜单当中去. 本项目的源代码寄宿于GitHub,记得点小星星哦: https://github.com/dosboy0716/sliding-nav 一.前言 效果如下图: 二.使用方法 本插件只需要如下的三步,就可以在您的项目中使用: 1.在</body>标记结束前,引用sliding-nav.js文件 2.在需要滑动条的菜单容器上加类名 sliding-na

  • js判断横竖屏及禁止浏览器滑动条示例

    复制代码 代码如下: var $horizontal = $('.horizontal_screen') ; //可自定义横屏模式提示样式 var $document = $(document) ; var preventDefault = function(e) { e.preventDefault(); }; var touchstart = function(e) { $document.on('touchstart touchmove', preventDefault); }; var

  • js实现水平和竖直滑动条

    最近在做练手项目时候,需要用到滑动条,所以就稍微研究了一下. 首先来看水平滑动条,效果图如下: 代码如下: <html> <head> <meta charset="UTF-8"> <title>水平滑动条</title> <style> * { margin: 0; padding: 0; } .scroll { margin: 100px; width: 500px; height: 5px; backgrou

  • android viewpager实现竖直滑动效果

    做过android开发的朋友们,一定知道viewpager是什么,但是viewpager只能水平滑动.现在有的项目引导页也开始使用竖直滑动,这个时候viewpager就不能帮到我们了,怎么办?只有自定义了,今天就简单讲下viewpager竖直滑动的实现,但是这是告诉大家怎么实现,具体肯定不能用于真实项目中,因为还有些细节没处理,只是给大家讲个思路而已! 首先新建一个android项目叫:Customviewpager 我们也知道viewpager也是继承了ViewGroup类的,在这里我们写一个

  • Android自定义竖直方向SeekBar多色进度条

    写在前面 因为有这样的一个场景,需要实现竖直方向的多色进度条,然后在网上也找了下,没看到符合需要的,于是自定义了一个,效果如下: 具体实现 本来想定义水平的,然后旋转一下,后来发现还不如直接定义竖直方向来的直接,就直接在竖直方向画了下. 首先讲一下思路,就是通过继承View,然后通过onDraw()方法进行绘制.具体绘制的时候,需要处理一些小细节. 比如,我们需要画一个圆形的滑动块,那么我们的背景色带就不能把整个宽度占满,要不然,小圆块只能和色带一样宽了,效果不是很好看,所以在绘制的时候应该把背

  • Js 竖直伸缩菜单(百度)

    从百度扒下来的竖直伸缩菜单-www.jb51.net 新手入门 关于百度搜索推广 账户注册 快速上手 推广制作 设置匹配方式 撰写创意 设置URL 推广投放 点击过滤 质量度 关键词匹配 创意展现方式 效果评估 推广效果 百度Bridge 持续优化 网站优化 增值产品 百度推广助手 营销中心 关注焦点 推广专题 var MENU_ID="MenuContainer";var MENU_LINK_PREFIX="./?module=default&controller=

  • 解决Echarts2竖直datazoom滑动后显示数据不全的问题

    垂直datazoom拖动后第一个和最后一个往往显示不出来,这可能是echart2的bug. 解决方法: 把dataZoom中的handleSize设置小一些可以了.默认值8,可设为4 补充知识:echarts踩坑,dataZoom和X坐标系文字重叠解决方法 找到echarts中的 grid 配置 : 代码写入bottom属性: grid:{ bottom: "70px" } 完成效果: 以上这篇解决Echarts2竖直datazoom滑动后显示数据不全的问题就是小编分享给大家的全部内容

  • JS实现滑动条案例

    本文实例为大家分享了JS实现滑动条效果的具体代码,供大家参考,具体内容如下 在完成这个案例之前需要看一下这个博客:JS案例-添加缓动画 这个案例会用到上面博客的缓动画函数.实现效果如下: 完整代码如下: html代码: <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF-8">     <meta http-equiv="X-

  • 使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能

    import cv2 from matplotlib import pyplot as plt import numpy as np img= cv2.imread('39.jpg')#加载图片 cv2.namedWindow('Canny edge detect')#设置窗口,cv2.WINDOW_NORMAL表示窗口大小可自动调节 cv2.namedWindow('Original Image',cv2.WINDOW_NORMAL) cv2.namedWindow('Canny edgeIm

  • AjaxUI:滑动条

    New Document body{text-align:center;font:12px Arial;} #bg{width:600px;height:20px;background:#099;margin:auto;padding:3px;text-align:left;} #drag{width:20px;height:20px;background:#0ff;} p{width:600px;text-align:left;} var Parameter; var first=true;

随机推荐