前端编程练习:放大镜

放大镜你们都不陌生,此次我就用js写一个放大镜css

css代码html

  • {
    margin: 0;
    padding: 0;
    }浏览器

    .kk {
        display: flex;
    }
    
    .box {
        width: 500px;
        height: 400px;
        border: 1px solid red;
        user-select: none;
    }
    
    .box .img img {
        width: 500px;
        height: 400px;
    }
    
    .box .box1 {
        width: 100px;
        height: 100px;
        background-color: rgb(255, 0, 0, 0.8);
        position: absolute;
        top: 0;
        left: 0;
        /* margin-top: -404px; */
    }
    
    .box2 {
        width: 500px;
        height: 400px;
        background: url(11.jpg) no-repeat;
        background-size: 500% 400%;
        border: 1px solid red;
        margin-left: 50px;
    }

css没啥好说的,你们应该均可以看得懂ide

html代码
flex

HTML里主要三个div,class="img"是放图片的,class="box1"是图片上面的红块,脱离文档流浮在img上面,class="box2"是显示框,具体效果为:box1的红块移动到哪里,图片哪的部分就会在box2里放大url

js代码
指针

获取元素没啥说的,主要说的是box.onmousemove里面的内容
clientX和clientY是为了得到鼠标的位置 (注:clientX 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标。clientY同理)
下面的三目运算符是防止红块脱离图片,能够理解为红块的水平位置大于50小于450,垂直位置大于50小于350
里面的数据是根据css里设置的数据计算出来的,好比图片的宽是500px,红块的宽是100px,不过还要考虑到鼠标的位置是红块的中间,因此红块还要减一半的宽度,也就是50px,这也是三目运算符里面450数据的来源。
就像以前说的,鼠标位于红块的中间,因此不管如何,都要在减去50px,这样获得的才是红块最边缘(距离顶部和左边)的位置
最后就是设置box2显示框的状况,由于红块宽高为100px,图片的宽高是500px和400px,因此box2显示框里红块下面覆盖图片的宽扩大5倍,高扩大4倍,由于位置的缘由,因此乘的是负再加上宽高的一半code

效果图:htm

相关文章
相关标签/搜索