搜尋
首頁web前端css教學提升你的CSS技能的20個css技巧

提升你的CSS技能的20個css技巧

隨著前端開發越來越關注效率:透過選擇器的使用和簡化程式碼來快速載入渲染。像Less、SCSS這樣的預處理器在工作的時候,需要繞的路較長,直接使用css速度會更快。

這裡涵蓋了20個css技巧來幫助你減少重複規則和複寫,在佈局中標準化樣式流程,不僅可以幫助你高效地創建自己的框架,而且可以解決許多常見的問題。

1、使用CSS重置(reset)

css重置庫如normalize.css已經被使用很多年了,它們可以為你的網站樣式提供一個比較清晰的標準,來確保跨瀏覽器之間的一致性。

大多數專案並不需要這些函式庫所包含的所有規則,可以透過一條簡單的規則來套用到版面中的所有元素,刪除所有的marginpadding改變瀏覽器預設的盒子模型。

*{
     box-sizing:border-box;
     margin:0;
     padding:0
}

使用box-sizing宣告是可選擇,如果你使用下面繼承的盒子模型形式可以跳過它。

2、繼承盒模型

讓盒模型從html 繼承:

html {    
    box-sizing: border-box;  
}    
*, *:before, *:after {    
    box-sizing: inherit;  
}

3、使用flexbox佈局來避免margin的問題(Get Rid of Margin hacks width Flexbox)

當你多少次試著去設計柵格佈局如:組合或圖片畫廊,如果使用浮動的方式,那麼就需要去清除浮動和重置外邊距來使其分解成所需要行數。為了避免nth-first-last-child 問題,可以使用flexboxspace-between#屬性值。

.flex-container{
  display:flex;
  justify-content:space-between;
}
.flex-container .item{              
  flex-basis:23%;
}

4、使用:not() 解決lists邊框的問題

在web設計中,我們通常使用:last-child nth-child 選擇器來覆寫原先宣告應在父選擇器上的樣式。比如說一個導航選單,透過使用borders 來為每個連結Link建立分割符,然後再在加上一條規則解除最後一個linkborder

.nav li {    
    border-right: 1px solid #666;  
}
.nav li:last-child {    
    border-right: none;  
}

這是一種很混亂的方式,它不僅強制瀏覽器以一種方式渲染,然後又透過特定的選擇器來撤銷它。這樣覆蓋樣式是無可避免的。然而,最重要的是,我們可以透過使用:not偽類別(pseudo-class) 在你想要宣告的元素上只使用一種樣式:

.nav li:not(:last-child) {    
    border-right: 1px solid #666;  
}

上面就是,除了最後一個li以外,所有的.nav li 都加上了border樣式,是不是很簡單!

當然,你也可以用.nav li li.nav li:first-child ~li ,但是:not是更有語義化(semantic)和容易理解的。

5、body上加入line-height樣式

導致低樣式效率(inefficient stylesheets)的一件事就是不斷的重複聲明。最好是做下專案規劃和組合規則,這樣CSS會更流暢。要實現這一點,就需要我們理解級聯(cascade),以及如何在通用選擇器寫的樣式可以繼承在其他地方。

行間距(line-height)可以作為給你的整個專案設定的一個屬性,不僅可以減少程式碼量,而且可以讓你的網站的樣式給一個標準的外觀

body {
    line-height: 1.5;
}

請注意,這裡的宣告沒有單位,我們只是告訴瀏覽器讓它渲染行高是渲染字體大小的1.5倍

6、垂直居中任何元素(vertical-center anything)

在沒有準備使用CSSGrid 佈局的時候,設定垂直居中佈局的全域規則是一個很好的方式,可以為優雅(elegantly)的設定內容佈局奠定一個基礎

html, body {
    height: 100%;    
    margin: 0;  
}    
body {    
    -webkit-align-items: center;    
    -ms-flex-align: center;    
    align-items: center;    
    display: -webkit-flex;    
    display: flex;  
}

7、使用SVG icons

SVG使用於所有分辨類,並且所有瀏覽器也都支援。所以可以將.png .jpg .gif 等檔案 丟棄。 FontAwsome5中 也提供了SVG的圖示字體。設定SVG的格式就跟其他圖片類型一樣:

.logo {    
    background: url("logo.svg");  
}

溫馨提示:如果將SVG用在可互動的元素上比如說button,SVG 會產生無法載入的問題。可以透過下面這個規則來確保SVG可以存取到(確保在HTML中已設定適當的aria屬性)

.no-svg .icon-only:after {    
    content: attr(aria-label);  
}

8、使用「OWL選擇器」

使用通用選擇器(universal selector)* 和相鄰的兄弟選擇器(adjacent sibling selector) 可以提供一個強大的CSS功能,給緊跟其他元素中的文檔流中的所有元素設定統一的規則

* + * {    
    margin-top: 1.5rem;  
}

這是一個很棒的技巧,可以幫你創建更均勻的類型跟間距。在上面的列子中,跟在其他元素後面的元素,比如說H3後面的H4,或者一個段落之後的一個段落,他們之間至少1.5rems的間距(大約為30px

9、一致的垂直結構(Consistent Vertical Rhythm)

一致的垂直节奏提供了一种视觉美学,使内容更具可读性。如果owl选择器过于通用,请在元素内使用通用选择器(*)为布局的特定部分创建一致的垂直节奏:

.intro > * {   
   margin-bottom: 1.25rem;  
}

10、对更漂亮的换行文本使用 box-decoration-break

假设您希望对换行到多行的长文本行应用统一的间距、边距、突出显示或背景色,但不希望整个段落或标题看起来像一个大块。Box Decoration Break属性允许您仅对文本应用样式,同时保持填充和页边距的完整性。

如果要在悬停时应用突出显示,或在滑块中设置子文本样式以具有突出显示的外观,则此功能尤其有用:

.p {
  display: inline-block;
  box-decoration-break: clone;
  -o-box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

内联块声明允许将颜色、背景、页边距和填充应用于每行文本,而不是整个元素,克隆声明确保将这些样式均匀地应用于每行。

11、等宽表格单元格

表格可能很难处理,所以尝试使用table-layout:fixed来保持单元格相等宽度:

.calendar {    
    table-layout: fixed;  
}

12、强制使用属性选择器显示空链接

这对于通过CMS插入的链接特别有用,CMS通常不具有类属性,并帮助您在不影响级联的情况下对其进行特定样式设置。例如,<a></a>元素没有文本值,但href属性有一个链接:

a[href^="http"]:empty::before {    
    content: attr(href);  
}

13、样式“默认”链接

说到链接样式,您可以在几乎每个样式表中找到一个通用的A样式。这迫使您为子元素中的任何链接编写额外的覆盖和样式规则,并且在使用像WordPress这样的CMS时,可能会导致您的主链接样式比按钮文本颜色更容易出现问题。

尝试这种较少干扰的方式为“默认”链接添加样式:

a[href]:not([class]) {    
    color: #999;    
    text-decoration: none;  
    transition: all ease-in-out .3s;
}

14、比率框

要创建具有固有比率的框,您需要做的就是将顶部或底部填充应用于div:

.container {    
    height: 0;    
    padding-bottom: 20%;    
    position: relative;  
}    
.container div {    
    border: 2px dashed #ddd;    
    height: 100%;    
    left: 0;    
    position: absolute;    
    top: 0;    
    width: 100%;  
}

使用20%进行填充使得框的高度等于其宽度的20%。无论视口的宽度如何,子div都将保持其纵横比(100%/ 20%= 5:1)。

15、风格破碎的图像

这个技巧不是关于代码缩减,而是关于细化设计细节的。破碎的图像发生的原因有很多,要么不雅观,要么导致混乱(只是一个空元素)。用这个小小的CSS创建更美观的效果:

img {    
    display: block;    
    font-family: Helvetica, Arial, sans-serif;    
    font-weight: 300;    
    height: auto;    
    line-height: 2;    
    position: relative;    
    text-align: center;    
    width: 100%;  
}
img:before {    
    content: "We&#39;re sorry, the image below is missing :(";    
    display: block;    
    margin-bottom: 10px;  
}    
img:after {    
    content: "(url: " attr(src) ")";   
    display: block;    
    font-size: 12px;  
}

16、使用rem进行全局大小调整;使用em进行局部大小调整

在设置根目录的基本字体大小后,例如html字体大小:15px;,可以将包含元素的字体大小设置为rem:

article {    
    font-size: 1.25rem;  
}    
aside {    
    font-size: .9rem;  
}

然后将文本元素的字体大小设置为em

h2 {    
    font-size: 2em;  
}    
p {    
    font-size: 1em;  
}

现在,每个包含的元素都变得分区化,更易于样式化、更易于维护和灵活。

17、隐藏未静音的自动播放视频

当您处理无法从源代码轻松控制的内容时,这对于自定义用户样式表来说是一个很好的技巧。这个技巧将帮助您避免在加载页面时自动播放视频中的声音干扰访问者,并再次提供了精彩的:not()伪选择器:

video[autoplay]:not([muted]) {    
    display: none;  
}

18、灵活运用root类型

响应布局中的字体大小应该能够自动调整到视区,从而保存编写媒体查询的工作,以处理字体大小。可以使用:not和视区单位,根据视区高度和宽度计算字体大小:

:root {    
    font-size: calc(1vw + 1vh + .5vmin);  
}

现在,您可以使用根em单位,该单位基于:not:

body {    
    font: 1rem/1.6 sans-serif;  
}

结合上面的rem/em技巧以获得更好的控制。

19、在表单元素上设置字体大小,以获得更好的移动体验

为了避免移动浏览器(iOS Safari等)在点击<select></select>下拉列表时放大HTML表单元素,请在添加font-size样式:

input[type="text"],  
input[type="number"],  
select,  
textarea {    
    font-size: 16px;  
}

20、CSS变量

最后,最强大的CSS级别来自于CSS变量,它允许您声明一组公共属性值,这些值可以通过样式表中任何位置的关键字重用。你可能有一套颜色在整个项目中使用,以保持一致性。

在CSS中反复重复这些颜色值不仅是件烦人的事情,而且还容易出错。如果某个颜色在某个时刻需要改变,你就不得不去寻找和替换,这是不可靠或不快速的,当为最终用户构建产品时,变量使得定制变得容易得多。例如:

提升你的CSS技能的20個css技巧

:root {
  --main-color: #06c;
  --accent-color: #999;
}

h1, h2, h3 {
  color: var(--main-color);
}
a[href]:not([class]),
p,
footer span{
 color: var(--accent-color);
}

更多编程相关知识,请访问:编程视频!!

以上是提升你的CSS技能的20個css技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:javanx。如有侵權,請聯絡admin@php.cn刪除
這麼多顏色鏈接這麼多顏色鏈接Apr 13, 2025 am 11:36 AM

最近有一系列有關顏色的工具,文章和資源。請允許我通過將它們四捨五之後關閉幾個標籤,以供您享受。

自動利潤在Flexbox中的工作方式自動利潤在Flexbox中的工作方式Apr 13, 2025 am 11:35 AM

羅賓以前已經介紹過這一點,但是我在過去的幾周里聽到了一些關於它的困惑,看到另一個人在解釋它,我想

移動彩虹移動彩虹Apr 13, 2025 am 11:27 AM

我絕對喜歡三明治網站的設計。在許多美麗的功能中,這些標題是滾動時帶有彩虹的下線。它不是

新年,新工作?讓我們做一個網格驅動的簡歷!新年,新工作?讓我們做一個網格驅動的簡歷!Apr 13, 2025 am 11:26 AM

許多流行的簡歷設計通過以網格形狀鋪設部分來充分利用可用的頁面空間。讓我們使用CSS網格創建一個佈局

將用戶擺脫過多習慣的一種方法將用戶擺脫過多習慣的一種方法Apr 13, 2025 am 11:25 AM

頁面重新加載是一回事。有時,當我們認為它沒有響應或認為新內容可用時,我們會刷新頁面。有時我們只是生氣

域驅動的設計與React域驅動的設計與ReactApr 13, 2025 am 11:22 AM

關於如何在React世界中組織前端應用的指導很少。 (只需移動文件,直到“感覺正確”,大聲笑)。真相

檢測非活動用戶檢測非活動用戶Apr 13, 2025 am 11:08 AM

大多數情況下,您並不真正在乎用戶是否積極參與或暫時非活動。不活躍,意思,也許他們

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufoo一直在集成方面非常出色。他們與特定應用程序(例如廣告系列顯示器,MailChimp和Typekit)進行集成,但他們也

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具