Google Amp學習筆記
標簽: html
學習源網址:https://amp.dev/zh_cn/documentation/courses/
原文是英文版,且比較長。
筆記中簡化了一些,記錄我們常用的組件以及一些要點。
關于 AMP 加速的原因
1、Inline 的 CSS
所有的CSS都只能Inline;在本頁內的css不能>75k
2、禁用了大部分的JS
在AMP模式下是不能運行JavaScript,也是禁止運行JavaScdript的,所以所有的Script標簽都會報錯。
3、圖片
img 標簽全部要改為 amp-img
4、頁面里是不能有form標簽的,刪除所有的form。
知識要點
CSS和AMP:AMP對CSS的使用施加了一些限制:
1)樣式只能駐留在文檔的頭上。
<style amp-custom>
body {
font-family: sans-serif;
line-height: 1.5rem;
padding: 20px;
}
p, h2 {
border: 1px dotted red;
}
</style>
構建AMP站點的目標是盡可能使用AMP組件。
大多數HTML標記可以直接在AMP中使用,但是某些標記,例如標簽,必須用等效的AMP組件替換。
添加圖片 amp-img
<amp-img
src="https://cdn.glitch.com/d7f46a57-0ca4-4cca-ab0f-69068dec6631%2Fricotta-racer.jpg?1540228217746"
width=”640”
height="480">
</amp-img>
上面的圖片在頁面中的圖像不會縮小到適合較小的屏幕,它只是溢出到側面。
<amp-img
src="https://cdn.glitch.com/d7f46a57-0ca4-4cca-ab0f-69068dec6631%2Fricotta-racer.jpg?1540228217746"
layout="responsive"0
width="640"
height="480">
</amp-img>
layout類型responsive以便在調整窗口大小時自動縮放。響應布局使圖像假定父容器的尺寸,同時尊重原始的高寬比。如果父容器只有320像素寬,則圖像將保持其縱橫比并被調整為320x240(而不是640x480)
嵌入視頻:
在文檔中嵌入一個YouTube視頻,需要2步:
1)在head里,添加:
<script async
custom-element="amp-youtube" src="https://cdn.ampproject.org/v0/amp-youtube-0.1.js">
</script>
2)視頻id為BlpMQ7fMCzA.
<amp-youtube
data-videoid="BlpMQ7fMCzA"
layout="responsive"
width="480"
height="270">
</amp-youtube>
旋轉木馬
AMP實現組件:
1)在head里添加:
<script async
custom-element="amp-carousel"
src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js">
</script>
2)在相應的代碼位置中添加:
<amp-carousel layout="responsive" width="412" height="309" type="slides" loop>
<amp-img src="https://cdn.glitch.com/d7f46a57-0ca4-4cca-ab0f-69068dec6631%2Fcheddar-chaser.jpg?1540228205366"
width="412" height="309" layout="responsive"></amp-img>
<amp-img src="https://cdn.glitch.com/d7f46a57-0ca4-4cca-ab0f-69068dec6631%2Fcheese.jpg?1540228223785"
width="412" height="309" layout="responsive"></amp-img>
<amp-img src="https://cdn.glitch.com/d7f46a57-0ca4-4cca-ab0f-69068dec6631%2Fmouse.jpg?1540228223963"
width="412" height="309" layout="responsive"></amp-img>
</amp-carousel>
嵌入社交媒體
1)在head中添加
<script async
custom-element="amp-social-share"
src="https://cdn.ampproject.org/v0/amp-social-share-0.1.js">
</script>
2)在相應的位置添加
<div class="social-bar">
<amp-social-share type="email" width="44" height="44"></amp-social-share>
<amp-social-share type="linkedin" width="44" height="44"></amp-social-share>
<amp-social-share type="tumblr" width="44" height="44"></amp-social-share>
<amp-social-share type="twitter" width="44" height="44"></amp-social-share>
</div>
標簽
AMP開始的時候,它只用于為移動設備創建網頁。一個網頁將有一個AMP版本,用于移動設備,一個版本用普通HTML編寫,用于桌面(稱為“規范”版本)。然后使用標記,這樣搜索引擎就會知道兩個文檔代表相同的網頁。
因此,非AMP文檔包含指向AMP文檔的鏈接,如下所示:
<link rel="amphtml" href="https://www.site.com/amp/document.html">
AMP文檔包含一個指向非AMP文檔的鏈接,如下所示:
<link rel="canonical" href="https://www.site.com/document.html">
現在AMP功能更全面了,除非您需要在桌面頁面上添加其他功能,否則在移動和桌面上使用AMP就更容易了。這樣,你只需要維護一頁而不是兩頁!盡管如此,仍然需要。在這種情況下,只需將頁面鏈接到自身,
<link rel="canonical"
href="https://www.site.com/amp/document.html">
對所有設備使用單一AMP頁面稱為“規范AMP”
適用于移動設備和桌面設備。由于用戶可能在任何一種設備上體驗您的網頁,所以最好在開發時檢查這兩種設備上的網頁。
head中要增加
<meta name="viewport"
content="width=device-width,minimum-scale=1,initial-scale=1">
AMP中的延遲加載
“延遲加載”是指資源(圖像、數據、視頻、腳本等)在需要之前不會加載。當AMP下載資源時,它會優化下載,以便首先下載當前最重要的資源。只有當用戶可能看到圖片和廣告,或者用戶可能快速滾動到圖片和廣告時,才會下載這些圖片和廣告。這些媒體資產的等價物(而不是)之所以稱為“托管資源”,是因為它們是否以及何時加載并顯示給用戶是由AMP決定的。放大器可以在任何時候決定卸載當前用戶不可見的資源。AMP的性能優化之一要求提前宣布他們的身高。這有助于計算布局將如何以更好的方式。例如,這是至關重要的,因為AMP預加載第一個視圖中所需的所有資源,用戶在訪問網站時第一次看到的所有資源。
智能推薦
Tensorflow 實戰 Google 深度學習框架 | 學習筆記(二)
Shoot on the moon and if you miss you will still be among the stars. Caicloud Github :tensorflow-tutorialhttps://github.com/caicloud/tensorflow-tutorial 原 tutorial 使用的 Tensorflow 最新版本是 1.4.0 ,本人使用的 1....
google機器學習速成教程學習筆記
Machine Learning notes 監督式機器學習 線性回歸、訓練和損失 迭代方式降低損失 降低損失 (Reducing Loss):梯度下降法 使用TensorFlow 泛化 訓練集和測試集 驗證集 表示 特征工程 將原始數據映射到特征 良好特征的特點 清理數據 縮放特征值 處理極端離群值 分箱 清查 特征組合 特征組合的種類 組合獨熱矢量 簡化正則化 lambda 邏輯回歸 計算概率...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
猜你喜歡
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...