CSS布局說——可能是最全的

CSS布局說可能是最全的

前言

現在,我們被稱為前端工程師。然而,早年給我們的稱呼卻是頁面仔。或許是職責越來越大,整體的前端井噴式的發展,使我們只關注了js,而疏遠了css和html。

其實,我們可能經常在聊組件化,咋地咋地。但是,回過頭來思考一下,如果你看到一張設計稿的時候,連布局都不清不楚,談何組件化呢。所以,我們需要在分清楚組件之前,先來分清楚布局。廢話說了這么多,只是想告訴你,布局這個東西真的很重要。本篇內容概括了布局的基礎+基本的PC端布局+移動端適配等內容。如果你喜歡我的文章,歡迎評論,歡迎Star~。歡迎關注我的github博客

正文

或許對于你來說,喜歡js的背后,是看不懂css的深層。入門級的css非常簡單,但是,精通它卻沒有想象的容易。我們本篇聊的是布局。前端開發,從拿到設計稿的那一刻,布局的思考就已經開始了。

舉個例子,建筑師在設計房屋的時候,需要丈量開發地塊的長度,以及每幢房屋相對于其他房屋的位置。

在css布局中,似乎也是這樣開始的。我們也會去區分每個元素的尺寸和定位,力爭完美的實現整個設計稿。所以,我們的布局應該從定位和尺寸開始聊起

定位

定位的概念就是它允許你定義一個元素相對于其他正常元素的位置,它應該出現在哪里,這里的其他元素可以是父元素,另一個元素甚至是瀏覽器窗口本身。還有就是浮動了,其實浮動并不完全算是定位,它的特性非常的神奇,以至于它在布局中被人廣泛的應用。我們會在后文中專門提及它的。

談及定位,我們就得從position屬性說起。你能準確的說出position的屬性值嗎?相信你可以完美地說出這么六個屬性值:static、relative、absolute、fixed、sticky和inherit。

  • static(默認):元素框正常生成。塊級元素生成一個矩形框,作為文檔流的一部分;行內元素則會創建一個或多個行框,置于其父元素中。
  • relative:元素框相對于之前正常文檔流中的位置發生偏移,并且原先的位置仍然被占據。發生偏移的時候,可能會覆蓋其他元素。
  • absolute:元素框不再占有文檔流位置,并且相對于包含塊進行偏移(所謂的包含塊就是最近一級外層元素position不為static的元素)
  • fixed:元素框不再占有文檔流位置,并且相對于視窗進行定位
  • sticky:(這是css3新增的屬性值)粘性定位,官方的介紹比較簡單,或許你不能理解。其實,它就相當于relative和fixed混合。最初會被當作是relative,相對于原來的位置進行偏移;一旦超過一定閾值之后,會被當成fixed定位,相對于視口進行定位。demo地址(https://jsbin.com/moxetad/edit?html,css,output)

簡單地,介紹一下position的屬性值的含義后,在來看一下偏移量top、right、bottom、left四個屬性。

不清楚,當初在初學css的時候,會不會與margin這個屬性混淆?其實,它們之間是很容易去辨識地。因為這四個屬性值,其實是,定位時的偏移量。偏移量不會對static的元素起到作用。而margin,相對應的是盒子模型的外邊距,它會對每個元素框起到作用,使得元素框與其他元素之間產生空白。

下面:我們來看一下一些常用定位的偏移

  • relative:它的偏移是相對于原先在文檔流中的位置,如圖:relative relative-offset

這里設置了top:100px,left:100px。

  • absolute:它的偏移量是相對于最近一級position不是static的祖先元素的
  • fixed:它的偏移量是相對于視口的。

其實,這里說描述的內容,應該都是需要理解的。這些相對于布局來說是基礎的,同時也是非常重要的。需要注意的是,這里的偏移量其實已經涉及到了接下來要說的尺寸。在做自適應布局設計時,往往希望這些偏移量的單位能夠使用百分比,或者相對的單位例如rem等。

尺寸

那之前上面談到過尺寸的單位——百分比。那么,下面部分我們就圍繞著尺寸單位展開。

尺寸,我們就應該從單位聊起,對于px這個單位,做網頁的應該在熟悉不過了,因此不多做介紹。

那么,我們可以來介紹一下下面幾個單位:

  • 百分比:百分比的參照物是父元素,50%相當于父元素width的50%
  • rem:這個對于復雜的設計圖相當有用,它是html的font-size的大小
  • em:它雖然也是一個相對的單位,相對于父元素的font-size,但是,并不常用,主要是計算太麻煩了。

單位只是一個來定義元素大小的相應參考。另一個概念,或許可以用房子來打一個比方,在早年每幢房子都會在房子的外圍建一層柵欄,使得整一塊地區可以看成房子+內部地塊+柵欄+外圍地塊的模型。而在css中,每個元素也會有盒子模型的概念。

盒子模型:每個元素,都會形成一個矩形塊,主要包括四部分:margin(外邊距)+border(邊框)+padding(內邊距)+content(內容)

css中存在兩種不同的盒子模型,可以通過box-sizing設置不同的模型。兩種盒子模型,主要是width的寬度不同。如圖:

這是標準盒子模型,可以看到width的長度等于content的寬度;而當將box-sizing的屬性值設置成border-box時,盒子模型的width=border+padding+content的總和。

可以看出,對于不同的模型的寬度是不同的。寬度默認的屬性值是auto,這個屬性值會使得內部元素的長度自動填充滿父元素的width。如圖:

但是,height的屬性值也是默認的auto,為什么沒有像width一樣呢?

其實,auto這個屬性值表示的是瀏覽器自動計算。這種自動計算,需要一個基準,一般瀏覽器都是允許高度滾動的,所以,會導致一個問題——瀏覽器找不到垂直方向上的基準。

同樣地道理也會被應用在margin屬性上。相信如果考察居中時,水平居中你可能閉著眼睛都能寫出來,但是垂直居中卻繞著腦袋想。這是因為如果是塊級元素水平居中只要將水平方向上的margin設置成auto就可以了。但是,垂直方向上卻沒有這么簡單,因為你設置成auto時,margin為0。這個問題,還是需要仔細思考一下的。

到此為止,布局最基本的部分我們已經將去大半,還有就是一塊浮動。

浮動

浮動,這是一個非常有意思的東西,在布局中被廣泛的應用。最初,設計浮動時,其實并不是為了布局的,而是為了實現文字環繞的特效,如圖:

但是,浮動并不是僅僅這樣而已。何為浮動?浮動應該說是‘自成一派’,類似于ps中的圖層一樣,浮動的元素會在浮動層上面進行排布,而在原先文檔流中的元素位置,會被以某種方式進行刪除,但是還是會影響布局。你可能會覺得有疑問,什么叫影響布局?我們可以來舉個例子:

首先,我們準備兩個顏色塊,如圖:

之后我們將left的塊設置成左浮動,如圖:

可以,發現雖然left塊因為左浮動,而使得原先元素在文檔流中占有的位置被刪除,但是,當right塊補上原先的位置時,right塊中的字體卻被擠出來了。這就是所謂的影響布局。

浮動為什么會被使用在布局中呢?因為設置浮動后的元素會形成BFC(使得內部的元素不會被外部所干擾),并且元素的寬度也不再自適應父元素寬度,而是適應自身內容。這樣就可以,輕松地實現多欄布局的效果。

浮動的內容還需要介紹一塊——清除浮動。可以看到,浮動元素,其實對于布局來說,是特別危險的。因為你可能這一塊做過浮動,但未做清除,那么造成高度塌陷的問題。就是上面圖示的那種情況。

清除浮動,最常用的方法有兩種:

  • overflow: 將父元素的overflow,設置成hidden。
  • after偽類:對子元素的after偽類進行設置。

這里只是稍微的提上一嘴。下面我們正式來介紹一下網頁的布局,本篇最核心的東西。

最初的布局——table

最初的時候,網頁簡單到可能只有文字和鏈接。這時候,大家最常用的就是table。因為table可以展示出多個塊的排布。

這種布局現在應該不常用了,因為在形色單一時,使用起來方便。但是,現在的網頁變得越來越復雜,適配的問題也是越來越多,這種布局已經不再時候了。

主要是div塊的出現,可以使得網頁進行靈活的排布,使得網頁變得繁榮。這時,開發者也開始思索如何去更加清晰地分辨網頁的層次。接下來,我們可以看看有哪些比較出名的布局方式。

兩欄布局

是否記得,那些一邊主體內容,一邊目錄的網頁,如圖:

類似于上圖的布局,可以定義為兩欄布局。

兩欄布局:一欄定寬,一欄自適應。這樣子做的好處是定寬的那一欄可以做廣告,自適應的可以作為內容主體。

實現的方式:

float + margin:

 
  1. <body>?
  2. ??<div?class="left">定寬</div>?
  3. ??<div?class="right">自適應</div>?
  4. </body>??
 
  1. .left{?
  2. ??width:?200px;?
  3. ??height:?600px;?
  4. ??background:?red;?
  5. ??float:?left;?
  6. ??display:?table;?
  7. ??text-align:?center;?
  8. ??line-height:?600px;?
  9. ??color:?#fff;?
  10. }?
  11. ??
  12. .right{?
  13. ??margin-left:?210px;?
  14. ??height:?600px;?
  15. ??background:?yellow;?
  16. ??text-align:?center;?
  17. ??line-height:?600px;?
  18. }??

如圖所示:

其他的方法:還可以使用position的absolute,可以使用同樣的效果

三欄布局

三欄布局,也是經常會被使用到的一種布局。

它的特點:兩邊定寬,然后中間的width是auto的,可以自適應內容,再加上margin邊距,來進行設定。

三欄布局可以有4種實現方式,每種實現方式都有各自的優缺點。

1.使用左右兩欄使用float屬性,中間欄使用margin屬性進行撐開,注意的是html的結果

 
  1. <div?class="left">左欄</div>?
  2. ?
  3. <div?class="right">右欄</div>?
  4. ?
  5. <div?class="middle">中間欄</div>??
 
  1. .left{?
  2. ??width:?200px;height:?300px;?background:?yellow;?float:?left;?????
  3. }?
  4. .right{?
  5. ??width:?150px;?height:?300px;?background:?green;?float:?right;?
  6. }?
  7. .middle{?
  8. ??height:?300px;?background:?red;?margin-left:?220px;?margin-right:?160px;?
  9. }??

缺點是:1. 當寬度小于左右兩邊寬度之和時,右側欄會被擠下去;2. html的結構不正確

2. 使用position定位實現,即左右兩欄使用position進行定位,中間欄使用margin進行定位

 
  1. <div?class="left">左欄</div>?
  2. ?
  3. <div?class="middle">中間欄</div>?
  4. ?
  5. <div?class="right">右欄</div>??
 
  1. .left{?
  2. ????background:?yellow;?
  3. ????width:?200px;?
  4. ????height:?300px;?
  5. ????position:?absolute;?
  6. ????top:?0;?
  7. ????left:?0;?
  8. }?
  9. .middle{?
  10. ????height:?300px;?
  11. ????margin:?0?220px;?
  12. ????background:?red;?
  13. }?
  14. .right{?
  15. ????height:?300px;?
  16. ????width:?200px;?
  17. ????position:?absolute;?
  18. ????top:?0;?
  19. ????right:?0;?
  20. ????background:?green;?
  21. }?

好處是:html結構正常。

缺點時:當父元素有內外邊距時,會導致中間欄的位置出現偏差

3. 使用float和BFC配合圣杯布局

將middle的寬度設置為100%,然后將其float設置為left,其中的main塊設置margin屬性,然后左邊欄設置float為left,之后設置margin為-100%,右欄也設置為float:left,之后margin-left為自身大小。

 
  1. <div?class="wrapper">?
  2. ????<div?class="middle">?
  3. ????????<div?class="main">中間</div>?
  4. ????</div>?
  5. ????<div?class="left">?
  6. ????????左欄?
  7. ????</div>?
  8. ????<div?class="right">?
  9. ????????右欄?
  10. ????</div>?
  11. </div>??
 
  1. .wrapper{?
  2. ????overflow:?hidden;??//清除浮動?
  3. }?
  4. .middle{?
  5. ????width:?100%;?
  6. ????float:?left;?
  7. }?
  8. .middle?.main{?
  9. ????margin:?0?220px;?
  10. ????background:?red;?
  11. }?
  12. .left{?
  13. ????width:?200px;?
  14. ????height:?300px;?
  15. ????float:?left;?
  16. ????background:?green;?
  17. ????margin-left:?-100%;?
  18. }?
  19. .right{?
  20. ????width:?200px;?
  21. ????height:?300px;?
  22. ????float:?left;?
  23. ????background:?yellow;?
  24. ????margin-left:?-200px;?
  25. }??

缺點是:1. 結構不正確 2. 多了一層標簽

4. flex布局

 
  1. <div?class="wrapper">?
  2. ????<div?class="left">左欄</div>?
  3. ????<div?class="middle">中間</div>?
  4. ????<div?class="right">右欄</div>?
  5. </div>??
 
  1. .wrapper{?
  2. ????display:?flex;?
  3. }?
  4. .left{?
  5. ????width:?200px;?
  6. ????height:?300px;?
  7. ????background:?green;?
  8. }?
  9. .middle{?
  10. ????width:?100%;?
  11. ????background:?red;?
  12. ????marign:?0?20px;?
  13. }?
  14. .right{?
  15. ????width:?200px;?
  16. ????height:?3000px;?
  17. ????background:?yellow;?
  18. }??
?

除了兼容性,一般沒有太大的缺陷

三欄布局使用較為廣泛,不過也是比較基礎的布局方式。對于PC端的網頁來說,使用較多,但是移動端,本身寬度的限制,很難做到三欄的方式。因此,移動端盛行的現在,我們應該掌握一些自適應布局技巧和flex等方式。

移動端的時代

或許,手機占用了人們大部分的時間,對于前端工程師來說,不僅需要會h5和大前端的技術,還需要去適配不同的手機屏幕。PC端稱王的時代已經過去,現在要求的網頁都是需要能夠去適配PC和移動端的。

之前,所聊的兩欄和三欄布局,一般只能在PC中去使用,在移動端,由于屏幕尺寸有限,很難去做到類似的操作,所以,我們需要來了解新的東西。

1. 媒體查詢

如果你需要一張網頁能夠在PC和移動端都能按照不同的設計稿顯示出來,那么你需要做的就是去設置媒體查詢。

媒體查詢的css標識符是@media,它的媒體類型可以分為:

  1. all, 所有媒體
  2. braille 盲文觸覺設備
  3. embossed 盲文打印機
  4. print 手持設備
  5. projection 打印預覽
  6. screen 彩屏設備
  7. speech ‘聽覺’類似的媒體類型
  8. tty 不適用像素的設備
  9. tv 電視

代碼示例:

 
  1. @media?screen?{?
  2. ??p.test?{font-family:verdana,sans-serif;font-size:14px;}?
  3. }?
  4. @media?print?{?
  5. ??p.test?{font-family:times,serif;font-size:10px;}?
  6. }?
  7. @media?screen,print?{?
  8. ??p.test?{font-weight:bold;}?
  9. }?
  10. /*移動端樣式*/?
  11. @media?only?screen?and?(min-device-width?:?320px)?and?(max-device-width?:?480px)?{?
  12. ??/*?Styles?*/?
  13. }??

媒體查詢的主要原理:它像是給整個css樣式設置了斷點,通過給定的條件去判斷,在不同的條件下,顯示不同的樣式。例如:手機端的尺寸在750px,而PC端則是大于750px的,我們可以將樣式寫成:

 
  1. @media?screen?and?(min-width:?750px){?
  2. ??.media{?
  3. ????height:?100px;?
  4. ????background:?red;?
  5. ??}?
  6. }?
  7. ??
  8. @media?(max-width:?750px){?
  9. ??.media{?
  10. ????height:?200px;?
  11. ????background:?green;?
  12. ??}?
  13. }??

demo地址(https://jsbin.com/gopezum/edit?html,css,output)

效果圖:

flex彈性盒子

其實移動端會經常使用到flex布局,因為在簡單的頁面適配方面,flex可以起到很好的拉伸的效果。我們先看幾張圖體會一下:

可以從圖中看出,這個網頁不管屏幕分辨率怎么發生變化,它的高度和位置都不變,而且里面的元素排布也沒有發生變化,總是圖標信息在左邊和薪資狀況在右邊。

這就是很明顯的,flex布局。flex可以在移動端適配比較簡單的,元素比較單一的頁面。

具體的flex布局內容,在這里不詳細說明。flex傳送門

rem適配

rem可以說是移動端適配的一個神器。類似于手淘等界面,都是使用的rem進行的適配。這種界面有個特點就是頁面元素的復雜度比較高,而使用flex進行布局會導致頁面被拉伸,但是上下的高度卻沒有變化等問題。示例圖:

具體的講解可以看這篇比較好的文章。rem傳送門(http://www.cnblogs.com/lyzg/p/4877277.html)

總結

分析到這里,布局的很多東西都已經非常的清晰了。相信這是一篇值得去收藏的一篇文章。內容可能有點多,所以這里做一個總結:

  • 定位
  • 尺寸
  • 浮動
  • 最初的布局——table
  • 兩欄布局
  • 三欄布局
  • 移動端的布局

相信你看完這些,在以后,一定可以拿到設計稿的時候,內心大致有個算盤,應該如何區分,如何布局。


本文作者:佚名

來源:51CTO

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

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

相關文章

php dingo和jwt,dingo配合laravel、JWT使用

介紹&#xff1a;dingo api包是給laravel和lumen提供的Restful的工具包&#xff0c;它可以與jwt組件一起配合快速的完成用戶認證&#xff0c;同時對于數據和運行過程中所產生的異常能夠捕獲到并且可以做出對應的響應。dingo文檔地址&#xff1a;https://github.com/dingo/api/w…

重啟開源,分享無限--微軟面試187題精選

重啟開源&#xff0c;分享無限--誠邀你加入微軟面試187題的解題中 前期回顧 我想&#xff0c;只要是稍微瀏覽過我博客的朋友都知道&#xff0c;本博客內總體上大致分為兩個部分的內容&#xff1a;1、算法&#xff08;如十六個經典算法研究系列&#xff09;&#xff1b;2、面試與…

二三星縮水軟件手機版_還在抱怨三星手機不好用?用這些軟件立馬解決

S10系列上市讓三星在國內的銷量有所回暖&#xff0c;但是很多小伙伴拿到手機后都在吐槽三星的軟件工程師不行&#xff0c;比如手勢操作太難用了&#xff0c;不如小米人性化。其實這只是你沒找到秘訣而已&#xff0c;三星手機原來還可以這樣使用&#xff1f;三星有一個官方軟件&…

使用Settings Bundle為程序添加設置項

創建一個Demo來學習一個Setting Bundle為程序存儲設置項 Settings Bundle是在自己的程序中建立的一組文件&#xff0c;利用它可以告訴設備中的Settings程序我們寫的程序有哪些設置項。用戶在Settings程序中設置好相關相關選項后回到我們自己的程序&#xff0c;自己的程序中的對…

Netty自娛自樂之協議棧設計

---恢復內容開始--- 俺工作已經一年又6個月了&#xff0c;想想過的真快&#xff0c;每天寫業務&#xff0c;寫業務&#xff0c;寫業務......。然后就是祈禱著&#xff0c;這次上線不要出現線上bug。繼續這每天無聊的增刪改查&#xff0c;學習學習一下自己感興趣的事&#xff0c…

Linux 狀態命令之磁盤狀態 df du

df df&#xff08;disk free&#xff09;命令用于顯示目前在 Linux 系統上的文件系統磁盤使用情況統計。獲取硬盤被占用了多少空間&#xff0c;目前還剩下多少空間等信息&#xff0c;如果沒有文件名被指定&#xff0c;則所有當前被掛載的文件系統的可用空間將被顯示。 默認情…

C++包擴展_利用 MATLAB Coder 將M代碼生成C/C++代碼

利用MATLAB Coder將MATLAB代碼生成C/C代碼?mp.weixin.qq.comMATLAB Coder 可以將MATLAB代碼生成工程中常用的嵌入式或其他硬件平臺的C或者C代碼。使用者可以在MATLAB中進行驗證&#xff0c;然后將生成后的代碼集合到工程中。集合的方式可以是源碼&#xff0c;靜態庫和動態庫。…

linux 進程通信機制,linux的進程通信機制小結

linux向應用軟件提供下列進程間通信手段&#xff1a;####第一類通信方式&#xff1a;只能用于父進程與子進程之間&#xff0c;或者兩個兄遞進程之間。>管道Pipe>信號Signal>跟蹤Trace管道&#xff1a;由父進程來建立。管道兩端的進程各自都將該管道視作一個文件。一個…

看穿面試這件事兒……

報 版權聲明&#xff1a;原創作品&#xff0c;允許轉載&#xff0c;轉載時請務必以超鏈接形式標明文章原始出版、作者信息和本聲明。否則將追究法律責任。本文地址&#xff1a; http://blog.csdn.net/jobchanceleo/archive/2007/04/17/1568254.aspx 有個朋友Min十幾年工作經驗&…

阿里云胡曉明:數據智能將為城市生活帶來真正價值

8月30日&#xff0c;在2017全球&#xff08;上海&#xff09;人工智能創新峰會-世界人工智能城市規劃大會上&#xff0c;阿里巴巴集團資深副總裁、阿里云總裁胡曉明作《通往智能之路》主題演講&#xff0c;指出數據智能將從交通、醫療、城市治理等方面影響城市生活&#xff0c;…

MySQL 之 information_schema

一、information_schema簡介 在MySQL中&#xff0c;把 information_schema 看作是一個數據庫&#xff0c;確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名&#xff0c;數據庫的表&#xff0c;表欄的數據類型與訪問權 限等。在INFORMA…

【iCore1S 雙核心板_FPGA】例程十二:基于單口RAM的ARM+FPGA數據存取實驗

實驗現象&#xff1a; 核心代碼&#xff1a; module single_port_ram(input CLK_12M,input WR,input RD,input CS0,inout [15:0]DB,input [24:16]A,output FPGA_LEDR,output FPGA_LEDG,output FPGA_LEDB); //----------------------------pll-------------------------------//…

curl post https_Linux命令cURL詳解,并實現文件定時上傳到ftp服務器的程序

前言前段時間群里討論&#xff0c;想實現某個文件定時上傳到服務器要怎么來實現。我記得之前做過 一個項目&#xff1a;為高通的iot模組編寫FOTA功能&#xff1a;實現模組可以遠程下載升級鏡像包&#xff0c;實現版本升級功能。并當時使用的一個超級強大的工具cURL。心血來潮&a…

linux系統頁面緩存,Linux緩存機制之頁緩存

內核采用一種通用的地址空間方案&#xff0c;來建立緩存數據與其來源之間的關聯。1) 內存中的頁分配到每個地址空間。這些頁的內容可以由用戶進程或內核本身使用各式各樣的方法操作。這些數據表示了緩存中的內容&#xff1b;2) 后備存儲器struct backing_dev_info指定了填充地…

十月百度,阿里巴巴,迅雷搜狗最新面試七十題(更新至10.17)

十月百度&#xff0c;阿里巴巴&#xff0c;迅雷搜狗最新面試十一題 引言 當即早已進入10月份&#xff0c;十一過后&#xff0c;招聘&#xff0c;筆試&#xff0c;面試&#xff0c;求職漸趨火熱。而在這一系列過程背后浮出的各大IT公司的筆試/面試題則蘊含著諸多思想與設計&…

python threading 結束線程

python threading 啟動的線程&#xff0c;并沒有提供終止線程的方法&#xff0c;現總結一下在網上找到的方法 1、通過threading.Thread._Thread__stop()結束線程 import time import threading def f():while 1:time.sleep(0.1)print(1)t threading.Thread(targetf) t.start…

快讀模板

快速讀入字符 inline char readc(){ static char buf[1 << 18], *fs, *ft;return (fs ft && (ft (fs buf) fread(buf, 1, 1 << 18, stdin)), fs ft) ? EOF : *fs; } 快速讀入數字 inline int readint(){register char creadc();register int res0;re…

fasttext 文本分類_4種常見的NLP實踐思路【特征提取+分類模型】

越來越多的人選擇參加算法賽事&#xff0c;為了提升項目實踐能力&#xff0c;同時也希望能拿到好的成績增加履歷的豐富度。期望如此美好&#xff0c;現實卻是&#xff1a;看完賽題&#xff0c;一點思路都木有。那么&#xff0c;當我們拿到一個算法賽題后&#xff0c;如何破題&a…

Angular4學習筆記(六)- Input和Output

概述 Angular中的輸入輸出是通過注解Input和Output來標識&#xff0c;它位于組件控制器的屬性上方。 輸入輸出針對的對象是父子組件。 演示 Input 新建項目connInComponents:ng new connInComponents.新增組件stock:ng g component stock.在stock.component.ts中新增屬性stockN…

Python 常見加密方式和實現

Python 加密與解密小結 這篇文章主要介紹了Python 加密與解密,使用base64或pycrypto模塊 前言 據記載&#xff0c;公元前400年&#xff0c;古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間&#xff0c;德國軍方啟用“恩尼格瑪”密碼機…