鑰匙要點
- >重新創建Google的圖像搜索佈局涉及為圖像創建基本的HTML結構,使用CSS造型以及使用JavaScript添加功能。 此過程中使用的密鑰CSS屬性包括顯示,網格 - 板塊列,網格差距和對象擬合。這些屬性有助於創建網格佈局,指定列的數量和大小,設置網格單元之間的間隙,並決定如何調整圖像以安裝其容器。
- 可以定制佈局以滿足個人需求。這包括更改網格中的列的數量和大小,網格單元之間的間隙以及圖像的大小。還可以添加其他CSS屬性以進行進一步的自定義。 > 可以使用JavaScript添加到圖像中的功能。其中的示例包括將事件偵聽器添加到單擊時打開較大版本的圖像中,並添加諸如圖像過濾或排序之類的功能。
- 可以通過使用CSS中的媒體查詢來響應佈局。這些允許根據用戶屏幕的大小應用不同的樣式,以確保在所有設備上正確顯示圖像。
- >
- >在我最近參與的一個項目中,我被要求重新創建Google的圖像搜索擴展功能,類似於下面顯示的屏幕截圖,但以剛性網格格式。
>我的直接反應是,我需要使用JavaScript來設置一些佈局和框模型屬性,我總是不願意做的,並且只能作為最後的手段做。由於有一個已經有效的例子,我決定打開開發人員工具以查看Google的方式(為什麼要重新發明輪子,對呢?)
)
事實證明,Google將結構分為兩個Divs,一個DIV包含所有圖像單元,而另一個DIV則用於擴展區域。單擊圖像(並擴展)後,JavaScript插入了單擊Div行中的最後一個圖像單元格之後的隔離器div。 JavaScript將其高度設置為與擴展的Div相同,並將擴展的Div完全定位為Spacer Div所佔據的位置。這很聰明,但由於對JavaScript的嚴重依賴而不是理想的。 >
基本標記
首先,我們需要與每個.image__cell一起構造.Image-Grid容器。這是html:
<span><span><span><section> class<span>="image-grid"</span>></section></span> </span> <span><span><span><div> class<span>="image__cell is-collapsed"</span>> <span><span><span><div> class<span>="image--basic"</span>> <span><span><span><a> href<span>="#expand-jump-1"</span>></a></span> </span> <span><span><span><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174002563740184.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="使用CSS重新創建Google Images搜索佈局" > id<span>="expand-jump-1"</span> </span></span><span> <span>class<span>="basic__img"</span> </span></span><span> <span>src<span>="https://lorempixel.com/250/250/fashion/1"</span> alt<span>="Fashion 1"</span>></span> </span> <span><span><span></span>></span> </span> <span><span><span><div> class<span>="arrow--up"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span></span></span></span></span> </div></span>></span> </span> <span><span><span><div> class<span>="image--expand"</span>> <span><span><span><a> href<span>="#close-jump-1"</span> class<span>="expand__close"</span>></a></span><span><span></span>></span> </span> <span><span><span><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174002563740184.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="使用CSS重新創建Google Images搜索佈局" > class<span>="image--large"</span> </span></span><span> <span>src<span>="https://lorempixel.com/400/400/fashion/1"</span> alt<span>="Fashion 1"</span>></span> </span> <span><span><span></span></span></span></span></span> </div></span>></span> </span> <span><span><span></span></span></span> </div></span>></span> </span> ... <span><span><span></span>></span></span></span>
上面的標記包含一個示例。圖像細胞元素,需要為網格中的每個圖像重複。請注意#Close-Jump-1和#Expand-Jump-1的標識符,隨後的HREF屬性將需要是.image__cell唯一的。哈希鏈接,例如:href =“#Expand-jump-1”使瀏覽器在按下時可以跳到活動的圖像單元格。
>> CSS
首先,我們應用盒子尺寸:Border-Box;對於所有元素,包括:之前和:使用通用選擇器後的偽元素之後。這將允許輕鬆處理將百分比寬度與固定填充值混合在一起的元素,因為它結合了它們。
<span>/* apply a natural box layout model to all elements, </span><span> but allowing components to change */ </span> <span>html { </span> <span>box-sizing: border-box; </span><span>} </span> <span>*<span>, *:before, *:after</span> { </span> <span>box-sizing: inherit; </span><span>}</span>
.Image-Grid元素被給出一個clearfix溢出:隱藏;基於圖像單元格的浮標來維護佈局。
<span><span>.image-grid</span> { </span> <span>width: 100%; </span> <span>max-width: 1310px; </span> <span>margin: 0 auto; </span> <span>overflow: hidden; </span> <span>padding: 10px 5px 0; </span><span>} </span> <span><span>.image__cell</span> { </span> <span>float: left; </span> <span>position: relative; </span> <span>width: 20%; </span><span>} </span> <span><span>.image--basic</span> { </span> <span>padding: 0 5px; </span><span>} </span> <span><span>.basic__img</span> { </span> <span>display: block; </span> <span>max-width: 100%; </span> <span>height: auto; </span> <span>margin: 0 auto; </span><span>} </span> <span><span>.image__cell.is-collapsed .arrow--up</span> { </span> <span>display: block; </span> <span>height: 10px; </span> <span>width: 100%; </span><span>} </span> <span><span>.image--large</span> { </span> <span>max-width: 100%; </span> <span>height: auto; </span> <span>display: block; </span> <span>padding: 40px; </span> <span>margin: 0 auto; </span> <span>box-sizing: border-box; </span><span>}</span>
給出的圖像單元的寬度等於100除以每行的數量,表示為百分比。在此示例中,每排有5個項目,這意味著每個.image__cell寬度為20%。
請注意:填充:10px 5px 0;應用於.Image-Grid與填充結合:0 5px;圖像- 基礎和高度:10px; on .image__cell.is-collapsed .arrow- up在瓷磚圖像周圍給出相等的窗框效果。我們可以通過更改這些值來增加圖像之間的差距。
最後,給出了.basic__img映像元素顯示:block;防止任何間距問題。 themax寬度:100%;和身高:自動;聲明使圖像能夠擴展到其容器的寬度,而不超過其自身的寬度。 以下CSS為可擴展區域提供了佈局。
以下是從上述代碼中取出的一些註釋:
<span><span>.image__cell.is-collapsed .image--basic</span> { </span> <span>cursor: pointer; </span><span>} </span> <span><span>.image__cell.is-expanded .image--expand</span> { </span> <span>max-height: 500px; </span> <span>margin-bottom: 10px; </span><span>} </span> <span><span>.image--expand</span> { </span> <span>position: relative; </span> <span>left: -5px; </span> <span>padding: 0 5px; </span> <span>box-sizing: content-box; </span> <span>overflow: hidden; </span> <span>background: #222; </span> <span>max-height: 0; </span> <span>transition: max-height .3s ease-in-out, </span> margin-bottom <span>.1s .2s; </span> <span>width: 500%; </span><span>}</span>從視覺上講,
>
,我們希望擴展區域與.Image-Grid對齊。為此,我們需要否定.image-Grid元素中設置的水平填充。- 首先,.image-Expand給出盒子尺寸:content-box;要從其寬度中排除填充值。 .Image-expand元素的寬度為500%。這使擴展的區域可以佔據.Image-Grid的整個寬度,減去填充。
- 佔據剩餘空間,左右給出了5px填充。 >
- 位置:相對;左:-5PX聲明將擴展的區域移到左側,以否定了.image-Grid padding-left值。
>我們想將所有圖像 - expent元素轉移到最左邊的元素,以與.Image-Grid的左側對齊。為此,我們根據其在行中的位置設置負餘量。
>這是nthtype的地方:
>>最初,我使用nth-child實現了相同的效果,但是在其他項目上,我發現ios8 Safari對此很易於故障,因此我嘗試避免使用它。取而代之的是,我使用ntype,因為它在很大程度上具有相同的目的。如果您有興趣,可以在此處找到對ntype的簡短說明 在上述CSS中,我們針對每行的第二,第三和第四。左側值也取決於該元素在行中的位置。請注意,每行的第一個元素不需要左側值集,因為它已經處於所需位置。元素距離左側越遠,我們需要將可擴展區域推回左側(以-100%為增量)。如果不執行此操作,可擴展區域將與其父母保持一致,如下所示:
<span><span><span><section> class<span>="image-grid"</span>></section></span> </span> <span><span><span><div> class<span>="image__cell is-collapsed"</span>> <span><span><span><div> class<span>="image--basic"</span>> <span><span><span><a> href<span>="#expand-jump-1"</span>></a></span> </span> <span><span><span><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174002563740184.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="使用CSS重新創建Google Images搜索佈局" > id<span>="expand-jump-1"</span> </span></span><span> <span>class<span>="basic__img"</span> </span></span><span> <span>src<span>="https://lorempixel.com/250/250/fashion/1"</span> alt<span>="Fashion 1"</span>></span> </span> <span><span><span></span>></span> </span> <span><span><span><div> class<span>="arrow--up"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span></span></span></span></span> </div></span>></span> </span> <span><span><span><div> class<span>="image--expand"</span>> <span><span><span><a> href<span>="#close-jump-1"</span> class<span>="expand__close"</span>></a></span><span><span></span>></span> </span> <span><span><span><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174002563740184.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="使用CSS重新創建Google Images搜索佈局" > class<span>="image--large"</span> </span></span><span> <span>src<span>="https://lorempixel.com/400/400/fashion/1"</span> alt<span>="Fashion 1"</span>></span> </span> <span><span><span></span></span></span></span></span> </div></span>></span> </span> <span><span><span></span></span></span> </div></span>></span> </span> ... <span><span><span></span>></span></span></span>>
>我們還需要插入下面顯示的CSS,以確保每行的第一個.image__ cell(除第一行)時,在較早的.image__cell元素被擴展時會堅持其位置。
>
首先,向上點箭頭指示展開的塊屬於哪個圖像:
<span>/* apply a natural box layout model to all elements, </span><span> but allowing components to change */ </span> <span>html { </span> <span>box-sizing: border-box; </span><span>} </span> <span>*<span>, *:before, *:after</span> { </span> <span>box-sizing: inherit; </span><span>}</span>請注意,箭頭樣式是通過創建CSS三角形來實現的,從而保存HTTP請求。通過巧妙地使用邊界並將高度和寬度設置為0,很容易實現此效果。
>我們還希望僅在擴展.image__cell元素時出現箭頭。這是通過添加.IS擴展類來完成的。最後,我們希望箭頭保留在.image__cell元素的水平中心中,所以餘量:0自動;應用。
>現在,我們準備好樣式的“關閉”按鈕,該按鈕將允許用戶關閉擴展的區域。
<span><span><span><section> class<span>="image-grid"</span>></section></span> </span> <span><span><span><div> class<span>="image__cell is-collapsed"</span>> <span><span><span><div> class<span>="image--basic"</span>> <span><span><span><a> href<span>="#expand-jump-1"</span>></a></span> </span> <span><span><span><img alt="使用CSS重新創建Google Images搜索佈局" > id<span>="expand-jump-1"</span> </span></span><span> <span>class<span>="basic__img"</span> </span></span><span> <span>src<span>="https://lorempixel.com/250/250/fashion/1"</span> alt<span>="Fashion 1"</span>></span> </span> <span><span><span></span>></span> </span> <span><span><span><div> class<span>="arrow--up"</span>><span><span></span></span> </div></span>></span> </span> <span><span><span></span></span></span></span></span> </div></span>></span> </span> <span><span><span><div> class<span>="image--expand"</span>> <span><span><span><a> href<span>="#close-jump-1"</span> class<span>="expand__close"</span>></a></span><span><span></span>></span> </span> <span><span><span><img alt="使用CSS重新創建Google Images搜索佈局" > class<span>="image--large"</span> </span></span><span> <span>src<span>="https://lorempixel.com/400/400/fashion/1"</span> alt<span>="Fashion 1"</span>></span> </span> <span><span><span></span></span></span></span></span> </div></span>></span> </span> <span><span><span></span></span></span> </div></span>></span> </span> ... <span><span><span></span>></span></span></span>
>請注意,通過使用A:偽元素之前,我們能夠在頁面上插入一個“×”字符,而不會出現在DOM中,再次保存至少一個HTTP請求。插入的特殊字符是Boostrap也使用的乘法字符。
jQuery>最後,下面的jQuery簡單地在每個圖像單元格和關閉按鈕的單擊時在.is擴展和.is collaps的類之間切換。
當然,您可以通過使用'classList()和其他本機技術可以輕鬆地避免使用jQuery,但是除非您願意多填充,否則您不會得到深度瀏覽器的支持。
使網格響應<span>/* apply a natural box layout model to all elements, </span><span> but allowing components to change */ </span> <span>html { </span> <span>box-sizing: border-box; </span><span>} </span> <span>*<span>, *:before, *:after</span> { </span> <span>box-sizing: inherit; </span><span>}</span>
>在較小設備上的每行上有5個圖像單元格是不理想的,因此我們能夠使用媒體查詢更改每行的數量。例如,以下CSS將其減少為每排2張圖像。
>為了防止較早應用的CSS與每行5個項目有關,我們將需要重置這些值或提取屬性並將其放置在其自己的媒體查詢中,該查詢是在下面的Codepen中完成的,以及先前的代碼。
<span><span>.image-grid</span> { </span> <span>width: 100%; </span> <span>max-width: 1310px; </span> <span>margin: 0 auto; </span> <span>overflow: hidden; </span> <span>padding: 10px 5px 0; </span><span>} </span> <span><span>.image__cell</span> { </span> <span>float: left; </span> <span>position: relative; </span> <span>width: 20%; </span><span>} </span> <span><span>.image--basic</span> { </span> <span>padding: 0 5px; </span><span>} </span> <span><span>.basic__img</span> { </span> <span>display: block; </span> <span>max-width: 100%; </span> <span>height: auto; </span> <span>margin: 0 auto; </span><span>} </span> <span><span>.image__cell.is-collapsed .arrow--up</span> { </span> <span>display: block; </span> <span>height: 10px; </span> <span>width: 100%; </span><span>} </span> <span><span>.image--large</span> { </span> <span>max-width: 100%; </span> <span>height: auto; </span> <span>display: block; </span> <span>padding: 40px; </span> <span>margin: 0 auto; </span> <span>box-sizing: border-box; </span><span>}</span>>請參閱codepen上的sitepoint(@sitepoint)在CSS中的Pen Google Images搜索。
請注意,包含單元的功能,該功能吐出了50個圖像單元,以節省我的困擾。
對於Sass Lovers
>我不想排除在撰寫本文時不使用Sass的讀者,但我也不想打折。該項目將自己作為開發中的Sass的絕佳用例,因為每行的數量與許多不同的屬性有關。
請參閱以下替代Codepen演示。請注意,在該演示中,我正在使用CSS頂部的SASS變量,這使我可以指定圖像,最大圖像寬度以及每行的最小圖像和最大圖像之間的差距。使用各種計算,SASS將根據提供的選項將其編譯為CSS。它將根據每行的最大項目數自動計算最佳媒體查詢,這將使圖像保持在其最大維度之內。此SASS版本是實驗性的,但是請讓我知道,如果您注意到常規版本或SASS版本中的任何錯誤或潛在的代碼改進。
>經常詢問的問題(常見問題解答)有關使用CSS
重新創建Google Images搜索佈局>如何使用CSS?
>使用CSS重新創建Google Images搜索佈局的Google Images搜索佈局涉及幾個步驟。首先,您需要為圖像創建基本的HTML結構。這包括為每個圖像創建一個DIV並為其分配一個類。接下來,您需要使用CSS對這些Div進行樣式,以模仿Google Images的佈局。這涉及設置DIV的寬度和高度及其在頁面上的位置。您還可以使用CSS向圖像添加懸停效果。最後,您可以使用JavaScript將功能添加到圖像中,例如單擊圖像時打開較大版本的圖像。
>>用於重新創建Google Images佈局的鍵CSS屬性是什麼?
>用於重新創建Google Images佈局的密鑰CSS屬性包括顯示,網格 - 板塊柱,網格差距和對象擬合。顯示屬性設置為網格以創建網格佈局。網格 - 板柱屬性用於指定網格中列的數量和大小。網格間隙特性用於設置網格單元之間的間隙。對象擬合屬性用於指定應如何調整圖像以適合其容器。>
>我可以自定義佈局以滿足我自己的需求嗎?滿足您自己的需求。您可以更改網格中的列的數量和大小,網格單元之間的間隙和圖像的大小。您還可以添加其他CSS屬性來進一步自定義佈局,例如向圖像添加邊框或陰影。>
>如何將功能添加到圖像?>您可以在使用JavaScript的圖像。例如,您可以將事件偵聽器添加到單擊圖像時打開較大版本的圖像。您還可以添加功能,例如過濾或對圖像進行排序。
>為什麼我的佈局看起來不像Google Images Leatout?
如果您的佈局看起來不像Google Images的佈局,則可以在是幾個原因。首先,確保您正確實現了CSS屬性。其次,檢查您的圖像是否具有相同的縱橫比。 Google圖像使用相同縱橫比的圖像創建統一的佈局。如果您的圖像具有不同的縱橫比,則佈局可能看起來不會相同。
>>如何使我的佈局響應?
>>您可以通過在CSS中使用媒體查詢來使佈局響應能力。媒體查詢允許您根據用戶屏幕的大小應用不同的樣式。例如,您可以更改較小屏幕上網格中的列數,以確保圖像仍然正確顯示。
>我可以將此佈局用於其他類型的內容,而不僅僅是圖像?您可以使用它顯示文本,視頻或任何其他類型的內容。只需確保相應地調整CSS屬性以適合您顯示的內容的類型即可。
>>如何在圖像中添加懸停效果? :CSS中的懸停偽級。例如,當用戶徘徊在其上時,您可以更改圖像的邊框顏色,也可以顯示有關圖像的其他信息。
>為什麼我的圖像不正確地擬合在網格單元格中?
如果您的圖像在網格單元中不正確擬合,則可能是因為圖像的縱橫比與網格單元的縱橫比不同。您可以通過使用CSS中的對象擬合屬性來修復此操作,以指定應如何調整圖像以適合其容器。>
>我可以使用WordPress(例如WordPress)的CMS使用此佈局?是的,您可以將此佈局與WordPress這樣的CMS使用。您需要將CSS添加到主題的樣式。 CSS文件和HTML中,將CSS添加到適當的模板文件中。您可能還需要添加一些PHP代碼以動態生成圖像的HTML,具體取決於如何設置WordPress網站。以上是使用CSS重新創建Google Images搜索佈局的詳細內容。更多資訊請關注PHP中文網其他相關文章!

中国女性科技力量在AI领域的崛起:荣耀与DeepSeek合作背后的女性故事女性在科技领域的贡献日益显著。中国科技部数据显示,女性科技工作者数量庞大,在AI算法开发中展现出独特的社会价值敏感性。本文将聚焦荣耀手机,探究其率先接入DeepSeek大模型背后的女性团队力量,展现她们如何推动科技进步,重塑科技发展价值坐标系。2024年2月8日,荣耀正式上线DeepSeek-R1满血版大模型,成为安卓阵营首家接入DeepSeek的厂商,引发用户热烈反响。这一成功背后,女性团队成员在产品决策、技术攻坚和用户

DeepSeek公司在知乎發布技術文章,詳細介紹了其DeepSeek-V3/R1推理系統,並首次公開關鍵財務數據,引發業界關注。文章顯示,該系統單日成本利潤率高達545%,創下全球AI大模型盈利新高。 DeepSeek的低成本策略使其在市場競爭中佔據優勢。其模型訓練成本僅為同類產品的1%-5%,V3模型訓練成本僅為557.6萬美元,遠低於競爭對手。同時,R1的API定價僅為OpenAIo3-mini的1/7至1/2。這些數據證明了DeepSeek技術路線的商業可行性,也為AI大模型的高效盈利樹立了

網站建設只是第一步:SEO與反向鏈接的重要性 建立網站只是將其轉化為寶貴營銷資產的第一步。您需要進行SEO優化,以提高網站在搜索引擎中的可見度,吸引潛在客戶。反向鏈接是提升網站排名的關鍵,它向谷歌和其他搜索引擎表明您的網站權威性和可信度。 並非所有反向鏈接都有利:識別並避免有害鏈接 並非所有反向鏈接都有益。有害鏈接會損害您的排名。優秀的免費反向鏈接檢查工具可以監控鏈接到您網站的來源,並提醒您注意有害鏈接。此外,您還可以分析競爭對手的鏈接策略,從中學習借鑒。 免費反向鏈接檢查工具:您的SEO情報員

美的即将发布搭载DeepSeek大模型的首款空调——美的鲜净感空气机T6,发布会定于3月1日下午1点30分举行。这款空调配备先进的空气智驾系统,可根据环境智能调节温度、湿度和风速等参数。更重要的是,它集成了DeepSeek大模型,支持超过40万条AI语音指令。美的此举引发业界热议,尤其关注白电产品与大模型结合的意义。不同于传统空调简单的温度设定,美的鲜净感空气机T6能够理解更复杂、更模糊的指令,并根据家庭环境智能调节湿度等,显著提升用户体验。

DeepSeek-R1賦能百度文庫與網盤:深度思考與行動的完美融合短短一個月內,DeepSeek-R1已迅速融入眾多平台。百度憑藉大膽的戰略佈局,將DeepSeek作為第三方模型夥伴,整合進自身生態系統,這標誌著其“大模型 搜索”生態戰略的重大進展。百度搜索和文心智能體平台率先接入DeepSeek及文心大模型的深度搜索功能,為用戶提供免費的AI搜索體驗。同時,“百度一下,你就知道”的經典slogan回歸,新版百度APP也整合了文心大模型和DeepSeek的能力,推出“AI搜索”、“全網信息提煉”

此基於GO的網絡漏洞掃描儀有效地確定了潛在的安全弱點。 它利用了GO的並發功能的速度功能,包括服務檢測和漏洞匹配。讓我們探索它的能力和道德

AI及時的代碼生成工程:開發人員指南代碼開發的景觀已準備好進行重大轉變。 掌握大型語言模型(LLM)和及時工程對於未來幾年對開發人員至關重要。 Th


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版
好用的JavaScript開發工具

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

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器