真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例

這篇文章主要介紹了CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站是一家成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),提供網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需開發(fā),網(wǎng)站開發(fā)公司,于2013年開始是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。

分析

拿桌面日歷中的效果為例,鼠標(biāo)移動(dòng)時(shí)附近的邊框也漸變性可見。這個(gè)效果不就是探照燈效果嘛!這個(gè)完全可以用 CSS 中的 mask 蒙版配合一個(gè)徑向漸變實(shí)現(xiàn)。

CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例

但問題是,mask 蒙版是作用于整個(gè)元素的,沒辦法只作用于 border 而不影響內(nèi)容。這個(gè),那只能把 border 和實(shí)際內(nèi)容分離用不同層來(lái)表示了。嗯,鼠標(biāo)移動(dòng)就更新蒙版位置,應(yīng)該不成問題。

實(shí)現(xiàn)

準(zhǔn)備工作

首先,擼好兩層日歷格子,一層展示日期信息,一層展示探照燈效果的邊框。用 flex 布局也好,grid 也好,哪怕 inline-block 也都是沒有問題的,這都不重要,重要的是上下兩層的格子一定要對(duì)齊,然后我們用 relative 的容器把這兩層 absolute 層圈起來(lái),固定住。


    
        
        
        
        四         五         六         日                                             ...                                                28十四             29十五             ...             2十九                 

層示意圖:

CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例

效果就是這樣了:

CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例

鼠標(biāo)沒有放上去的時(shí)候,先把 border 層隱藏掉。

.border-layer {
 ...
  visibility: hidden;
}

.calendar:hover .border-layer {
  visibility: visible;
}

CSS Mask

CSS Mask 類似于 Photoshop 中的圖層蒙版,可以使用一張圖作為蒙版用作在目標(biāo)元素上,圖片的 alpha 通道(也就是透明度信息)決定了目標(biāo)元素哪部分可見(也可以選擇使用亮度信息)。

舉個(gè)例子,如果蒙版圖片是一張半透明圖,則作用到實(shí)際元素上效果和設(shè)置 opacity: 0.5 效果一樣;如果蒙版圖片是一張中間鏤空的五角星,則效果就是元素被裁剪成五角星形狀。

Mask 的語(yǔ)法和 background 的語(yǔ)法幾乎完全一致,這里我們用徑向漸變創(chuàng)建一個(gè)半徑 80px 從中心白色到邊緣透明的漸變圓,配合 mask-repeat 和 mask-size 防止 repeat 和變形。

-webkit-mask-image: radial-gradient(circle at center, white 0%, transparent 80px);
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-size: 160px 160px; /* 半徑80px 所以 size 需要是 160px */

接下來(lái)我們來(lái)更新 mask-position 。這里有兩個(gè)點(diǎn)要注意,一是獲取鼠標(biāo)對(duì)目標(biāo)元素的相對(duì)坐標(biāo),一是 position 偏移。

MouseEvent 中有一堆的 X/Y,我們用相對(duì) document 的坐標(biāo) pageX/pageY,減去目標(biāo)元素相對(duì) document 的坐標(biāo),就能得到我們需要的坐標(biāo)了。 向量公式: AB = AC - BC

CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例

不過(guò),這里 mask-position 的坐標(biāo)還需要處理一下。我們定義的 mask 是一張 160x160 的圓形漸變,而 mask-position 和 background-position 一樣,定義的是蒙層左上角 (0,0) 的位置實(shí)際需要和容器的哪個(gè)坐標(biāo)對(duì)齊。因此我們需要把計(jì)算得到的坐標(biāo)再減去 (80, 80) 才能讓漸變中心和鼠標(biāo)的坐標(biāo)保持一致。

var borderLayer = document.querySelector(".border-layer");

document.querySelector(".calendar").addEventListener("mousemove", function(ev){
  var x = ev.pageX;
  var y = ev.pageY;
  var bounding = borderLayer.getBoundingClientRect();
  
  borderLayer.style.webkitMaskPosition = `${x - bounding.x - 80}px ${y -bounding.y - 80}px`;
});

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


新聞標(biāo)題:CSS實(shí)現(xiàn)仿Windows10鼠標(biāo)照亮邊框效果的示例
網(wǎng)頁(yè)地址:http://weahome.cn/article/pdojsc.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部