在元素的特定区域设置背景颜色

5
我希望实现的是将光标的位置添加悬停效果,类似于这个网站:https://drmportal.com/。下面是我提供的fiddle链接:https://jsfiddle.net/onnmwyhd/。以下是我的代码。 HTML
<div id="container"></div>

CSS

#container{
background-color: #6fc39a;
height:200px;
}

jQuery

$("#container").mousemove(function(e){

var x = e.pageX - this.offsetLeft;
    var y = e.pageY - this.offsetTop;
    $(this).html("X: " + x + " Y: " + y); 
});

这是我想要在光标位置的颜色...

    background-image: -webkit-linear-gradient(-35deg, #35a28e, #a8e4a5);

1
你看过DRM门户网站的theme.js文件中第98行的“梯度跟随器”函数吗? - Jonathan Bowman
@JonathanBowman 我正在处理,先生... - Sam Teng Wong
2个回答

2

在您的参考网站中,它使用了canvas,请查看此fiddle以获得确切的结果

JSFiddle

HTML

<div id="container" class="stalker">
    <canvas id="canvas" width="1600" height="433"></canvas>
</div>

CSS

.stalker {
    background-color: #6fc39a;
    height:200px;
    border-top-color: rgba(168, 228, 165, 0.7);
    border-bottom-color: rgba(53, 162, 142, 0.3);
}

JavaScript

var stalker = $('.stalker');

var canvas = $('#canvas')[0];

var ctx = canvas.getContext('2d'), gradient, initialized = false;

$("#container").mousemove(function(e){
    setTimeout(function(){
        initialized = true;
        canvas.width  = stalker.width();
        canvas.height = stalker.height();
        gradient = ctx.createRadialGradient(e.pageX, e.pageY, 0, e.pageX, e.pageY, canvas.width);
        gradient.addColorStop(0, stalker.css('border-top-color'));
        gradient.addColorStop(1, stalker.css('border-bottom-color'));
        ctx.fillStyle = gradient;
        ctx.fillRect(0, 0, canvas.width, canvas.height);

    }, initialized ? 200 : 0);
});

1
尝试向#container添加元素,以保存光标值,避免覆盖元素的html; 向#container添加
元素,并将其css position设置为absoluteleft设置为xtop设置为y,用于跟踪div中的光标。

$(function() {
  $("#container").mousemove(function(e) {
    var x = e.pageX - this.offsetLeft;
    var y = e.pageY - this.offsetTop;
    $("div", this).css({
      left: x - (75 / 2),
      top: y - (75 / 2)
    })
    $("span", this).html("X: " + x + " Y: " + y);
  }).mousemove();
})
#container {
  background-image: -webkit-linear-gradient(-35deg, #35a28e, #a8e4a5);
  background-image: linear-gradient(125deg, #35a28e, #a8e4a5);
  background-color: #6fc39a;
  height: 200px;
}
#container div {
  background-image: -webkit-linear-gradient(-35deg, #35a28e, #a8e4a5);
  width: 75px;
  height: 75px;
  position: absolute;
  border-radius: 100px;
  opacity: 0.5
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>

<div id="container">
  <span></span>
  <div></div>

</div>

JSFiddle https://jsfiddle.net/onnmwyhd/2/

的内容与编程有关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接