前端開發者應該知道的 CSS 小技巧

2021-02-19 前端大全

 (點擊上方公眾號,可快速關注)

英文:Matt Smith  譯文:伯樂在線專欄作者 - cucr

如有好文章投稿,請點擊 → 這裡了解詳情

如需轉載,發送「轉載」二字查看說明

一些小技巧讓你的CSS技術更專業

使用:not()去除導航上不需要的邊框

為body添加行高

垂直居中任何元素

逗號分離的列表

使用負nth-child選擇元素

使用SVG圖標

文本顯示優化

在純CSS幻燈片上使用max-height

繼承box-sizing

表格單元格等寬

使用Flexbox擺脫邊界Hack

使用屬性選擇器選擇空連結

使用:not()添加/去除導航上不需要的邊框

添加邊框…

/* 添加邊框 */

 

.nav li {

     border-right: 1px solid #666;

}

…然後去除最後一個元素的邊框…

/* 移除邊框 */

 

.nav li:last-child {

     border-right: none;

}

…使用偽類 :not() 將樣式只應用到你需要的元素上:

.nav li:not(:last-child) {

     border-right: 1px solid #666;

}

當然,你可以使用.nav li + li 或者 .nav li:first-child ~ li, 但是使用 :not() 的意圖特別清晰,CSS選擇器按照人類描述它的方式定義邊框。

為body添加行高

你不需要分別為每一個 <p>, <h*> 等元素添加行高,而是為body添加:

body {

     line-height: 1;

}

這種方式下,文本元素可以很容易從body繼承。

垂直居中任何元素

不,這不是黑魔法,你的確可以垂直居中任何元素:

html, body {

  height: 100%;

  margin: 0;

}

 

body {

  -webkit-align-items: center;  

  -ms-flex-align: center;  

  align-items: center;

  display: -webkit-flex;

  display: flex;

}

想讓其他元素居中?垂直,水平…任何東西,任何時間,任何位置?CSS-Tricks上有 一個不錯的文章 來做到這一切。

注意:IE11上flexbox的一些 缺陷行為。

逗號分離的列表

讓列表看起來更像一個真正的逗號分離列表:

ul > li:not(:last-child)::after {

  content: ",";

}

使用偽類:not() ,這樣最後一個元素不會被添加逗號。

使用負 nth-child 選擇元素

在CSS使用負nth-child選擇1到n的元素。

li {

   display: none;

}

 

/* 選擇1到3的元素並顯示 */

 

li:nth-child(-n+3) {

   display: block;

}

或者,你已經學習了一些關於 使用 :not(),嘗試:

/* select items 1 through 3 and display them */

 

/* 選擇1到3的元素並顯示 */

 

li:not(:nth-child(-n+3)){

  display: none;

}

這很簡單。

使用SVG圖標

沒有理由不使用SVG圖標:

.logo {

  background: url("logo.svg");

}

SVG對所有解析度類型具有良好的伸縮性,IE9以上的所有瀏覽器都支持。所以放棄.png,.jpg或gif-jif等任何文件。

注意:如果你使用SVG圖標按鈕,同時SVG加載失敗,下面能幫助你保持可訪問性:

.no-svg .icon-only:after {

  content: attr(aria-label);

}

文本顯示優化

有些字體在所有的設備上並不是最優顯示,因此讓設備瀏覽器來幫忙:

html {

  -moz-osx-font-smoothing: grayscale;

  -webkit-font-smoothing: antialiased;

  text-rendering: optimizeLegibility;

}

注意:請使用optimizeLegibility。同時,IE/Edge不支持text-rendering。

在純CSS實現的內容滑塊上使用max-height

在純CSS實現的內容滑塊上使用max-height,同時設置overflow hidden:

.slider ul {

  max-height: 0;

  overlow: hidden;

}

 

.slider:hover ul {

  max-height: 1000px;

  transition: .3s ease; /* animate to max-height */

}

繼承box-sizing

從html繼承box-sizing:

html {

  box-sizing: border-box;

}

 

, :before, *:after {

  box-sizing: inherit;

}

這讓插件或使用其他行為的組件能很容易地改變box-sizing。

表格單元格等寬

使用表格會很痛苦,因此使用table-layout:fixed來保持單元格相同的寬度:

.calendar {

  table-layout: fixed;

}

無痛表格布局。

使用Flexbox擺脫邊界Hack

當使用列約束時,可以拋棄nth-,first- 和 last-child的hacks,而使用flexbox的space-between屬性:

.list {

  display: flex;

  justify-content: space-between;

}

 

.list .person {

  flex-basis: 23%;

}

現在列約束總是等間隔出現。

使用屬性選擇器選擇空連結

顯示沒有文本值但是 href 屬性具有連結的 a 元素的連結:

a[href^="http"]:empty::before {

  content: attr(href);

}

這樣做很方便。

瀏覽器支持

這些技巧在當前版本的Chrome,Firefox, Safari, 以及Edge, 和IE11可以工作。

覺得本文對你有幫助?請分享給更多人

關注「前端大全」,提升前端技能

相關焦點

  • 「加精」css透明度總結|前端開發者
    網站前端開發_前端開發者丨CSShttps://www.rokub.comdocument.getElementById(「myElement」).style.filter = 「alpha(opacity=40)」;// 針對IE<br></blockquote><b>2,使用JQuery設置和改變CSS透明度</b><br><blockquote>$(「#myElement」).css
  • 你應該知道的前端小知識
    近些年被廣泛的關注和探討,究其原因主要是因為現代化前端應用功能要求不斷提高,業務邏輯日益複雜,作為當下網際網路時代唯一不可或缺的技術,前端可以說是佔據了整個開發行業的半壁江山。從傳統的網站,到現在的H5,移動App,桌面應用,以及小程序。前端技術幾乎是無所不能的全面覆蓋。
  • 一招搞定微信小程序前端頁面設計
    變種的css樣式表),對於小程序前端開發至關重要。所以對於從web前端開發轉到小程序開發的人來說,這個接觸起來很容易。但是對於一些像我這樣半道出家,以前只會用DW或者可視化前端工具的人,css一知半解,自己想搞一個小程序前端頁面非常困難(在不使用別人源碼,自己手擼的前提下)。在我剛剛開發"全民家教"小程序的時候往往為了一個頁面,甚至一個組件的擺放都大費周折,往往弄到半夜才勉強可以實現。
  • 欲練JS,必先攻CSS——前端修行之路
    個人的css歷史說說自己的css學習的歷史,12年,當時是老師手把手1對1教我div+float的固定布局,所有元素全部用float,做了學生會網站的全部前端頁面,因為有段時間學PS比較多,也是自己做的UI,很醜,老師說***次做成這樣很不錯了,那時老師就覺得我有做前端的天賦,我就是從這個時候開始接觸前端的。
  • CSS的23個垂直居中技巧,你都學會了嗎?
    1、Line-height適用情景:單行文字垂直居中技巧這個方式應該是最多人知道的了,常見於單行文字的應用,像是按鈕這一類對象,或者是下拉框、導航此類元素最常見到的方式了。此方式的原理是在於將單行文字的行高設定後,文字會位於行高的垂直中間位置,利用此原理就能輕鬆達成垂直居中的需求了。
  • 2019年,UI設計師應該了解的這10個前端框架
    越來越多的培訓機構開設了前端課程,這就說明公司實際需求大概也是這樣的。現在求職,不說自己會點前端都不好意思面試,UI設計師學前端也是時下的趨勢。實際上,在公司項目中,設計師了解前端,會極大提升和程式設計師的協作效率,減少技術信息不對稱的現象。如果在一個網站項目中,程式設計師還在跟設計師講解最基本的html、css、盒子模型知識,那開發效率就可想而知了。
  • 做好前端的話html和css基礎必須夯實
    知乎上很多前端大佬說,要做好前端的話html和css基礎必須夯實。那麼,達到什麼水平才能叫基礎夯實呢?  1、拿到設計人員給的圖,不管是pc或者是移動端的圖,看一遍之後腦海中已經有了很明確的結構和頁面書寫過程中可能出現的兼容問題。
  • 不可錯過的實用前端工具
    給大家整理了 25 個前端相關的學習網站和一些靠譜的小工具://css-tricks.com這個網站不斷的在更新一些關於 CSS 的技巧優秀的教程和技巧,每天都會更新文章。每天一個 Javascript 小知識。
  • 前端html,css基本知識
    上一篇講到過html和css相當於人的身體和衣服的關係,html的歷史發展百度上可以搜到,這裡簡單了解一下,1989年開發出了世界上第一個Web伺服器與Web客戶端,並將這項發明取名為world wide web,也就是我們現在所說的WWW全球資訊網。HTML也因此誕生。
  • 自學web前端怎麼學?web前端學習路線css屬性
    自學web前端技術,如果才能找到一份web前端的工作。按照現在的招聘標準來看,無論你去哪個公司面試,你只需要滿足他們公司的需求就可以。找到一份web前端工作需要掌握的內容如下:首先是html,css這些簡單的靜態布局這是最基本的學習內容,不在多說。
  • 萬人血書的前端開發自學資料,俺肝出來了!
    >學習材料和書籍,小夥伴們好像更關心這個~://developer.mozilla.org/ESES和JS的關係應該能分得清吧,對前端開發來說,ES6+還是有必要學一下的,經典的材料有幾個。這本書並不只有HTTP協議本身的內容,也並不僅僅針對前端開發者。它裡面將很多周邊技術和Web化過程中諸多的技術和原理都進行了闡述,內容系統龐大。
  • JavaScript 學習 jQuery&前端小技巧
    --公式:$(selector).action()-->    <a href="" id="test-jquery">點我</a><script>    //document.getElementById('id名');    //選擇器就是css的選擇器    $('#test-jquery').click
  • 合格前端開發該了解的css知識
    css在現階段的前端面試中佔得比重確實低,有些公司甚至都只是一筆帶過。
  • 網頁前端設計快速入門技巧
    讀到這裡,如果你還是在校大學生,還有時間去學習,就不要大把大把的浪費學習的時間,貪玩不好,就像上面我說我自己一樣,知道自己能力有限,找不到合適的工作,不敢找!所以哪怕你稍微努力一點,畢業後,都能找到一個比其他同學好些的工作。今天我就跟大家說說前端,如何快速入門?
  • 從零開始學習web前端技術路線圖
    1、Visual Studio Code微軟開源免費產品,受到非常多技術人員的喜愛,基本上成為前端開發者的必備編輯器,強大的插件擴展,可以靈活的打造自己喜歡的風格。給你們送上常用插件列表拿走不謝。HTML 和 CSS 編碼規範(https://codeguide.bootcss.com/):掌握一些代碼技巧,寫出更好,更高質量的代碼。
  • 前端開發必備的CSS命名規範與常用CSS代碼集合
    編輯 | web前端開發來源 | web前端開發我們在用html+css進行網頁的排版布局時,
  • 前端進階:css必知的幾個底層知識和技巧
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫學習方法推薦問題學習法:帶著問題去學習,有利於集中注意力,目的明確,這既是有意學習的要求,也是發現學習的必要條件
  • 【乾貨】各大網際網路公司前端筆試面試題–HTML,CSS篇
    除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發者自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與伺服器進行交互,作為HTTP規範的一部分而存在 ,而Web Storage僅僅是為了在本地「存儲」數據而生。
  • Web開發者不容錯過的20段CSS代碼
    Web開發技術每年都在革新,瀏覽器已逐漸支持CSS3特性,並且網站設計師和前端開發者普遍採用這種新技術進行設計與開發。但仍然有一些開發者迷戀著一些CSS2代碼。本文將分享20段非常專業的CSS2/CSS3代碼供大家使用,你可以把它們保存在IDE裡、或者存儲在CSS文檔裡,這些代碼片段絕對會給你帶來意外的驚喜。1.
  • 乾貨 | 25個實用前端網站工具推薦
    給大家整理了 25 個前端相關的學習網站和一些靠譜的小工具,包括一些小遊戲