<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        騰訊微云黑色遮罩引導(dǎo)蒙版更好的CSS實現(xiàn)方式_html/css

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 16:37:52
        文檔

        騰訊微云黑色遮罩引導(dǎo)蒙版更好的CSS實現(xiàn)方式_html/css

        騰訊微云黑色遮罩引導(dǎo)蒙版更好的CSS實現(xiàn)方式_html/css_WEB-ITnose:一、微云的實現(xiàn) 網(wǎng)站有一些改動的時候,為了讓用戶熟知新的操作位置,往往會增加一個引導(dǎo),常見的方式就是使用一個黑色的半透明蒙版,然后需要關(guān)注的區(qū)域是鏤空的。 然后上周五我去 微云 轉(zhuǎn)悠的時候,也看到了引導(dǎo)層,于是職業(yè)病又犯了,去學(xué)習(xí)下別人是怎么
        推薦度:
        導(dǎo)讀騰訊微云黑色遮罩引導(dǎo)蒙版更好的CSS實現(xiàn)方式_html/css_WEB-ITnose:一、微云的實現(xiàn) 網(wǎng)站有一些改動的時候,為了讓用戶熟知新的操作位置,往往會增加一個引導(dǎo),常見的方式就是使用一個黑色的半透明蒙版,然后需要關(guān)注的區(qū)域是鏤空的。 然后上周五我去 微云 轉(zhuǎn)悠的時候,也看到了引導(dǎo)層,于是職業(yè)病又犯了,去學(xué)習(xí)下別人是怎么

        一、微云的實現(xiàn)

        網(wǎng)站有一些改動的時候,為了讓用戶熟知新的操作位置,往往會增加一個引導(dǎo),常見的方式就是使用一個黑色的半透明蒙版,然后需要關(guān)注的區(qū)域是鏤空的。

        然后上周五我去 微云 轉(zhuǎn)悠的時候,也看到了引導(dǎo)層,于是職業(yè)病又犯了,去學(xué)習(xí)下別人是怎么實現(xiàn)的。下面是觀測的結(jié)果:

        為了實現(xiàn)鏤空蒙層效果,作者發(fā)揮了小時候拼積木的才能,使用兩層HTML結(jié)構(gòu),內(nèi)層使用5塊獨立區(qū)域拼接形成,至于中間鏤空的區(qū)域的陰影則是使用的圖片實現(xiàn)的。

        雖然最終的效果滿足了產(chǎn)品的需求,對于用戶而言,目的已經(jīng)達到。但是,從代碼質(zhì)量層面、潛在的體驗提升可能性、使用場景廣度上來講,還是弱了很多的。

        舉例來說,如果我們某個提示區(qū)域面積很大,那中間的那個鏤空區(qū)域尺寸是不是要變,那后面的背景圖片怎么辦?搞新圖,有人看到了使用了 background-size:cover , 那IE7,IE8怎么辦?哦,可能微云不需要管IE7, IE8.

        如果不需要管IE7, IE8,那這里的實現(xiàn)就顯得更加小白了。我們實際上只需要一層標(biāo)簽,一層空標(biāo)簽就可以實現(xiàn)我們的效果,且不需要圖片。

        二、我的實現(xiàn)

        主要在于思維方式的變化。拼積木這種想法大家都比較容易想到,符合日常認(rèn)知,但是,但代碼層面,我們可以進行思維轉(zhuǎn)換,發(fā)散思考,偌大的半透明遮罩層,我們不要老想著背景色塊背景色塊,可以突破常規(guī)思維,把它認(rèn)為是邊框,一個很大很大的邊框(我們平時使用border都是 1 像素巨多),這樣,我們自然就有了鏤空效果。

        如下圖示意:

        但是,目前我們中間的鏤空區(qū)域方的,有沒有什么辦法變成圓的呢?

        自然有, 方法1 是元素設(shè)置超大圓角,但是,此時為了邊框依然填滿整個屏幕, border 邊框尺寸要大大增大,但是,為了不影響頁面的滾動條,我們必須再嵌套一層標(biāo)簽,就顯得啰嗦了;

        方法2則是方法1某些方面的逆向思維處理,就是把當(dāng)前元素作為外層限制標(biāo)簽,里面重新生成一個大尺寸偽元素,實現(xiàn)自適應(yīng)尺寸的圓角效果,這個好,HTML干凈不啰嗦,CSS一步到位(代碼如下示意);

        .cover::before { content: ''; width: 100%; height:100%; border-radius: 50%; border: 400px solid #000; position: absolute; left: -400px; top: -400px; /* 自己瞎填的參數(shù),示意 */ box-shadow: inset 0 0 5px 2px rgba(0,0,0,.75);}

        大家可以看到,上面的偽元素的各個參數(shù)都是固定參數(shù)值,與外部元素的尺寸什么的沒有任何關(guān)系,只要外部元素尺寸不超過400,里面永遠會有一個正橢圓的內(nèi)陰影的鏤空圖形(因為超出部分會被 .cover 隱藏),要理解圓角和正橢圓的關(guān)系,可以參考我之前的文章:“ 秋月何時了,CSS3 border-radius知多少? ”。

        眼見為實,耳聽為虛,您可以狠狠地點擊這里: 一層標(biāo)簽實現(xiàn)網(wǎng)站引導(dǎo)鏤空蒙版功能demo (點擊黑色蒙層會有引導(dǎo)切換效果)

        demo這個鏤空蒙層所使用的HTML代碼如下:

        沒錯,就這么簡單,沒什么嵌套,沒有什么五個元素變形金剛合體,沒有使用圖片。

        微云這張圖片3K多,以微云的用戶訪問量,估計流量費要不少錢的。

        而且,大家如果點擊蒙版,會發(fā)現(xiàn),鏤空的區(qū)域大小每次都是不一樣的,有大有小,有高有瘦,而微云的那個實現(xiàn)方法要滿足此需求就棘手;而且,大家發(fā)現(xiàn)沒,這些尺寸位置的變化都是動畫來動畫去的,不是嗙嗙嗙這種生硬的效果,更soft, 對用戶視覺引導(dǎo)效果更好,你看,我從這里到這里了,為什么可以實現(xiàn)動畫效果呢,因為我們的鏤空和內(nèi)陰影都是CSS實現(xiàn)的,而微云的圖片方法,顯然是無法有動畫的。

        JS代碼輔助

        當(dāng)然,我的實現(xiàn)也離不開JS的輔助,JS的工作很簡單,讓蒙層的 width / height 以及 border 大小和需要引導(dǎo)的元素相關(guān)聯(lián)。

        我特意整了個可以公用的方法 coverGuide (命名不喜歡自己隨便改):

        var coverGuide = function(cover, target) { var body = document.body, doc = document.documentElement; if (cover && target) { // target size(width/height) var targetWidth = target.clientWidth, targetHeight = target.clientHeight; // page size var pageHeight = doc.scrollHeight, pageWidth = doc.scrollWidth; // offset of target var offsetTop = target.getBoundingClientRect().top + (body.scrollTop || doc.scrollTop), offsetLeft = target.getBoundingClientRect().left + (body.scrollLeft || doc.scrollLeft); // set size and border-width cover.style.width = targetWidth + 'px'; cover.style.height = targetHeight + 'px'; cover.style.borderWidth = offsetTop + 'px ' + (pageWidth - targetWidth - offsetLeft) + 'px ' + (pageHeight - targetHeight - offsetTop) + 'px ' + offsetLeft + 'px'; cover.style.display = 'block'; // resize if (!cover.isResizeBind) { if (window.addEventListener) { window.addEventListener('resize', function() { coverGuide(cover, target); }); cover.isResizeBind = true; } else if (window.attachEvent) { window.attachEvent('onresize', function() { coverGuide(cover, target); }); cover.isResizeBind = true; // IE7, IE8 box-shadow hack cover.innerHTML = ''; } } }};

        這里的 coverGuide 方法使用原生JS實現(xiàn),IE6+瀏覽器都是兼容的,不依賴JS庫,大家可以隨意使用。當(dāng)然,寫得匆忙,沒有嚴(yán)格驗證,可能有bug,大家可以稍微留點心。

        使用非常簡單,語法如下:

        coverGuide(cover, target);

        其中 cover 就是 .cover 這個單獨的蒙版元素, target 則是我們需要指引的元素,按鈕啊,導(dǎo)航什么的。然后,我們的鏤空區(qū)域自動定位到 target 的位置,大小也是 target 元素的大小。超省心。

        具體使用,可參考上面的demo,源代碼就在頁面上。

        IE7,IE8怎么辦

        如果你需要兼容IE7,IE8,我們不妨就方框效果;如果設(shè)計和產(chǎn)品接受不了,則可以使用圖片打個補丁,例如上面JS代碼部分的:

        cover.innerHTML = '';

        我demo使用的這個圖片長下面這樣:

        大小還有陰影都是我自己隨手一搞的,旨在示意,真實項目大家可以向設(shè)計師索要圖片。

        然后,CSS超easy, 圖片撐滿我們的 cover 就可以。

        /* IE7, IE8 img */.cover > img { width: 100%; height: 100%; }

        三、結(jié)束語

        這種蒙版覆蓋思想呢,不僅僅適用于這種大面積的引導(dǎo)。我們上傳圖片,尤其上傳頭像之后,要對頭像進行剪裁,常見的交互之一就是四周黑色,中間鏤空,也可以使用巨大 border 來實現(xiàn)我們的效果,一層標(biāo)簽足矣,根本不需要上下左右額外4層標(biāo)簽拼接合體實現(xiàn)。

        內(nèi)部自適應(yīng)的圓角效果單看文字,很多小伙伴估計不知道我在說些什么,建議去demo頁面看下偽元素的代碼,真實區(qū)域大小和最終效果,估計就會明白了。

        感謝閱讀,歡迎交流,歡迎提供更好的實現(xiàn)方法,一定有的,只是我功力不夠。

        以上~

        本文為原創(chuàng)文章,會經(jīng)常更新知識點以及修正一些錯誤,因此轉(zhuǎn)載(圖片請勿直接外鏈)請保留原出處,方便溯源,避免陳舊錯誤知識的誤導(dǎo),同時有更好的閱讀體驗。

        本文地址: http://www.zhangxinxu.com/wordpress/?p=5290

        (本篇完)

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        騰訊微云黑色遮罩引導(dǎo)蒙版更好的CSS實現(xiàn)方式_html/css

        騰訊微云黑色遮罩引導(dǎo)蒙版更好的CSS實現(xiàn)方式_html/css_WEB-ITnose:一、微云的實現(xiàn) 網(wǎng)站有一些改動的時候,為了讓用戶熟知新的操作位置,往往會增加一個引導(dǎo),常見的方式就是使用一個黑色的半透明蒙版,然后需要關(guān)注的區(qū)域是鏤空的。 然后上周五我去 微云 轉(zhuǎn)悠的時候,也看到了引導(dǎo)層,于是職業(yè)病又犯了,去學(xué)習(xí)下別人是怎么
        推薦度:
        標(biāo)簽: 的方式 黑色的 html
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日本人护士免费xxxx视频| 99re热免费精品视频观看| 中文字幕免费在线看电影大全| 久久精品中文字幕免费| 一二三四在线观看免费高清中文在线观看 | 老司机69精品成免费视频| 国产成人免费午夜在线观看| 久久综合亚洲鲁鲁五月天| 91精品全国免费观看含羞草| 亚洲午夜精品久久久久久人妖| 亚洲欧美日本韩国| 精品国产免费观看| 久久亚洲私人国产精品vA | 一区二区三区免费看| 九九精品免费视频| 亚洲av成人综合网| 免费在线视频一区| 9i9精品国产免费久久| 亚洲AV无码乱码国产麻豆| 国产桃色在线成免费视频 | 日韩在线观看视频免费| 在线观看无码AV网站永久免费| 亚洲国产系列一区二区三区 | 亚洲欧洲久久精品| 中文日本免费高清| 亚洲视频在线免费看| 国产在线国偷精品产拍免费| 特级aa**毛片免费观看| 亚洲av无码国产精品夜色午夜| 91成人免费观看网站| 久久久久亚洲av无码尤物| 无码区日韩特区永久免费系列 | 亚洲理论片中文字幕电影| 国产一级a毛一级a看免费视频| 久久亚洲精精品中文字幕| 免费看美女被靠到爽| 中文字幕在线免费视频| 亚洲男人的天堂久久精品| 亚洲美女免费视频| 男女男精品网站免费观看| 亚洲视频一区二区三区|