一個div壓在另一個div上面_【CSS小分享】用CSS畫一個新擬態風格鍵盤

什么是新擬態

新擬態的英文名稱是“Neumorphism”,也有人稱為“Soft UI”。

簡單講,新擬態是一種圖形樣式,其原理是通過模擬真實物體來為界面的UI元素賦予真實感。
新擬態風格起源于dribbble,后面陸續被收錄在2020設計趨勢預測里面,在2019年的年末慢慢被大家熟知,討論,重視起來。

好吧以上都是我在網上抄的。

這些是我在網上找的一些效果圖:

7e7387f79aa689ce181f380ed5b84807.png
圖片來自https://dribbble.com/

ba9158190c53d5054945f58192756341.png
圖片來自https://dribbble.com/

af1194b0a17b06dccc50cb1fe610f032.png
圖片來自https://dribbble.com/

8a2b4ef577a81d2c5809db007037997b.png
圖片來自https://dribbble.com/


其原理是:將卡片設置與背景相同的顏色,然后利用卡片陰影來實現視覺上的 [突起] 或 [凹陷] 的效果。我們要做的,就是利用CSS陰影畫一個新擬態風格的鍵盤,最終成品如下:

2cc6a552eb0ceac3732b33df661df74f.png
成品效果

準備工作

在開始畫鍵盤之前,先觀察一下鍵盤的基本布局(注意這里我們不繪制小鍵盤部分,因為現在我手上的鍵盤是87鍵的哈哈哈)。可以看出鍵盤布局基本上可以看作是一個規則的柵格系統,總共6行18列,非常適合使用grid布局來實現,退格、shift、空格等較大按鍵的單元將占有多個列,沒有按鍵的位置放一個空單元即可。至此可以得到一個頁面結構:

<div class="keyboard"><div class="cell"><div class="key">Esc</div></div><div class="cell"></div><div class="cell"><div class="key">F1</div></div><div class="cell"><div class="key">F2</div></div><div class="cell"><div class="key">F3</div></div><div class="cell"><div class="key">F4</div></div><div class="cell"></div><div class="cell"><div class="key">F5</div></div><div class="cell"><div class="key">F6</div></div><div class="cell"><div class="key">F7</div></div><div class="cell"><div class="key">F8</div></div><div class="cell"></div><div class="cell"><div class="key">F9</div></div><div class="cell"><div class="key">F10</div></div><div class="cell"><div class="key">F11</div></div><div class="cell"><div class="key">F12</div></div><div class="cell"><div class="key">SrcLk</div></div><div class="cell"><div class="key">Pause</div></div><div class="cell"><div class="key">~</div></div><div class="cell"><div class="key">1</div></div><div class="cell"><div class="key">2</div></div><div class="cell"><div class="key">3</div></div><div class="cell"><div class="key">4</div></div><div class="cell"><div class="key">5</div></div><div class="cell"><div class="key">6</div></div><div class="cell"><div class="key">7</div></div><div class="cell"><div class="key">8</div></div><div class="cell"><div class="key">9</div></div><div class="cell"><div class="key">0</div></div><div class="cell"><div class="key">-</div></div><div class="cell"><div class="key">=</div></div><div class="cell backspace"><div class="key">Backspace</div></div><div class="cell"><div class="key">Ins</div></div><div class="cell"><div class="key">Home</div></div><div class="cell"><div class="key">PgUp</div></div><div class="cell tab"><div class="key">Tab</div></div><div class="cell"><div class="key">Q</div></div><div class="cell"><div class="key">W</div></div><div class="cell"><div class="key">E</div></div><div class="cell"><div class="key">R</div></div><div class="cell"><div class="key">T</div></div><div class="cell"><div class="key">Y</div></div><div class="cell"><div class="key">U</div></div><div class="cell"><div class="key">I</div></div><div class="cell"><div class="key">O</div></div><div class="cell"><div class="key">P</div></div><div class="cell"><div class="key">[{</div></div><div class="cell"><div class="key">]}</div></div><div class="cell"><div class="key">|</div></div><div class="cell"><div class="key">Del</div></div><div class="cell"><div class="key">End</div></div><div class="cell"><div class="key">PgDn</div></div><div class="cell caps"><div class="key">Caps</div></div><div class="cell"><div class="key">A</div></div><div class="cell"><div class="key">S</div></div><div class="cell"><div class="key">D</div></div><div class="cell"><div class="key">F</div></div><div class="cell"><div class="key">G</div></div><div class="cell"><div class="key">H</div></div><div class="cell"><div class="key">J</div></div><div class="cell"><div class="key">K</div></div><div class="cell"><div class="key">L</div></div><div class="cell"><div class="key">;:</div></div><div class="cell"><div class="key">'"</div></div><div class="cell enter"><div class="key">Enter</div></div><div class="cell"></div><div class="cell"></div><div class="cell"></div><div class="cell shift-left"><div class="key">Shift</div></div><div class="cell"><div class="key">Z</div></div><div class="cell"><div class="key">X</div></div><div class="cell"><div class="key">C</div></div><div class="cell"><div class="key">V</div></div><div class="cell"><div class="key">B</div></div><div class="cell"><div class="key">N</div></div><div class="cell"><div class="key">M</div></div><div class="cell"><div class="key">,<</div></div><div class="cell"><div class="key">.></div></div><div class="cell"><div class="key">/?</div></div><div class="cell shift-right"><div class="key">Shift</div></div><div class="cell"></div><div class="cell"><div class="key">↑</div></div><div class="cell"></div><div class="cell"><div class="key">Ctrl</div></div><div class="cell"><div class="key">Win</div></div><div class="cell"><div class="key">Alt</div></div><div class="cell space"><div class="key"></div></div><div class="cell"><div class="key">Alt</div></div><div class="cell"><div class="key">Win</div></div><div class="cell"><div class="key">Fn</div></div><div class="cell"><div class="key">Ctrl</div></div><div class="cell"><div class="key">←</div></div><div class="cell"><div class="key">↓</div></div><div class="cell"><div class="key">→</div></div>
</div>

CSS實現

首先是設置背景樣式:

html, body {height: 100%;background-color: #55b9f3;display: flex;justify-content: center;align-items: center;
}

鍵盤的容器部分,注意鍵盤背景色需要與背景顏色一致,然后利用grid布局將鍵盤切割為6行18列:

.keyboard {width: 960px;height: 280px;padding: 10px;border-radius: 10px;background-color: #55b9f3;box-shadow:  -20px -20px 60px #489dcf, 20px 20px 60px #62d5ff;display: grid;grid-template-columns: repeat(18, 1fr);grid-template-rows: repeat(6, 1fr);
}

之后給每一個按鍵添加樣式,對于退格、空格等特殊的鍵,需要特別為他們設置大小:

.cell {padding: 4px;
}.key {width: 100%;height: 100%;color: #aedbf5;font-size: 13px;display: flex;justify-content: center;align-items: center;border-radius: 10px;background: linear-gradient(315deg, #4da7db, #5bc6ff);box-shadow: -1px -1px 40px #489dcf, 1px 1px 40px #62d5ff;transition: background .3s;cursor: pointer;user-select: none;
}.backspace {grid-column: 14 / 16;
}
.tab {grid-column: 1 / 3;
}
.caps {grid-column: 1 / 3;
}
.enter {grid-column: 14 / 16;
}
.shift-left {grid-column: 1 / 4;
}
.shift-right {grid-column: 14 / 16;
}
.space {grid-column: 4 / 12;
}

最后,給按鍵添加一個按下時的樣式即可:

.key:active {background: linear-gradient(315deg, #5bc6ff, #4da7db);
}

到此為止,整個案例就完成了。

完整代碼看這里?codepen.io

結尾

最后推薦一個用來生成新擬態風格CSS代碼的網站:

Neumorphism/Soft UI CSS shadow generator?neumorphism.io
ab3361820743679fe4dd00d400e9a53c.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371370.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371370.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371370.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JBoss BRMS與JasperReports進行報告

介紹 Jasperreports是一個免費的可下載庫&#xff0c;可用于為Java EE應用程序生成豐富的報告。 本指南還提供了使用Jasper iReport設計器生成報告模板的步驟。 軟件需求 JBoss BRMS 5.3&#xff08;從客戶門戶網站http://access.redhat.com &#xff09; JasperReports 4.6…

java字符串 刪除指定字符的那些事

需求如下&#xff1a; 1.算出2周以前的時間&#xff0c;以正常日期格式返回 2.如果月份和日期前面有0需要去掉返回結果&#xff0c;比如&#xff1a;2017-08-15 就需要顯示2017-8-15。 Calendar calendar Calendar.getInstance();calendar.add(Calendar.DATE, -14);Date date…

Hibernate中Hql查詢

這篇隨筆將會記錄hql的常用的查詢語句&#xff0c;為日后查看提供便利。 在這里通過定義了三個類&#xff0c;Special、Classroom、Student來做測試&#xff0c;Special與Classroom是一對多&#xff0c;Classroom與Student是一對多的關系&#xff0c;這里僅僅貼出這三個bean的屬…

Java代碼質量工具–概述

最近&#xff0c;我有機會在本地IT社區聚會上介紹了該主題。 這是基本演示&#xff1a; Java代碼質量工具 以及更有意義的思維導圖&#xff1a; 但是&#xff0c;我認為我需要更深入地探討這一主題。 這篇博客文章應該像是在此方向上進行進一步調查的起點。 1. CodePro Anal…

利用yum升級Centos6的gcc版本,使其支持C++11

下面的可以在centos6下工作&#xff0c;centos7下有問題。可能是因為centos下的scl我是拷貝的文件&#xff0c;沒有完全驗證centos6下肯定沒問題。 https://my.oschina.net/u/583362/blog/682123 和https://www.quyu.net/info/876.html 拷貝其關鍵內容就是&#xff1a; 1.使用 …

cuda版本查看_ubuntu安裝CUDA

0 寫在前面安裝環境&#xff1a;ubuntu18.04以及GTX1050Ti筆記本為什么要安裝CUDA&#xff1f; 參考百科&#xff0c;CUDA是英偉達推出的集成技術&#xff0c;通過該技術可利用GeForce 8 以后的GPU或者較新的Quadro GPU進行計算。例如典型的tensorflow-GPU和pyCUDA安裝之前都要…

HTML 標簽列表(功能排序) HTML 參考手冊- (HTML5 標準)

HTML 標簽列表&#xff08;功能排序&#xff09; HTML 參考手冊- (HTML5 標準) 功能排序 New : HTML5 新標簽 標簽描述基礎 <!DOCTYPE> 定義文檔類型。<html>定義一個 HTML 文檔<title>為文檔定義一個標題<body>定義文檔的主體<h1> to <h6>…

idea新建scala文件_IDEA maven項目中新建.scala文件

本文首發于我的博客[IDEA maven項目中新建.scala文件]分為三步第一步、IDEA中安裝scala插件1、搜索安裝File-Sittings-Plugins-搜索安裝scala2、安裝完成重啟安裝完成之后點擊重啟idea第二步、下載、安裝、配置Scala1、下載安裝Scala SDK本體搜索引擎搜索Scala SDK或者點我去Sc…

Linux中執行shell腳本的4種方法總結

文章來源&#xff1a;http://www.jb51.net/article/53924.htm 這篇文章主要介紹了Linux中執行shell腳本的4種方法總結,即在Linux中運行shell腳本的4種方法,需要的朋友可以參考下 bash shell 腳本的方法有多種&#xff0c;現在作個小結。假設我們編寫好的shell腳本的文件名為hel…

Log4j線程死鎖–案例研究

此案例研究描述了影響Weblogic Portal 10.0生產環境的Apache Log4j線程爭用問題的完整根本原因分析和解決方案。 它還將說明在開發和支持Java EE應用程序時適當的Java類加載器知識的重要性。 本文也是您提高線程轉儲分析技能和了解線程競爭條件的另一個機會。 環境規格 Java …

代碼實現:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字

import java.util.Scanner;/*題目&#xff1a;求saaaaaaaaaaaa...a的值&#xff0c;其中a是一個數字。例如222222222222222(此時共有5個數相加)&#xff0c;幾個數相加有鍵盤控制。 程序分析&#xff1a;關鍵是計算出每一項的值。*/public class Test08 {public static void ma…

堆棧跟蹤從何而來?

我認為&#xff0c;閱讀和理解堆棧跟蹤是每個程序員都必須具備的一項基本技能&#xff0c;以便有效地解決每種JVM語言的問題&#xff08;另請參閱&#xff1a; 過濾日志中無關的堆棧跟蹤行和首先記錄引起異常的根本原因 &#xff09;。 那么我們可以從一個小測驗開始嗎&#xf…

@select 怎么寫存儲過程_MySQL4:存儲過程和函數

什么是存儲過程簡單說&#xff0c;存儲過程就是一條或多條SQL語句的集合&#xff0c;可視為批文件&#xff0c;但是起作用不僅限于批處理。本文主要講解如何創建存儲過程和存儲函數以及變量的使用&#xff0c;如何調用、查看、修改、刪除存儲過程和存儲函數等。使用的數據庫和表…

跨域訪問-預請求及跨域常見問題

預請求 參考&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#預請求 簡而言之&#xff0c;在跨域并且嘗試添加一些特殊頭及自定義頭的情況下&#xff0c;由于瀏覽器的安全機制&#xff0c;會加多一次OPTIONS預請求&#xff08;詢問請求&am…

mysql查詢優化之一:mysql查詢優化常用方式

一、為什么查詢速度會慢&#xff1f; 一個查詢的生命周期大致可以按照順序來看&#xff1a;從客戶端&#xff0c;到服務器&#xff0c;然后在服務器上進行解析&#xff0c;生成執行計劃&#xff0c;執行&#xff0c;并返回結果給客戶端。其中在“執行”階段包含了大量為了檢索…

修復Sonar中常見的Java安全代碼沖突

本文旨在向您展示如何快速修復最常見的Java安全代碼沖突。 它假定您熟悉代碼規則和違規的概念以及Sonar如何對其進行報告。 但是&#xff0c;如果您以前從未聽說過這些術語&#xff0c;則可以閱讀Sonar Concepts或即將出版的有關Sonar的書 &#xff0c;以獲取更詳細的解釋。 為…

理解ThreadLocal

ThreadLocal:線程本地存儲&#xff0c;為每個線程都創建了變量的副本&#xff0c;線程在訪問變量時&#xff0c;可以直接訪問自己內部的副本變量。 理解幾個概念&#xff1a; 在java中ThreadLocal是一個類。 ThreadMap是一個類&#xff0c; Thread類是線程類。 ThreadLocal…

抖音右上角一個小黃點是什么_抖音官方入駐視頻號,釋放了一個什么樣的信號?...

專注視頻號觀察第 328 篇這幾天&#xff0c;視頻號生態新入駐了一個企業號&#xff0c;在圈里引起不少的轟動&#xff0c;因為這個號的名字叫做———抖音。這件事在圈里引發不少的轟動&#xff0c;很多人驚嘆&#xff1a;“連抖音都來開視頻號了&#xff0c;你還在等什么&…

資源包技巧和最佳實踐

今天是資源捆綁日。 通常&#xff0c;這是Java中最著名的國際化機制&#xff08;i18n&#xff09;。 使用它應該很容易。 但是&#xff0c;在弄臟手時會出現許多小問題。 如果您有相同的想法&#xff0c;則此文章適合您。 基本 java.util.ResourceBundle定義了用于訪問Java中翻…

springMvc-文件上傳

趕時間&#xff0c;又在寫垃圾博客&#xff0c;在心里給自己一耳巴 1.單文件上傳 2.多文件上傳 代碼&#xff1a; 頁面&#xff1a; <!DOCTYPE html><html><head><meta charset"UTF-8"><title>Insert title here</title></he…