jquery+css实现拖拽逼真多档位换挡旋钮开关效果代码

代码语言:html

所属分类:拖放

代码描述:jquery+css实现拖拽逼真多档位换挡旋钮开关效果代码

代码标签: jquery css 拖拽 逼真 多档位 换挡 旋钮 开关

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<html lang="en">

<head>
    <meta charset="UTF-8">
<style>
html,body {
	height:100%;
	width:100%;
	overflow:hidden
}
body {
	background:#000 radial-gradient(ellipse at center,#8c8f95 0,#4e5054 100%) center center no-repeat
}
.dimmer {
	position:absolute;
	top:50%;
	left:50%;
	margin:-150px;
	width:300px;
	height:300px;
	border-radius:50px;
	background:#eaebea;
	background:linear-gradient(to bottom,#f3f4f3 0,#afb0b3 99%);
	box-shadow:0 20px 14px 0 rgba(70,70,70,0.4),0px 4px 10px -0px rgba(0,0,0,0.6),0px -4px 4px 4px #97979a inset
}
.dimmer:before {
	content:"";
	position:absolute;
	width:300px;
	left:50%;
	margin-left:-150px;
	height:190px;
	top:0;
	border-radius:50px;
	background:linear-gradient(to bottom,rgba(243,244,243,0.8) 0,rgba(243,244,243,0) 99%);
	z-index:1
}
.dimmer:after {
	content:"";
	position:absolute;
	top:22px;
	left:26px;
	width:250px;
	height:250px;
	border-radius:30px;
	box-shadow:0 -1px 2px 2px rgba(0,0,0,0.3) inset,0px 1px 3px 3px #f3f4f3 inset
}
.knob {
	z-index:20;
	cursor:pointer
}
.knob .center {
	position:absolute;
	width:116px;
	height:116px;
	left:50%;
	top:50%;
	margin:-58px 0 0 -58px;
	border-radius:160px;
	background:linear-gradient(to bottom,#e7e7e7 0,#bec0c3 99%);
	box-shadow:inset 0 5px 4px 2px rgba(0,0,0,0.35);
	z-index:2
}
.knob:before {
	content:"";
	position:absolute;
	width:164px;
	height:164px;
	left:50%;
	top:50%;
	margin:-82px 0 0 -82px;
	border-radius:164px;
	background:linear-gradient(to bottom,#f5f5f5 0,#a6a7a7 99%);
	box-shadow:0 5px 12px 0 rgba(0,0,0,0.7);
	z-index:0
}
.knob:after {
	content:"";
	position:absolute;
	width:142px;
	height:142px;
	left:50%;
	top:50%;
	margin:-71px 0 0 -71px;
	border-radius:140px;
	background:linear-gradient(to bottom,#afb0b3 0,#e5e7e6 99%);
	z-index:1
}
.progress {
	position:absolute
}

</style>
</head>

<body style="background: radial-gradient(at center center, rgb(140, 143, 149) 0%, rgb(0, 0, 0) 100%) center center no-repeat rgb(0, 0, 0);">
    <figure class="dimmer">
        <div class="wrapper">
            <div class="knob">
                <div class="center"></div>
            </div>
        </div><canvas class="progress" width="300" height="300"></canvas></figure>
    <!-- partial -->
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery.2.11.js"></script>
    <script >
(function() {
  var Dimmer, dimmer;

  Dimmer = (function() {
    class Dimmer {
      constructor($context) {
        var knobOffset;
        // Callbacks
        this.onMouseDown = this.onMouseDown.bind(this);
        this.onMouseUp = this.onMouseUp.bind(this);
        this.onMouseMove = this.onMouseMove.bind(this);
        this.$context = $context;
        this.$body = $("body");
        this.$knob = this.$context.find(".knob");
        this.$handle = this.$context.find(".handle");
        this.$progress = this.$context.find(".progress");
        this.$center = this.$context.find(".center");
        this.$textOutput = this.$center.find("span");
        this.ctx = this.$progress.get(0).getContext("2d");
        knobOffset = this.$knob.offset();
        this.elementPosition = {
          x: knobOffset.left,
          y: knobOffset.top
        };
        this.centerX = this.$progress.width() / 2;
        this.centerY = this.$progress.height() / 2;
        this.canvasSize = this.$progress.width();
        this.addEventListeners();
        this.drawLine();
        this.draw();
        return;
      }

      addEventListeners() {
        this.$context.on("mousedown", this.onMouseDown);
        this.$context.on("mousemove", this.onMouseMove);
        $("body").on("mouseup", this.onMouseUp);
      }

      setDimmerPosition() {
        this.draw();
      }

      drawLine(endAngle) {
        var radius, startAngle, x, y;
        this.ctx.save();
        this.ctx.translate(this.centerX, this.centerY);
        this.ctx.rotate(145 * (Math.PI / 180));
        startAngle = 0;
        radius = 93;
        x = 0;
        y = 0;
        this.ctx.moveTo(98, 0);
        this.ctx.beginPath();
        this.ctx.shadowBlur = 10;
        this.ctx.lineWidth = 2.4;
        .........完整代码请登录后点击上方下载按钮下载查看

网友评论0