《 CSS Secrets 》是 @Lea Verou 最新著作,这本书讲解了有关于CSS中一些小秘密。是一本CSSer值得一读的一本书,经过一段时间的阅读,我、@南北和@彦子一起将在W3cplus发布一系列相关的读后感,与大家一起分享。
如果你对用户体验感兴趣的话,你可能听说过费茨法则。最早在1954年由美国物理学家Paul Fitts提出,费茨法则是迅速移动到目标区域所需要的时间,是到目标的距离和目标的宽度之间的比率的对数函数。其常用的数学公式是Time = a + b log2 ( D / S + 1 )。其中, T 是所用的时间, D 是到目标中心的距离, W 是目标的宽度, a 和 b 是常数。
提示:查看费茨法则的应用,通过 simonwallner.at/ext/fitts 的交互可视化
尽管在当时,图形用户界面是不存在的,费茨法则完全适用于定点设备,但现在已成为广为人知的HCI(人机交互)原则。这在一开始听起来可能会比较惊讶,但是记得费茨法则更多的是人类电机控制,而不是特定的硬件。
一个显而易见的推论是,目标越大,越容易到达。因此,它通常会增加可用性来扩展小控件周围的可点击区域,否则可能会很难点击到,如果不能选择将其放大的话。随着触摸屏的逐渐普及,这变得越来越重要。没有人会想要按了几十次才点到那个令人讨厌的小按钮,尽管这还是普遍存在。
其他时候,我们希望当我们鼠标悬停在窗口的一侧时,就会有某个元素划入——例如,一个自动隐藏的标题,在鼠标靠近的时候自动从顶部划入,这也涉及到了要扩展它的点击区域(只针对一个方向)。我们可以通过CSS来完成它吗?
解决方案
我们先假设我们有如图所示的简单的一个按钮
然后我们希望它的点击面积增加 10px ,四个方向都是。我们已经为它应用了一些简单的样式,包括 cursor: pointer ,这不仅可以为鼠标交互提供一些方便,还可以帮我们测试点击区域在哪。
扩展点击区域的最简单的方法是一个透明的实线边框,因为鼠标和边框的交互也会作用在元素之上,不像outline和shadow。例如,把一个元素的点击区域在所有方向上扩展 10px ,代码可以简单地这样写:
border: 10px solid transparent;
但是,正如你在下图中看到的,效果不是很好,因为这让我们的按钮变大了!
原因是背景默认扩展了其下方的边框。 background-clip 可以帮助裁剪背景,如下:
border: 10px solid transparent;background-clip: padding-box;
如上图所示,显示没有问题。但是等你在按钮周围做一个实际的边框,你才会发现实际上你已经用了唯一的那个边框来扩展点击区域了。那怎么办呢?很简单,你可以利用内阴影模拟一个(纯色的)边框
border: 10px solid transparent;box-shadow: 0 0 0 1px rgba(0,0,0,.3) inset;background-clip: padding-box;
效果如下图所示:
不像边框,你可以使用不止一个 box-shadow ,如果你需要更多,你可以使用逗号来分隔这一组阴影。但是,如果我们把内阴影和外阴影结合起来,我们会得到一个非常奇怪的效果,因为外阴影是在边框盒之外绘制的。例如,我们可能会想给按钮添加一个模糊阴影,给它一个在页面上“pop out”的效果,也就是另一种可点击的内容:
box-shadow: 0 0 0 1px rgba(0,0,0,.3) inset, 0 .1em .2em -.05em rgba(0,0,0,.5);
但是,如果我们试过了,我们看到的结果和我们期望的有很大不同。
这种解决方案因为其它原因,所以并不完美。边框会影响布局,这在某些情况下可能不是问题。所以我们该咋办呢?我们移除边框,然后利用伪元素来捕捉它们的父元素和鼠标的交互。
我们可以覆盖一个透明的伪元素在我们的按钮上边,而且它在各个方向都比我们的按钮大 10px :
button { position: relative; /* [rest of styling] */}button::before { content: ''; position: absolute; top: -10px; right: -10px; bottom: -10px; left: -10px;}
这也是可行的,而且只要我们不需要伪元素了,它也不会影响到任何东西。伪元素的解决方案是非常灵活的——我们可以让点击区域变成任何大小、位置,或者我们想要的形状,甚至和元素本身完全无关的内容!

布爾屬性是HTML中的特殊屬性,不需要值即可激活。 1.布爾屬性通過存在與否控制元素行為,如disabled禁用輸入框。 2.它們的工作原理是瀏覽器解析時根據屬性的存在改變元素行為。 3.基本用法是直接添加屬性,高級用法可通過JavaScript動態控制。 4.常見錯誤是誤以為需要設置值,正確寫法應簡潔。 5.最佳實踐是保持代碼簡潔,合理使用布爾屬性以優化網頁性能和用戶體驗。

HTML代碼可以通過在線驗證器、集成工具和自動化流程來確保其清潔度。 1)使用W3CMarkupValidationService在線驗證HTML代碼。 2)在VisualStudioCode中安裝並配置HTMLHint擴展進行實時驗證。 3)利用HTMLTidy在構建流程中自動驗證和清理HTML文件。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTML的功能是定義網頁的結構和內容,其目的在於提供一種標準化的方式來展示信息。 1)HTML通過標籤和屬性組織網頁的各個部分,如標題和段落。 2)它支持內容與表現分離,提升維護效率。 3)HTML具有可擴展性,允許自定義標籤增強SEO。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 1.HTML通過標籤定義網頁結構和內容,確保語義化。 2.CSS通過選擇器和屬性控製網頁樣式,使其美觀易讀。 3.JavaScript通過腳本控製網頁行為,實現動態和交互功能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能