前端面試題(CSS篇三)

一、簡單介紹使用圖片 base64 編碼的優點和缺點。

base64是一種圖片處理格式,通過特定的算法將圖片編碼為一長串字符串,在頁面顯示的時候,可以使用該字符串來代替圖片的url屬性。

使用base64的優點:

? ? ? ? 減少一個圖片的http請求

使用base64的缺點:??

(1)根據base64的編碼原理,編碼后的大小會比原文件大小大1/3,如果把大圖片編碼到html/css中,不僅會造成文件體積的增加,影響文件的加載速度,還會增加瀏覽器對html或css文件解析渲染的時間。

(2)使用base64無法直接緩存,要緩存只能緩存包含base64的文件,比如HTML或者CSS,這相比域直接緩存圖片的效果要差很多。

(3)兼容性的問題,ie8以前的瀏覽器不支持。

對于網站的小圖標而言,可以使用base64圖片來代替。

資料參考:

《玩轉圖片 base64 編碼》icon-default.png?t=N7T8https://www.cnblogs.com/coco1s/p/4375774.html

《前端開發中,使用 base64 圖片的弊端是什么?》icon-default.png?t=N7T8https://www.zhihu.com/question/31155574

《小 tip:base64:URL 背景圖片與 web 頁面性能優化》icon-default.png?t=N7T8https://www.zhangxinxu.com/wordpress/2012/04/base64-url-image-%E5%9B%BE%E7%89%87-%E9%A1%B5%E9%9D%A2%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/

二、'display'、'position'和'float'的相互關系?

(1)首先我們判斷display屬性是否為none,如果為none,則position和float屬性的值不影響元素最后的表現。

(2)然后判斷position的值是否為absolute或者fixed,如果是,則float屬性失效,并且display的值應該被
設置為table或者block,具體轉換需要看初始轉換值。

(3)如果position的值不為absolute或者fixed,則判斷float屬性的值是否為none,如果不是,則display
的值則按上面的規則轉換。注意,如果position的值為relative并且float屬性的值存在,則relative相對
于浮動后的最終位置定位。

(4)如果float的值為none,則判斷元素是否為根元素,如果是根元素則display屬性按照上面的規則轉換,如果不是,則保持指定的display屬性值不變。

? ?總的來說,可以把它看作是一個類似優先級的機制,"position:absolute"和"position:fixed"優先級最高,有它存在
的時候,浮動不起作用,'display'的值也需要調整;其次,元素的'float'特性的值不是"none"的時候或者它是根元素的時候,調整'display'的值;最后,非根元素,并且非浮動元素,并且非絕對定位的元素,'display'特性值同設置值。

資料參考:

《position 跟 display、margincollapse、overflow、float 這些特性相互疊加后會怎么樣?》icon-default.png?t=N7T8https://www.cnblogs.com/jackyWHJ/p/3756087.html

三、margin 重疊問題的理解。

相關知識點:

塊級元素的上外邊距(margin-top)與下外邊距(margin-bottom)有時會合并為單個外邊距,這樣的現象稱為“margin合并”。

產生折疊的必備條件:margin必須是鄰接的!

而根據w3c規范,兩個margin是鄰接的必須滿足以下條件:

?必須是處于常規文檔流(非float和絕對定位)的塊級盒子,并且處于同一個BFC當中。
?沒有線盒,沒有空隙,沒有padding和border將他們分隔開
?都屬于垂直方向上相鄰的外邊距,可以是下面任意一種情況
?元素的margin-top與其第一個常規文檔流的子元素的margin-top
?元素的margin-bottom與其下一個常規文檔流的兄弟元素的margin-top
?height為auto的元素的margin-bottom與其最后一個常規文檔流的子元素的margin-bottom
?高度為0并且最小高度也為0,不包含常規文檔流的子元素,并且自身沒有建立新的BFC的元素的margin-top和margin-bottom


margin合并的3種場景:

(1)相鄰兄弟元素margin合并。

解決辦法:
?設置塊狀格式化上下文元素(BFC)

(2)父級和第一個/最后一個子元素的margin合并。

解決辦法:

對于margin-top合并,可以進行如下操作(滿足一個條件即可):
?父元素設置為塊狀格式化上下文元素;
?父元素設置border-top值;
?父元素設置padding-top值;
?父元素和第一個子元素之間添加內聯元素進行分隔。

對于margin-bottom合并,可以進行如下操作(滿足一個條件即可):
?父元素設置為塊狀格式化上下文元素;
?父元素設置border-bottom值;
?父元素設置padding-bottom值;
?父元素和最后一個子元素之間添加內聯元素進行分隔;
?父元素設置height、min-height或max-height。

(3)空塊級元素的margin合并。

解決辦法:
?設置垂直方向的border;
?設置垂直方向的padding;
?里面添加內聯元素(直接Space鍵空格是沒用的);
?設置height或者min-height。

回答:

margin重疊指的是在垂直方向上,兩個相鄰元素的margin發生重疊的情況。

一般來說可以分為四種情形:

第一種是相鄰兄弟元素的marin-bottom和margin-top的值發生重疊。這種情況下我們可以通過設置其中一個元素為BFC來解決。

第二種是父元素的margin-top和子元素的margin-top發生重疊。它們發生重疊是因為它們是相鄰的,所以我們可以通過這一點來解決這個問題。我們可以為父元素設置border-top、padding-top值來分隔它們,當然我們也可以將父元素設置為BFC來解決。

第三種是高度為auto的父元素的margin-bottom和子元素的margin-bottom發生重疊。它們發生重疊一個是因為它們相鄰,一個是因為父元素的高度不固定。因此我們可以為父元素設置border-bottom、padding-bottom來分隔它們,也可以為
父元素設置一個高度,max-height和min-height也能解決這個問題。當然將父元素設置為BFC是最簡單的方法。

第四種情況,是沒有內容的元素,自身的margin-top和margin-bottom發生的重疊。我們可以通過為其設置border、padding或者高度來解決這個問題。

四、對 BFC 規范(塊級格式化上下文:block formatting context)的理解?

相關知識點:

塊格式化上下文(Block Formatting Context,BFC)是Web頁面的可視化CSS渲染的一部分,是布局過程中生成塊級盒子的區域,也是浮動元素與其他元素的交互限定區域。

通俗來講

?BFC是一個獨立的布局環境,可以理解為一個容器,在這個容器中按照一定規則進行物品擺放,并且不會影響其它環境中的物品。
?如果一個元素符合觸發BFC的條件,則BFC中的元素布局不受外部影響。

創建BFC

(1)根元素或包含根元素的元素
(2)浮動元素float=left|right或inherit(≠none)
(3)絕對定位元素position=absolute或fixed
(4)display=inline-block|flex|inline-flex|table-cell或table-caption
(5)overflow=hidden|auto或scroll(≠visible)

回答:

BFC指的是塊級格式化上下文,一個元素形成了BFC之后,那么它內部元素產生的布局不會影響到外部元素,外部元素的布局也不會影響到BFC中的內部元素。一個BFC就像是一個隔離區域,和其他區域互不影響。

一般來說根元素是一個BFC區域,浮動和絕對定位的元素也會形成BFC,display屬性的值為inline-block、flex這些屬性時也會創建BFC。還有就是元素的overflow的值不為visible時都會創建BFC。

資料參考:

《深入理解 BFC 和 MarginCollapse》icon-default.png?t=N7T8https://www.w3cplus.com/css/understanding-bfc-and-margin-collapse.html

《前端面試題-BFC(塊格式化上下文)》icon-default.png?t=N7T8https://segmentfault.com/a/1190000013647777

五、IFC 是什么?

IFC指的是行級格式化上下文,它有這樣的一些布局規則:

(1)行級上下文內部的盒子會在水平方向,一個接一個地放置。
(2)當一行不夠的時候會自動切換到下一行。
(3)行級上下文的高度由內部最高的內聯盒子的高度決定。

資料參考:

《[譯]:BFC 與 IFC》icon-default.png?t=N7T8https://segmentfault.com/a/1190000004466536#articleHeader5

《BFC 和 IFC 的理解(布局)》icon-default.png?t=N7T8https://blog.csdn.net/paintandraw/article/details/80401741

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

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

相關文章

電腦f盤的數據回收站清空了能恢復嗎

隨著信息技術的飛速發展,電腦已成為我們日常生活和工作中不可或缺的設備。然而,數據的丟失或誤刪往往會給人們帶來極大的困擾。尤其是當F盤的數據在回收站被清空后,許多人會陷入絕望,認為這些數據已無法挽回。但事實真的如此嗎&am…

1071. 字符串的最大公因子

1071. 字符串的最大公因子 題目鏈接:1071. 字符串的最大公因子 代碼如下: class Solution { public:int gcd(int a,int b){return b0?a:gcd(b,a%b);}string gcdOfStrings(string str1, string str2) {if(str1str2!str2str1) {return ""…

WAIC 2024:科技界的搖滾狂歡,你錯過了什么?

大數據產業創新服務媒體 ——聚焦數據 改變商業 2024年7月5日,WAIC 2024舉辦的第二天。數據猿作為受邀媒體,在今天繼續親歷這一場關于未來的盛會。在這片匯聚了全球頂尖科技力量的舞臺上,見證了人工智能領域的最新成果,感受到了科…

雙人貪吃蛇代碼分享

一. snake.h #include<stdio.h> #include<stdlib.h> #include<Windows.h> #include<stdbool.h> #include<locale.h> #include<time.h> #define Pos_x1 24 #define Pos_y1 5#define Pos_x2 24 #define Pos_y2 15 #define WALL L□#define …

大學生電子設計大賽超全資料分享

超全大學生電子設計大賽項目合集免費分享 電賽競賽資料大全&#xff0c;新增競賽空間電子設計資料。包含嵌入式硬件和軟件開發的學習資料&#xff0c;包括PCB教程&#xff0c;單片機例程&#xff0c; 單片機課程設計畢業設計參考資料、項目設計方案&#xff0c;源碼和開發文檔…

分布式事務get global lock fail Xid 獲取全局鎖失敗

問題如下&#xff1a; 解決方法&#xff1a;在發生報錯的方法上添加本地事務

壓縮解壓文件工具

一、maven依賴 <dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>2.11.5</version></dependency>二、工具類 package com.summer.toolkit.util;import com.summer.toolkit.excepti…

Day05-03-Nexus倉庫

Day05-03-Nexus倉庫 05-nexus-倉庫1. 概述2. 極速部署指南2.1 下載2.2 部署2.3 配置2.4 連接使用nexus2.4 編譯與測試 3. 總結 05-nexus-倉庫 1. 概述 背景: maven編譯的時候&#xff0c;npm/cnpm編譯&#xff0c;需要下載大量的依賴包。這些依賴包在每一次構建的時候都需要使…

React 省市查詢組件完整代碼

目錄 一、地區文件 二、Antd配合使用 三、實現效果 一、地區文件 下載地址&#xff1a;全國省市區數據_JSON格式_SQL格式 export const chinaArea {0: {1: 北京,2: 天津,3: 河北省,4: 山西省,5: 內蒙古自治區,6: 遼寧省,7: 吉林省,8: 黑龍江省,9: 上海,10: 江蘇省,11: 浙…

Perl 語言入門學習指南:探索高效腳本編程的奧秘

引言 Perl&#xff0c;全稱Practical Extraction and Report Language&#xff0c;是一種功能強大的編程語言&#xff0c;特別擅長于文本處理、報告生成以及系統自動化管理任務。自1987年誕生以來&#xff0c;Perl憑借其靈活性、強大的內置功能庫和廣泛的社區支持&#xff0c;…

維護和管理LDAP之OpenDJ

目錄 基本介紹 服務專有名詞 安裝 命令行工具 密碼管理 重置管理員密碼 管理服務器進程 管理索引 如何搜索 管理索引 管理目錄數據 測試數據 導出數據 導入數據 LDIF文件數據查看和比較 數據存儲-Backends 配置連接 開啟 HTTP/HTTPS連接 使用 REST訪問 -open…

Spring AOP、Spring MVC工作原理、發展演變、常用注解

Spring AOP 概念 AOP全稱為Aspect Oriented Programming&#xff0c;表示面向切面編程。切面指的是將那些與業務無關&#xff0c;但業務模塊都需要使用的功能封裝起來的技術。 AOP基本術語 **連接點&#xff08;Joinpoint&#xff09;&#xff1a;**連接點就是被攔截到的程序執…

AQWA | 水動力分析 二階波浪力

&#x1f3c6;本文收錄于「Bug調優」專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&&…

Midjourney對圖片細微調整和下載保存

點擊v2是對第二圖片細微調整。 點擊u3對第3張圖片進行放大。 保存圖片: 對點擊u3放大的圖片&#xff0c;雙擊 , 右鍵保存圖片

停車場小程序的設計

管理員賬戶功能包括&#xff1a;系統首頁&#xff0c;個人中心&#xff0c;車主管理&#xff0c;商家管理&#xff0c;停車場信息管理&#xff0c;預約停車管理&#xff0c;商場收費管理&#xff0c;留言板管理 微信端賬號功能包括&#xff1a;系統首頁&#xff0c;停車場信息…

審核平臺前端新老倉庫遷移

背景 審核平臺接入50業務&#xff0c;提供在線審核及離線質檢、新人培訓等核心能力&#xff0c;同時提供數據報表、資源追蹤、知識庫等工具。隨著平臺的飛速發展&#xff0c;越來越多的新業務正在或即將接入審核平臺&#xff0c;日均頁面瀏覽量為百萬級別。如今審核平臺已是公司…

代碼提交錯分支了怎么辦?

你有么有遇到過正在開發的代碼&#xff0c;提交到生產環境的分支去&#xff0c;遇到這種情況怎么辦&#xff1f; 問題重現&#xff1a; 這段注釋// AAAAAAAAAAA 本來應該寫在dev分支的&#xff0c;現在提交并push到master分支了 現在第一步&#xff0c;撤回提交 第二步&…

第1章 認識 Vite

明白了&#xff0c;這里是第1章內容的詳細展開版本&#xff1a; 第1章 認識 Vite 1 . 什么是 Vite Vite 是一個由尤雨溪&#xff08;Vue.js 的創始人&#xff09;開發的前端構建工具&#xff0c;旨在提供極快的開發體驗。Vite 的名字來源于法語&#xff0c;意為“快速”&…

python繪制一維離散點

在Python中&#xff0c;繪制一維離散點通常意味著我們要在一條直線上標記出幾個特定的點。這可以通過多種庫來實現&#xff0c;但最常見和強大的庫之一是matplotlib。以下是一個詳細的代碼示例&#xff0c;它展示了如何使用matplotlib庫來繪制一維離散點&#xff0c;并且這個示…

C++語言常見錯誤分析匯總

在一個工程里出現兩個main函數時 3.obj : error LNK2005: _main already defined in file1.obj Debug/HELLO.exe : fatal error LNK1169: one or more multiply defined symbols found 這個就是說&#xff0c;你的main函數重定義了。你看看是不是你的工程里面&#xff0c;包…