前端編程練習:放大鏡

放大鏡你們都不陌生,此次我就用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

相關文章
相關標籤/搜索