更多課程 選擇中心

Web培訓
美國上市教育機構

400-111-8989

Web培訓

Web前端工程師該如何學習css技術

  • 發布:Web前端培訓
  • 來源:Web職場
  • 時間:2020-04-27 16:48

今天小編要跟大家分享的文章是關于web前端工程師該如何學習css技術。很多人想讓我給他們推薦有關CSS部分的教程,或者問我如何學習CSS。我也看到很多人對CSS的部分內容感到困惑,一部分原因是由于對語言的過時認識。鑒于CSS在過去幾年中發生了相當大的變化,這是一個更新知識的好時機。即使CSS只是你所做工作的一小部分(因為你使用其他技術棧),CSS是你最終希望在屏幕上顯示的結果,所以值得合理去學習。

因此,本文旨在概述CSS的關鍵基礎和資源,以便進一步閱讀現代CSS開發的關鍵領域。其中許多資源在Smashing雜志上已經有了,但我也選擇了其他一些資源,也有人關注CSS的關鍵領域。這不是一本完整的初學者指南或旨在涵蓋所有知識點。我的目標是覆蓋現代CSS的廣度,同時重點關注幾個關鍵領域,將幫助你理解CSS的其他部分。下面來和小編一起看一看吧!

一、語言基礎知識

對于CSS的大部分內容,你不需要特意去學習屬性和值,你可以在需要時查找它們。然而,CSS中一些基礎知識沒有掌握好,你將很難去理解它。這些基礎知識值得你花時間去理解,從長遠看,它會幫你節省很多時間和少走彎路。

二、選擇器,不僅僅有類

選擇器的表現如標題所說的,它選擇文檔的某些部分,以便你可以將CSS規則應用于它。大多數人都熟悉使用class,或在 直接使用HTML元素設置樣式,比如body,但是還有很多更高級的選擇器可以根據文檔中的位置選擇元素,直接選擇位于元素之后的元素,或選擇表格中的奇數行。
這些選擇器是CSS3規范的一部分(你可能聽說過它們被稱為第3級選擇器)具有出色的瀏覽器支持。有關可以使用的各種選擇器的詳細信息,請參閱MDN參考。有些選擇器的行為就好像你已經將類應用于文檔中的某些內容。例如p:first-child就像你在第一個p元素中添加了一個類一樣,這些被稱為 偽類選擇器。偽元素選擇器就像動態插入一個元素一樣,例如::first-line的表現與用span包裹第一行文本類似。但是,如果該行的長度發生變化,它將重新應用,如果插入該元素則不會出現這種情況。這些選擇器可能會相當復雜。在下面的CodePen中是一個用偽類鏈接的偽元素的例子。我們使用:first-child偽類定位第一個p元素,然后::first-line選擇器選擇該元素的第一行,就好像在第一行周圍添加了一個<span>以使其變為粗體和改變顏色。

<div class="container">
 <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon apa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya uts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p></div>

body {
 padding: 20px;
 font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
 margin: 0 0 1em 0;}.container {
 border: 5px solid rgb(111,41,97);
 border-radius: .5em;
 padding: 10px;
 column-count: 2;}.container p:first-child::first-line {
 font-weight: bold;
 color: rgb(111,41,97);}

三、繼承和層疊

層疊是指當元素應用了多個樣式規則,哪個規則優先應用。如果你曾經遇到過無法理解為什么某些CSS似乎沒有應用的情況,那可能是層疊沒有運用好。層疊與繼承緊密相關,繼承定義了子元素可以繼承父元素的樣式屬性。它還與特異性有關,不同的選擇器具有不同的特異性,當有幾個選擇器可以應用于一個元素時,繼承可以決定應用哪個規則。
注意:為了理解所有這些內容,我建議閱讀MDN CSS簡介中的 層疊和繼承。如果你正在嘗試將一些CSS應用于一個元素,那么你的瀏覽器開發者工具是開始最好的地方。看看下面的例子,我用元素選擇器h1將h1標題設置為橙色。同時,我也使用類選擇器設置h1設置為紫色。由于類更具體,因此h1是紫色的。在開發者工具中,您可以看到元素選擇器被劃掉,因為它沒有被應用。一旦你看到瀏覽器正在獲取你的CSS(但其他東西已經推翻了它),那么你可以開始找出原因。

<div class="container">
 <h1 class="veggies">I like veggies</h1>
 <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon apa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya uts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p></div>

body {
 padding: 20px;
 font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
 margin: 0 0 1em 0;}.container {
 border: 5px solid rgb(111,41,97);
 border-radius: .5em;
 padding: 10px;}.veggies {
 color: rebeccapurple;}

h1 {
 color: orange;}

web前端工程師該如何學習css技術

四、盒模型

CSS里一切都是盒子。屏幕上顯示的所有內容都有一個框,盒模型描述了如何計算該框的大小-將外邊距,內邊距和邊框考慮進去。標準的CSS框模型接受給定元素的寬度,然后將內邊框和邊框添加到該寬度上——這意味著元素占用的空間大于給定的寬度。
最近,我們已經能夠選擇使用IE盒模型,使得元素上的給定寬度作為屏幕上可見元素的寬度。任何內邊距或邊框都會從邊緣插入框的內容。這對許多布局更有意義。在下面的演示中,我有兩個盒子。兩者的寬度均為200像素,邊框為5像素,內邊距為20像素。第一個框使用標準框模型,因此占用總寬度為250像素,第二個框使用IE盒模型,因此實際上是200像素寬。

<div class="box">
 I use the standard box model.
 </div><div class="box box2">
 I use the alternate box model.
 </div>

body {
 padding: 20px;
 font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}

p {
 margin: 0 0 1em 0;}.box {
 border: 5px solid rgb(111,41,97);
 border-radius: .5em;
 padding: 20px;
 width: 200px;
 margin-bottom: 2em;}.box2 {
 box-sizing: border-box;}

瀏覽器開發者工具可以再次幫助你了解正在使用的盒子模型。在下圖中,我使用火狐瀏覽器的開發者工具使用默認的內容框框模型檢查框。工具告訴我這是正在使用的盒模型,我可以看到大小以及如何將邊框和內邊框添加到指定的寬度。

web前端工程師該如何學習css技術

注意:在IE6之前,Internet Explorer使用IE盒模型,內邊框和邊框插入給定寬度的內容里。所以有一段時間瀏覽器使用不同的盒模型!如果今天的互操作性問題感到沮喪,現在已經有所改善,那么我們就不會處理瀏覽器以不同的方式計算元素的寬度。在CSS Tricks里,有關于盒模型和盒子尺寸的很好的解釋,并解釋了在你的網站中全局使用IE盒模型的最佳方法。

五、標準流

如果你的文檔內容用一些HTML標記,你的文檔將具有可讀性。標題和段落會另起新的一行,單詞組成句子時,它們之間有一個空格。標記是用來格式化的,像em不會破壞句子的流。句子會表現標準流,或塊流布局。句子的每個部分都被描述為“在流中”,它知道句子其余內容,所以不會重疊。
如果你去了解,而不是去反對這種行為,你會變得更加輕松。這是為什么從正確標記的HTML文檔開始很有意義的原因之一,由于瀏覽器遵守正常流和內置樣式表,你的內容從可讀的地方開始。

六、格式化上下文

一旦文檔的內容處于正常流程中,您可能希望更改其中一些內容的外觀。你可以通過更改元素的格式上下文來完成此操作。舉個一個非常簡單的示例,如果你希望所有段落連在一起而不是從新行開始,你可以設置p元素的樣式屬性display:inline,將p元素由塊級元素變成內聯元素。
本質上,格式化上下文定義了外部和內部類型。外部控制元素與頁面上其他元素的行為,內部控制子元素的外觀。例如,當你設置display:flex,你在設置外部為塊格式化上下文,設置子元素為flex格式化上下文。注意:最新版本的Display規范改變了display的值,顯式聲明外部和內部的類型。因此,將你可能會聲明display:block flex;(外部為block,內部為flex)

七、進入或離開流

CSS中的元素被描述為“在流中”或“脫離流”。流中的元素被賦予空間,并且空間被流中的其他元素所影響。如果通過浮動或定位元素使元素脫離流,則該元素的空間將不再受到其他流元素的影響。
對于絕對定位的元素,是最明顯的。如果你設置一個元素position: absolute,該元素會從流中脫離,你需要確保這個元素不會與流中的元素重疊,且不影響你布局的其他部分的可讀性。

<div class="container">
 <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon apa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya nuts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p>
 <div class="item">
   I am absolutely positioned and out of flow.
 </div></div>

body {
 padding: 20px;
 font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
 margin: 0 0 1em 0;}.container {
 border: 5px solid rgb(111,41,97);
 border-radius: .5em;
 padding: 10px;
 column-count: 2;
 max-width: 400px;
  position: relative;}.item {
 border-radius:.5em;
 position: absolute;
 top: 10px;
 left: 20px;
 background-color: rgba(111,41,97,.9);
 color: #fff;
 padding: 20px;
 width: 200px;}

然而,浮動元素也會從流中脫離,但后面的元素的文本將環繞該浮動元素。你可以設置后面元素的背景顏色,你會看到他們會上升并占用了原來浮動元素原來的空間。

<div class="container">
 <div class="item">
   I am floated and out of flow.
 </div>
 <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p><p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p><p>Turnip greens yarrow ricebean rutabaga endive cauliflower sea lettuce kohlrabi amaranth water spinach avocado daikon apa cabbage asparagus winter purslane kale. Celery potato scallion desert raisin horseradish spinach carrot soko. Lotus root water spinach fennel kombu maize bamboo shoot green bean swiss chard seakale pumpkin onion chickpea gram corn pea. Brussels sprout coriander water chestnut gourd swiss chard wakame kohlrabi beetroot carrot watercress. Corn amaranth salsify bunya nuts nori azuki bean chickweed potato bell pepper artichoke.</p><p>Nori grape silver beet broccoli kombu beet greens fava bean potato quandong celery. Bunya uts black-eyed pea prairie turnip leek lentil turnip greens parsnip. Sea lettuce lettuce water chestnut eggplant winter purslane fennel azuki bean earthnut pea sierra leone bologi leek soko chicory celtuce parsley jícama salsify.</p></div>

body {
 padding: 20px;
 font: 1em Helvetica Neue, Helvetica, Arial, sans-serif;}* {box-sizing: border-box;}

p {
 margin: 0 0 1em 0;}.container {
 border: 5px solid rgb(111,41,97);
 border-radius: .5em;
 padding: 10px;
 max-width: 500px;}.item {
 border-radius:.5em;
 float: left;
 background-color: rgba(111,41,97,.9);
 color: #fff;
 padding: 20px;
 width: 100px;
 margin: 10px;}.container p:nth-of-type(1) {
 background-color: yellow;}

你可以在MDN上閱讀更多有關 流中和脫離流 的信息。需要記住的重要一點是,如果從流中取出一個元素,則需要自己管理重疊,因為塊流布局的常規規則不再適用。

八、布局

十五年來,我們一直使用CSS布局,但沒有設計一套布局系統。這已經改變了。我們現在擁有功能完備的布局系統,其中包括Grid和Flexbox,還有多列布局和舊布局方法也應用于實際目的。
不要認為grid和flexbox等方法在某種程度上是競爭的。為了更好地使用布局,你有時會發現組件最好作為flex,有時作為Grid。有時,你想要多列流動布局。所有這些都是不錯的選擇。如果你覺得自己在與某些事物的行為方式作斗爭,這通常是一個非常好的跡象,表明它可能值得退一步,嘗試一種不同的方法。我們已經習慣了在CSS上做一些我們想做的事情,以至于我們可能會忘記我們還有很多其他的選擇可以嘗試。

九、對齊

通常,我會將對齊和布局分開,雖然大多數人把對齊當作Flexbox的一部分。對齊這些屬性適用于所有布局方法上,應該在上下文去理解對齊,而不是考慮 “Flexbox對齊”或“CSSGrid對齊”。對齊屬性在大體上表現一樣,但不同布局方式里會有一些差異。
在MDN上,您可以深入了解 盒對齊 及其在Grid,Flexbox,多列和塊布局中的實現方式。 

十、尺寸

我在2018年花了很多時間討論了內部和外部尺寸規范,特別是它與Grid和Flexbox的關系。在web上,我們習慣于設置尺寸為長度或百分比,這就是我們如何使用浮動來制作網格類型布局的方法。然而,現代的布局方法可以為我們做很多空間分配——如果我們允許的話。值得花時間去了解Flexbox如何分配空間(或Grid fr單元如何工作)。

十一、響應式設計

通常,新的Grid和Flexbox布局方法意味著我們可以使用比舊方法更少的媒體查詢,因為它們非常靈活,可以響應視口或組件大小的變化,而無需我們更改元素的寬度。但是,有些地方需要添加一些斷點來進一步增強設計。

十二、字體和排版

與布局一樣,網絡上的字體使用在去年發生了巨大的變化。現在,可變字體,使單個字體文件具有無限的變化。要了解它們是什么以及它們如何工作,請觀看Mandy Michael的精彩簡短演講:可變字體和網頁設計的未來。另外,我會推薦Jason Pamental的動態排版與現代CSS和可變字體。為了探索可變字體和它們的功能,微軟提供了一個有趣的演示,以及一些嘗試可變字體的游樂場- Axis Praxis是最知名的(我也喜歡字體游樂場)。MDN上的指南將證明一開始使用可變字體是非常有用的。

十三、變形和動畫

CSS轉換和動畫絕對是我需要知道的基礎。我不經常需要使用它們,在使用時會忘記語法。值得慶幸的是,MDN上的參考資料幫助了我,我建議從使用CSS變換和使用CSS動畫的指南開始。Zell Liew也有一篇很好的文章,為CSS過渡提供了很好的解釋。關于動畫可能令人困惑的事情之一是采取哪種方法。除了CSS支持的內容之外,你可能還需要涉及JavaScript,SVG或Web Animation API,而這些事情往往都會被混為一談。在她的演講中,選擇你的動畫冒險記錄在事件中,Val Head解釋了這些選項。

十四、使用速查表作為回憶,而不是學習工具

當我提到Grid或Flexbox資源時,我經常看到回復說,如果沒有特定的速查表,他們就不能使用Flexbox。我覺得把速查表作為記憶助手查找語法沒有問題,我自己也出版過一些速查表。完全依賴速查表的問題是當你復制語法時,你可能會忽略為什么要這樣寫。然后,當你遇到屬性的行為似乎不同的情況時,這種明顯的不一致性似乎令人困惑,或者是語言的錯誤 。
如果你發現CSS在做一些非常奇怪的事情的情況下,問問為什么。創建一個簡單的測試用例來強調這個問題,問問對規范更熟悉的人。我被問到的許多CSS問題都是因為人們認為屬性的表現與它在現實中的表現不同。這就是為什么我經常討論關于對齊和尺寸,因為這些地方經常會混淆。是的,CSS中有一些奇怪的東西。它是一門經過多年進化的語言,有些東西我們無法改變,除非我們發明了時間機器。然而,一旦你掌握了一些基礎知識,并且理解了為什么會這樣,你就可以更輕松地處理棘手的問題。

今天小編要跟大家分享的文章是關于web前端工程師該如何學習css技術的文章,希望本篇文章能夠對正在從事web前端工作的小伙伴們有所幫助,想要了解更多web前端知識記得關注達內web培訓官網。最后祝愿小伙伴們工作順利!

【免責聲明:本文圖片及文字信息均由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除。】

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

上一篇:除了HTML+CSS Web前端工程師還需要學什么
下一篇:Web前端新手要怎么入門?Web前端入門教程講解

成為Web前端工程師的需要哪些理由

Web前端有哪些職能?Web前端工程師需要哪些核心技術?

Web前端開發工程師要掌握的網頁優化常見錯誤有哪些?

Web前端學習新手的常見疑問匯總

選擇城市和中心
黑龍江省

吉林省

河北省

貴州省

云南省

廣西省

海南省

开心激情五月天