定位一个正常的图片,上面放一个可被鼠标移动的半透明的色块,
在图片右侧隐藏一个更大的图片,
当半透明色块移动时显示右侧大图的对应部分
注:如果想在网页中查看源代码提取文件,提取不到大图,可以直接Ctrl+s保存网页全部内容
<div id="left">
<div id="box"></div>
</div>
<div id="right">
<img id="bbox" src="../HTML/img/big.jpg"></img>
</div>
为了让色块可以在图片中移动,需要给图片相对定位,色块绝对定位,便于给色块进行位置赋值
为了让大图根据色块进行位置变化,需要给右边外框相对定位,图片绝对定位
分别给左右框左浮动,保障放大图出现在正常图旁边
*{
padding:0;
margin: 0;
}
#left{
width: 400px;
height: 400px;
border: 1px solid black;
margin:20px;
background-image: url(../HTML/img/small.jpg);
background-size: 100% 100%;
position: relative;
float: left;
}
#box{
width: 220px;
height: 200px;
background:white;
/*透明度*/
opacity: 0.4;
/*方块要动所以给他一个定位*/
position: absolute;
}
#right{
width: 440px;
height: 400px;
border: 1px solid black;
position: relative;
float: left;
margin:20px;
overflow: hidden;
}
#bbox{
position: absolute;
left: 0;
top: 0;
}
1)鼠标移动函数
left.onmousemove=function(e){ }
2)获得兼容的事件对象(鼠标位置)
window.event:ie解析这个 e:谷歌,火狐解析这个
var move=window.event||e;
3)获得鼠标距离事件源的位置(需要先给事件源一个相对定位)
move.offsetX:IE浏览器上的获取方法,e.offsetX:非IE浏览器的获取方法
var move_left=move.offsetX||e.offsetX;
var move_top=move.offsetY||e.offsetY;
4)为了让鼠标在色块中心时色块开始正式移动,所以鼠标位置减去色块的一边才是色块距离边框的真实距离
var box_left=move_left-110;
var box_top=move_top-100;
5)将计算好的位置赋值给色块
box.style.left=box_left+"px";
box.style.top=box_top+"px";
鼠标和事件源之间如果有其他元素存在,效果的触发就会有问题(图片作为事件源,色块影响了效果)
所以要避免鼠标与事件源有其他元素,可以在色块和图片上在加一个盒子,让鼠标在盒子上移动
<div id="new"></div>
调整盒子的位置,保证盒子透明
#new{
width: 400px;
height: 400px;
background: blue;
position: absolute;
top: 0;
left: 0;
/*背景设置成透明*/
opacity: 0;
/*鼠标变成十字*/
cursor: crosshair;
}
所以当计算好色块的距离小于0时,不再让色块在移动而是等于0
判断结束后再进行赋值
if(box_left<0){
box_left=0;
}
if(box_top<0){
box_top=0;
}
if(box_left>180){
box_left=180;
}
if(box_top>200){
box_top=200;
}
右侧整个大图片800x800
1)根据对应色块移动,大图在框内的显示位置可得到关系式
var bbox_left=box_left*-2;
var bbox_top=box_top*-2;
2)将计算的值赋值
bbox.style.left=bbox_left+"px";
bbox.style.top=bbox_top+"px";
1)鼠标未移入前色块,右侧大图不显示
#box,#right{
display: none; }
2)鼠标移入事件,色块显示 ,右侧大图显示
newleft.onmouseover=function(){
box.style.display="block";
right.style.display="block";
}
3)鼠标移出事件色块显示 ,右侧大图消失
newleft.onmouseout=function(){
box.style.display="none";
right.style.display="none";
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{
padding:0;
margin: 0;
}
#left{
width: 400px;
height: 400px;
border: 1px solid black;
margin:20px;
background-image: url(../HTML/img/small.jpg);
background-size: 100% 100%;
position: relative;
float: left;
}
#box{
width: 220px;
height: 200px;
background:white;
/*透明度*/
opacity: 0.4;
/*方块要动所以给他一个定位*/
position: absolute;
}
#right{
width: 440px;
height: 400px;
border: 1px solid black;
position: relative;
float: left;
margin:20px;
overflow: hidden;
}
#bbox{
position: absolute;
left: 0;
top: 0;
}
#new{
width: 400px;
height: 400px;
background: blue;
position: absolute;
top: 0;
left: 0;
/*背景设置成透明*/
opacity: 0;
/*鼠标变成十字*/
cursor: crosshair;
}
#box,#right{
display: none;
}
</style>
</head>
<body>
<div id="left">
<div id="box"></div>
<div id="new"></div>
</div>
<div id="right">
<img id="bbox" src="../HTML/img/big.jpg"></img>
</div>
<script>
var left=document.getElementById("left");
var box=document.getElementById("box");
var right=document.getElementById("right");
var bbox=document.getElementById("bbox");
var newleft=document.getElementById("new");
// 给左侧小图加鼠标移动事件
newleft.onmousemove=function(e){
// 鼠标移动函数
var move=window.event||e;
// 获得兼容的事件对象
var move_left=move.offsetX||e.offsetX;
// 获得鼠标距离事件源的位置
var move_top=move.offsetY||e.offsetY;
// 为了让鼠标在色块中心时色块开始正式移动,所以鼠标位置减去色块的一边才是色块距离边框的真实距离
var box_left=move_left-110;
var box_top=move_top-100;
当计算好的距离小于0时,不再让色块在移动而是等于0
if(box_left<0){
box_left=0;
}
if(box_top<0){
box_top=0;
}
if(box_left>180){
box_left=180;
}
if(box_top>200){
box_top=200;
}
// 将计算好的位置赋值给色块
box.style.left=box_left+"px";
box.style.top=box_top+"px";
var bbox_left=box_left*-2;
var bbox_top=box_top*-2;
// 将计算的值赋值
bbox.style.left=bbox_left+"px";
bbox.style.top=bbox_top+"px";
}
// 鼠标移入事件
newleft.onmouseover=function(){
box.style.display="block";
right.style.display="block";
}
// 鼠标移出事件
newleft.onmouseout=function(){
box.style.display="none";
right.style.display="none";
}
</script>
</body>
</html>
Mac清理工具CleanMyMac X的下载、安装与激活是如何进行的。
**官网:**只有3.7和2.6版本(截止2020年3月5日)https://www.anaconda.com/distribution/**清华镜像:**3.5之前的版本https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/参考文章:1. 安装anaconda,两个对勾都选择,输入1测试成功没2. 在安装Anaconda之前,有的已...
1. if结果2. choose 结果1 结果2 ... 结果3 注意:1. 当多个 符合条件时,只执行第一个符合条件的 2. 当所有 都不符合条件时,执行 的内容3. 必须为 内的最后一个
最近项目增加,缺人手,面试不少,但匹配的人少的可怜。跟其他组的面试官聊,他也抱怨了一番,说候选人有点儿花拳绣腿,回答问题不落地,拿面试最常问的MySQL来说,并不只是懂“增删改查”、表关联...
文本聚类问题:一个文本为一个向量,向量的长度为字典的长度,这个向量中的每个值为0或1,表示这个单词是否在该文章中出现。假设为二分类,则每个向量对应一个分类值,分类值为0或1,如果为三分类,则分类值为0,1,2。而这个标签值为隐变量Z。这里的观测O为具体的各个向量。在这个模型里,参数是什么呢?我们需要由参数出发,经由隐变量,计算得到观测O,因此这里的参数设计可以类似于隐马尔可夫模型的
我们经常使用join子句来查询表中的行(在INNER JOIN的情况下),或者可能没有(在LEFT JOIN的情况下)另一个表中的相应行。 在MySQL中,可以在UPDATE语句中使用JOIN子句执行跨表更新。MySQL UPDATE JOIN的语法如下:UPDATE T1, T2,[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1SET T1.C2...
基于Select/Poll实现并发服务器(一)9.3 Select/Poll概述在LWIP中,如果要实现并发服务器,可以基于Sequentaial API来实现,这种方式需要使用多线程,也就是为每个连接创建一个线程来处理数据。而在资源受限的嵌入式设备来说,如果为每个连接都创建一个线程,这种资源的消耗是巨大的,因此,我们需要换一种实现思路,也就是使用IO多路复用的机制来实现,也就是select机制。Select/Poll则是POSIX所规定,一般操作系统或协议栈均有实现。值得注意的是,poll和sel
1.执行 yum install php-mbstring 2. 修改php.ini (这一步非常重要, 部分lxadmin版本无法自动修改) echo ‘extension=mbstring.so’ /etc/php.ini #更具php安装目录而定 3. 重启web service 如果是apache: service httpd restart 方法二: php 5.36 安装目录1.执行y...
帧中继的水平分割和解决方法。拓扑如下:分析:r1到r2和r3之间各有一条PVC,r1有一条直连路由1.1.1.0 /24,r2有一条2.2.2.0/24,r3有一条3.3.3.0/24的路由。当他们起RIP协议后,r1的路由表是完整的,而r2和r3只有一条,怎么少了一条呢?原因就是r1的s0/0/0口的水平分割问题,r2和r3会把各自的路由更新发给r1 ,r2...
新项目引入安全控制 项目中新近添加了Spring Security安全组件,前期没怎么用过,加之新版本少有参考,踩坑四天,终完成初步解决方案.其实很简单,Spring Security5相比之前版本少了许多配置,操作起来更轻量 MariaDb登录配置加密策略 SpringSecurity5在执行登录认证时,需预设加密策略. 坑一:加密策略配置,验密始终不通过,报错401...
一:Redis是什么? 这个我想怎么总结呢,突然发现再好的解释也没有redis官网解释的好,它的解释已经达到超宇宙的级别了。。。不信你可以看看。人家也说了,redis是个内存存储的数据结构服务器,这个听起来有多么牛逼啊。。。。一说到数据结构,第一反映就会想到C#中那些dictionary,hashset,list,SortDictionary等等...
问题描述:从网上下载的动画模型中,如果其自带的动画没有设置循环,在Unity中如何保证其能自动循环播放,条件是不修改“Rig->Anitmation Type->Legacy”;因为需要使用Avatar设置骨骼和AnimatorController设置运动状态机。解决方案:1. 选择Project中的对象,如图1:2. 打开Inspector面板的Anim