CSS遮罩效果和毛玻璃效果

来源:http://www.cnblogs.com/xiaohuochai/archive/2017/09/12/7511823.html
-Advertisement-
Play Games

[1]普通遮罩 [2]陰影遮罩 [3]模糊遮罩 [4]半透明顏色 [5]模糊處理 [6]背景複製 ...


前面的話

  本文將詳細介紹CSS遮罩效果和毛玻璃效果

 

遮罩效果

普通遮罩

  一般地,處理全屏遮罩的方法是使用額外標簽

<style>
.overlay{ position:fixed; top: 0;right: 0;left: 0;bottom: 0; background:rgba(0,0,0,0.8); } .lightbox{ position:absolute; top: 0;right: 0;left: 0;bottom: 0; margin:auto; z-index:1; width: 100px; height: 100px; background-color: white; }
</style> <div class="overlay"></div> <div class="lightbox"></div>

  效果如下

 

陰影遮罩

  對於簡單的應用場景和產品原型來說,我們可以利用box-shadow來達到調暗背景的效果

box-shadow: 0 0 0 999px rgba(0,0,0,0.8);

  這個初步的解決方案有一個明顯的問題,就是它無法在較大的屏幕解析度(如>2000px)下正常工作。要麼加大數字來緩解這個問題,要麼換用視口單位來一勞永逸地解決它,只有這樣才能確保"遮罩層"總是可以覆蓋(至超出)視口

box-shadow: 0 0 0 50vmax rgba(0,0,0,0.8);

  這個技巧非常簡潔易用,但它存在兩個非常嚴重的問題,從而制約了其使用場景

  1、由於遮罩層的尺寸是與視口相關,而不是與頁面相關的,滾動頁面時,遮罩層的邊緣就露出來了,除非給它加上position:fixed這個樣式,或者頁面並沒有長到需要滾動的程度

  2、這種效果無法防止用戶的滑鼠與頁面的其他部分發生交互

<style>
.lightbox{
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  margin:auto;
  z-index:1;
  width: 100px;
  height: 100px;
  background-color: white;
  box-shadow: 0 0 0 50vmax rgba(0,0,0,0.8);
}
</style>
<div class="lightbox"></div>

 

模糊遮罩

  把關鍵元素之外的一切都模糊掉,用來配合(或取代)陰影效果,這個效果的真實感更強,因為它營造出了"景深效果。視線聚焦在距離較近的物體上時,遠處的背景就是虛化的

filter:blur(5px);

  下麵是一個實例,滑鼠移出彈出框時, 模糊消失

 

毛玻璃效果

  下麵來逐步實現毛玻璃效果

 

半透明顏色

  半透明顏色最初的使用場景之一就是作為背景。將其疊放在照片類或其他花哨的背層之上,可以減少對比度,確保文本的可讀性

  下麵是一個實例

<style>
.outer{
  position:relative;
  height: 200px;
  width: 200px;
   background: hsl(20,40%,90%);
  background-image:linear-gradient(90deg,#fb3 11px,transparent 0),
  linear-gradient(90deg,#ab4 23px,transparent 0),
  linear-gradient(90deg,#655 41px,transparent 0);
  background-size: 41px 100%,61px 100%,83px 100%;
}
.inner{
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  font: bold 20px/1.5 '宋體';
  height: 160px;
  width: 180px;
  margin:auto;
  background:hsla(0,0%,100%,.3);
}
</style>
<div class="outer">
  <div class="inner">前端入門容易精通難,說的是前端,更指javascript</div>
</div>

【增大不透明度】

  設置為30%的不透明度,文字難以看清。當然,可以通過提升不透明度來增加文本可讀性,但效果整個效果就沒有那麼生動了

background:hsla(0,0%,100%,.6);

 

模糊處理

  在傳統的平面設計中,通常把文本層所覆蓋的那部分圖片區域作模糊處理。模糊的背景看起來不那麼花哨,因此在它之上的文本就相對比較易讀了。過去,由於模糊運算的性能消耗極其巨大,以致於這個技巧在網頁設計中鮮有用武之地。不過,隨著GPU的不斷進化以及硬體加速的不斷普及,眼下這個技巧已經逐漸流行起來

【父元素模糊】

  如果直接對父元素設置模糊,則文本本身也會被模糊處理

<style>
.outer{
  position:relative;
  height: 200px;
  width: 200px;
   background: hsl(20,40%,90%);
  background-image:linear-gradient(90deg,#fb3 11px,transparent 0),
  linear-gradient(90deg,#ab4 23px,transparent 0),
  linear-gradient(90deg,#655 41px,transparent 0);
  background-size: 41px 100%,61px 100%,83px 100%;
  filter:blur(5px);
}
.inner{
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  font:  20px/1.5 '宋體';
  height: 160px;
  width: 180px;
  margin:auto;
  background:hsla(0,0%,100%,.6);
}
</style>
<div class="outer">
  <div class="inner">前端入門容易精通難,說的是前端,更指javascript</div>
</div>

 【偽元素模糊】

  因此,對一個偽元素進行處理,然後將其定位到元素的下層

<style>
.outer{
  position:relative;
  height: 200px;
  width: 200px;
  z-index:1;
  background: hsl(20,40%,90%);
  background-image:linear-gradient(90deg,#fb3 11px,transparent 0),
  linear-gradient(90deg,#ab4 23px,transparent 0),
  linear-gradient(90deg,#655 41px,transparent 0);
  background-size: 41px 100%,61px 100%,83px 100%;   
}
.inner:before{
  content:'';
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  filter:blur(5px);
  background: rgba(255,0,0,0.5);
  z-index:-1;
}
.inner{
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  font:  20px/1.5 '宋體';
  height: 160px;
  width: 180px;
  margin:auto;
  background:hsla(0,0%,100%,.3);
}
</style>
<div class="outer">
  <div class="inner">前端入門容易精通難,說的是前端,更指javascript</div>
</div>

 

背景複製

  下麵複製父級元素的背景來替換半透明的紅色。如果保證毛玻璃下的背景正好與父元素背景的圖案相吻合呢?使用fixed即可,將父元素和偽元素的背景設置為相同,且都相對於視口設置,可實現目標

<style>
.outer{
  position:relative;
  height: 200px;
  width: 200px;
  z-index:1;
  background: hsl(20,40%,90%) fixed;
  background-image:linear-gradient(90deg,#fb3 11px,transparent 0),
  linear-gradient(90deg,#ab4 23px,transparent 0),
  linear-gradient(90deg,#655 41px,transparent 0);
  background-size: 41px 100%,61px 100%,83px 100%;   
}
.inner:before{
  content:'';
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  filter:blur(5px);
  background: hsl(20,40%,90%) fixed;
  background-image:linear-gradient(90deg,#fb3 11px,transparent 0),
  linear-gradient(90deg,#ab4 23px,transparent 0),
  linear-gradient(90deg,#655 41px,transparent 0);
  background-size: 41px 100%,61px 100%,83px 100%;
  z-index:-1;
}
.inner{
  position:absolute;
  top: 0;right: 0;left: 0;bottom: 0;
  font:  20px/1.5 '宋體';
  height: 160px;
  width: 180px;
  margin:auto;
  background:hsla(0,0%,100%,.3);
}
</style>
<div class="outer">
  <div class="inner">前端入門容易精通難,說的是前端,更指javascript</div>
</div>

  效果如下

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分散式系統數據一致性的解決方案 隨著互聯網的發展,電腦系統規模變得越來越大,常規的將所有業務單元集中部署在一個或者若幹個大型機上的集中式架構,已經越來越不能滿足當今大型互聯網系統的快速發展。分散式服務架構以及微服務架構已經越來越受到業界的青睞。而在目前的應用系統中,不管是集中式的部署架構還是分散式 ...
  • ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // DataSource dataSource = (DataSource) context.getBean("da... ...
  • 這幾天在構思項目,研究了一下Electron,記錄下來。 說起WEB桌面程式,當前最火的就是Electron了。 Electron的架構用一句話總結,就是一個main.js進程加上一個或數個chrome視窗,每個視窗都包含一個獨立的Node.js。 這樣的架構,使得這種桌面應用必須是一個(或數個)單 ...
  • 1 柵格系統偏移 2 柵格系統的排序 3 輔助類 4 表單 5 按鈕 6 縮略圖 7 下拉菜單 8 標簽頁 9 導航 10 分頁 ...
  • 截止2017年9月13號,手機號段為: 130 131 132 133 134 135 136 137 138 139145 146 147 148 149150 151 152 153 155 156 157 158 159166 171 172 173 174 175 176 177 17818 ...
  • 介紹 這是紅寶書(JavaScript高級程式設計 3版)的讀書筆記第三篇(靈魂篇介紹),有著剩下的第三章的知識內容,當然其中還有我個人的理解。紅寶書這本書可以說是難啃的,要看完不容易,挺厚的,要看懂更不容易,要熟練js更是難,中間需要不斷的積累與重溫。因此不是讀一兩遍就能把這書吃透,需要多讀,可謂 ...
  • 定位功能有兩種方法: 首先要初始化內置地圖: var map = new plus.maps.Map("map"); 這裡黃色的map是html裡面的id: <div id="map">地圖載入中...</div> 1、調用GPS定位API(註意,使用了baidu和bd09ll參數,無需轉換坐標) ...
  • 加給元素: offsetLeft(距離定位父級的距離)/offsetTop(距離定位父級的距離)/offsetWidth(可視寬度)/offHeight(可視高度) clientLeft(左邊框寬度)/clientTop(上邊框寬度)/clientWidth(width+padding)/clien ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...