整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS 面試題:CSS的權重與優先級

          對 CSS 的權重和優先級了解嗎? 可以簡單說下 。

          我們的回答可以通過以下方式來回答:

          1. 權重:

          1. 權重概念:
             1. 權重, 是一個相對的概念, 是針對某一指標而言; 某一指標的權重是指該指標在整體評價中的相對重要程度 。
          2. CSS權重 指的是 css 選擇器的優先級, 優先級高的 css 樣式會覆蓋優先級低的 css 樣式, 優先級越高說明權重越高, 反之亦然 。

          2. 優先級:

          1. css優先級規則:
             1. css 選擇規則的權值不同時, 權值高的優先;
             2. css 選擇規則的權值相同時, 后定義的規則優先;
             3. css 屬性后面加 !important 時, 無條件絕對優先;
          
          2. 權值的計算:
             1. 第一等級: 代表 內聯樣式; 如 style="", 權值為 1,0,0,0 。
             2. 第二等級: 代表 ID選擇器; 如 #id="", 權值為 0,1,0,0 。
             3. 第三等級: 代表 calss | 偽類 | 屬性 選擇器; 如 .class | :hover,:link,:target | [type], 權值 0,0,1,0 。
             4. 第四等級: 代表 標簽 | 偽元素 選擇器; 如 p | ::after, ::before, ::fist-inline, ::selection, 權值 0,0,0,1 。
             5. 通用選擇器 (\*), 子選擇器(>), 相鄰同胞選擇器(+) 等選擇器不在4等級之內, 所以它們的權值都為 0,0,0,0 。
          
          3. 權值計算公式:
             1. 權值 = 第一等級選擇器\*個數, 第二等級選擇器\*個數, 第三等級選擇器\*個數, 第四等級選擇器\*個數 。
          
          4. 權值比較規則:
             1. 當兩個權值進行比較的時候, 是從高到低逐級將等級位上的權重值(如 權值 1,0,0,0 對應--> 第一等級權重值, 第二等級權重值, 第三等級權重值, 第四等級權重值)來進行比較的, 而不是簡單的 1000\*個數 + 100\*個數 + 10\*個數 + 1\*個數 的總和來進行比較的, 換句話說, 低等級的選擇器, 個數再多也不會越等級超過高等級的選擇器的優先級的;
             2. 總結比較經驗:
                1. 先從高等級進行比較, 高等級相同時, 再比較低等級的, 以此類推 。
                2. 完全相同的話, 就采用 后者優先原則(也就是樣式覆蓋) 。
                3. css 屬性后面加 !important 時, 無條件絕對優先(比內聯樣式還要優先) 。
          
          5. 選擇器的優先級(繼承不如指定):
             1. css 屬性 !important
             2. 內聯樣式
             3. ID 選擇器(#id)
             4. 類選擇器(.class) = 偽類選擇器(:hover等) = 屬性選擇器[type等]
             5. 元素選擇器(p等) = 偽元素選擇器(:after/:before/::selection等)
             6. 通用選擇器(\*)
             7. 繼承的樣式
                       

          之前有整理過部分知識點, 現在將整理的相關內容, 驗證之后慢慢分享給大家; 這個專題是 "前端面試題" 的相關專欄; 大概會有200+的文章。

          如果對大家有所幫助,可以點個關注、點個贊; 文章會持續打磨 。

          有什么想要了解的前端知識, 可以在評論區留言, 會及時分享所相關內容 。

          ,介紹一下標準的CSS的盒子模型?低版本IE的盒子模型有什么不同的?

          (1)有兩種, IE 盒子模型、W3C 盒子模型;
          (2)盒模型: 內容(content)、填充(padding)、邊界(margin)、 邊框(border);
          (3)區 別: IE的content部分把 border 和 padding計算了進去;

          2,CSS選擇符有哪些?哪些屬性可以繼承?

          * 1.id選擇器( # myid)
          2.類選擇器(.myclassname)
          3.標簽選擇器(div, h1, p)
          4.相鄰選擇器(h1 + p)
          5.子選擇器(ul > li)
          6.后代選擇器(li a)
          7.通配符選擇器( * )
          8.屬性選擇器(a[rel = "external"])
          9.偽類選擇器(a:hover, li:nth-child)
          * 可繼承的樣式: font-size font-family color, UL LI DL DD DT;
          * 不可繼承的樣式:border padding margin width height ;

          3,CSS優先級算法如何計算?

          * 優先級就近原則,同權重情況下樣式定義最近者為準;
          * 載入樣式以最后載入的定位為準;
          優先級為:
          !important > id > class > tag
          important 比 內聯優先級高

          4,CSS3新增偽類有那些?

          舉例:
          p:first-of-type 選擇屬于其父元素的首個 <p> 元素的每個 <p> 元素。
          p:last-of-type 選擇屬于其父元素的最后 <p> 元素的每個 <p> 元素。
          p:only-of-type 選擇屬于其父元素唯一的 <p> 元素的每個 <p> 元素。
          p:only-child 選擇屬于其父元素的唯一子元素的每個 <p> 元素。
          p:nth-child(2) 選擇屬于其父元素的第二個子元素的每個 <p> 元素。
          :after 在元素之前添加內容,也可以用來做清除浮動。
          :before 在元素之后添加內容
          :enabled
          :disabled 控制表單控件的禁用狀態。
          :checked 單選框或復選框被選中。

          5,如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?

          給div設置一個寬度,然后添加margin:0 auto屬性

          居中一個浮動元素

          確定容器的寬高 寬500 高 300 的層

          設置層的外邊距

          讓絕對定位的div居中

          6,display有哪些值?說明他們的作用。

          block 象塊類型元素一樣顯示。
          none 缺省值。象行內元素類型一樣顯示。
          inline-block 象行內元素一樣顯示,但其內容象塊類型元素一樣顯示。
          list-item 象塊類型元素一樣顯示,并添加樣式列表標記。
          table 此元素會作為塊級表格來顯示
          inherit 規定應該從父元素繼承 display 屬性的值

          7,position的值relative和absolute定位原點是?

          absolute 生成絕對定位的元素,相對于值不為 static的第一個父元素進行定位。
          fixed (老IE不支持) 生成絕對定位的元素,相對于瀏覽器窗口進行定位。
          relative 生成相對定位的元素,相對于其正常位置進行定位。
          static 默認值。沒有定位,元素出現在正常的流中(忽略 top, bottom, left, right z-index 聲明)。
          inherit 規定從父元素繼承 position 屬性的值。

          8,CSS3有哪些新特性?

          新增各種CSS選擇器 (: not(.input):所有 class 不是“input”的節點)
          圓角 (border-radius:8px)
          多列布局 (multi-column layout)
          陰影和反射 (Shadow\Reflect)
          文字特效 (text-shadow、)
          文字渲染 (Text-decoration)
          線性漸變 (gradient)
          旋轉 (transform)
          增加了旋轉,縮放,定位,傾斜,動畫,多背景
          transform:\scale(0.85,0.90)\ translate(0px,-30px)\ skew(-9deg,0deg)\Animation:

          9,用純CSS創建一個三角形的原理是什么?

          把上、左、右三條邊隱藏掉(顏色設為 transparent)

          10,一個滿屏 品 字布局 如何設計?

          簡單的方式:
          上面的div寬100%,
          下面的兩個div分別寬50%,
          然后用float或者inline使其不換行即可

          11,li與li之間有看不見的空白間隔是什么原因引起的?有什么解決辦法?

          行框的排列會受到中間空白(回車\空格)等的影響,因為空格也屬于字符,這些空白也會被應用樣式,占據空間,所以會有間隔,把字符大小設為0,就沒有空格了。

          12,為什么要初始化CSS樣式。

          - 因為瀏覽器的兼容問題,不同瀏覽器對有些標簽的默認值是不同的,如果沒對CSS初始化往往會出現瀏覽器之間的頁面顯示差異。
          - 當然,初始化樣式會對SEO有一定的影響,但魚和熊掌不可兼得,但力求影響最小的情況下初始化。
          最簡單的初始化方法: * {padding: 0; margin: 0;} (強烈不建議)
          淘寶的樣式初始化代碼:
          body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
          body, button, input, select, textarea { font:12px/1.5tahoma, arial, b8bf53; }
          h1, h2, h3, h4, h5, h6{ font-size:100%; }
          address, cite, dfn, em, var { font-style:normal; }
          code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
          small{ font-size:12px; }
          ul, ol { list-style:none; }
          a { text-decoration:none; }
          a:hover { text-decoration:underline; }
          sup { vertical-align:text-top; }
          sub{ vertical-align:text-bottom; }
          legend { color:#000; }
          fieldset, img { border:0; }
          button, input, select, textarea { font-size:100%; }
          table { border-collapse:collapse; border-spacing:0; }

          13,absolute的containing block(容器塊)計算方式跟正常流有什么不同?

          無論屬于哪種,都要先找到其祖先元素中最近的 position 值不為 static 的元素,然后再判斷:
          1、若此元素為 inline 元素,則 containing block 為能夠包含這個元素生成的第一個和最后一個 inline box 的 padding box (除 margin, border 外的區域) 的最小矩形;
          2、否則,則由這個祖先元素的 padding box 構成。
          如果都找不到,則為 initial containing block。
          補充:
          1. static(默認的)/relative:簡單說就是它的父元素的內容框(即去掉padding的部分)
          2. absolute: 向上找最近的定位為absolute/relative的元素
          3. fixed: 它的containing block一律為根元素(html/body),根元素也是initial containing block

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

          (W3C CSS 2.1 規范中的一個概念,它是一個獨立容器,決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用。)
          一個頁面是由很多個 Box 組成的,元素的類型和 display 屬性,決定了這個 Box 的類型。
          不同類型的 Box,會參與不同的 Formatting Context(決定如何渲染文檔的容器),因此Box內的元素會以不同的方式渲染,也就是說BFC內部的元素和外部的元素不會互相影響。
          創建規則:
          根元素
          浮動元素(float不是none)
          絕對定位元素(position取值為absolute或fixed)
          display取值為inline-block,table-cell, table-caption,flex, inline-flex之一的元素
          overflow不是visible的元素
          作用:
          可以包含浮動元素
          不被浮動元素覆蓋
          阻止父子元素的margin折疊

          15,css定義的權重

          以下是權重的規則:標簽的權重為1,class的權重為10,id的權重為100,以下例子是演示各種定義的權重值:
          /*權重為1*/ div{}
          /*權重為10*/ .class1{}
          /*權重為100*/ #id1{}
          /*權重為100+1=101*/ #id1 div{}
          /*權重為10+1=11*/ .class1 div{}
          /*權重為10+10+1=21*/ .class1 .class2 div{}
          如果權重相同,則最后定義的樣式會起作用,但是應該避免這種情況出現

          16,移動端的布局用過媒體查詢嗎?

          css的媒體查詢允許通過@media標簽為特定媒體的瀏覽器設定樣式,其中包含眾多篩選,功能強大。

          17,使用 CSS 預處理器嗎?喜歡那個?

          SASS (SASS、LESS沒有本質區別,只因為團隊前端都是用的SASS)

          18,CSS優化、提高性能的方法有哪些?

          將樣式表放到頁面頂部
          不使用CSS表達式
          不使用@import
          不使用IE的Filter

          19,在網頁中的應該使用奇數還是偶數的字體?為什么呢?

          應該是用偶數字體。原因:

          像谷歌一些比較流行的瀏覽器一般會有個默認的最小字體,而且對奇數字體渲染的不太好看

          20,元素豎向的百分比設定是相對于容器的高度嗎?

          是的,元素的百分比設置一般是根據父級元素的寬高決定的,如果父級元素沒有寬高百分比是不起作用的

          端面試題目會根據面試者的經歷、崗位要求和面試官本身等因素而變化。大前端背景下,每個領域 1-2 個問題成為了更常見的面試提問規則。面試者的回答往往會影響面試官對其在這個領域的技術評價。

          如果無話可答,則意味著一個領域沒有分數,如果這個領域是崗位的必要項,便會直接影響面試結果。于是,面試者總是希望,盡可能地多答上題目,怎么才能做到這點呢?

          • 第一,基礎,包括原理,語言特性,設計模式,算法和數據結構,網絡協議等。當我們可以從設計者或架構者的角度來看待一門語言、框架、協議時,即使不知道某個特性、用法,依然有可能類比推敲出答案。
          • 第二,積累。前端技術發展極快,規范、語言、框架、工具、思想日新月異,關注相關更新,特別是我們正在使用的技術棧的變化,廣度可以跨越經歷的局限,讓自己滿足更多崗位的要求。
          • 第三,引導。一方面,通過簡歷中技術熟練程度、項目和工作經歷描述,擅長的要突出,不會的可以不寫。另一方面,問題完全不會時,可以征詢面試官意見,引導至我們會的問題。例如,XX 我不了解,但 XX 與之原理相同,我可以介紹一下嗎?問題非常會時,可以引導面試官進一步提問。例如,XX 可以繼續優化。

          需要注意的是:

          多答不是硬答。確實不會,大方承認,盡快進入下個問題,能減少對面試官主觀上的影響。反之,完全不沾邊,甚至錯誤的回答容易減少印象分。

          多答不是嘮叨。會的題目,應該答出盡可能多的得分點,除非面試官追問,請避免在一個得分點上展開過多,讓面試官有更多時間提新問題,考核完全部領域,面試者也能有更多展示機會。

          常見考點

          了解了前端面試的基本原則,可以進入實戰準備階段了。對此,我們按照語言,將常見考點的基礎知識結構整理了出來,幫助扣友們梳理知識結構,快速查漏補缺。

          高頻題測試

          學海無涯「題」作舟,用一些題目來練習一下吧。下面的這些前端面試高頻題,你都能答得出來嗎?

          Q:CSS 優先級規則是什么?

          選擇器與元素的相關度越高,優先級越高,具體規則如下:

          開發者定義選擇器 > 用戶定義選擇器 > 瀏覽器默認選擇器

          內聯樣式( style="" ) > 內( <style> )、外部樣式( <link/>

          ID 選擇器 > 類選擇器、屬性選擇器、偽類選擇器 > 類型選擇器、偽元素選擇器

          相同優先級,書寫順序后 > 前

          同級選擇器,復合選擇器 > 單選擇器

          自身的選擇器 > 繼承自父級的選擇器

          用戶配置 !important 聲明 > 開發者 !important 聲明 > 其它

          Q:什么是重排和重繪?

          當DOM的樣式或內容會被修改時,將觸發重新渲染。除了屬性值計算、單位換算外,渲染主要分為三個步驟:

          • 布局:計算盒模型的位置,大小
          • 繪制:填充盒模型的文字、顏色、圖像、邊框和陰影等可視效果
          • 合并:所有圖層繪制后,按層疊順序合并為一個圖層

          重新渲染一般有三種執行路徑:

          • 重排:布局 → 繪制 → 合并
          • 重繪:繪制 → 合并
          • 合并:不同屬性的修改,會觸發不同的渲染路徑

          Q:Cookie 和 Session 的區別?

          項目

          Cookie

          Session

          存取值類型

          字符串

          大多數類型

          存取位置

          客戶端

          服務端,sessionId 非主動傳參時,依賴 Cookie

          存取方式

          文件

          文件、內存、關系或非關系型數據庫等

          大小

          受客戶端限制

          自行配置

          過期時間

          寫入時設置,用戶可清除

          自行配置,用戶可清除對應Cookie,服務端自動清除過期 Session

          兼容性

          需瀏覽器開啟,用戶同意

          不依賴 Cookie 時,通過 Get 或自定請求字段傳入

          作用范圍

          可設置跨子域,不可跨主域

          用戶身份唯一標識符不變時,可跨域,跨服務器。默認受限于 Cookie,僅限會話期間有效

          Q:判斷一個對象是不是數組 Array

          • isPrototypeOf-測試一個對象是否在另一個對象的原型鏈上-prototype 不可省略

          JavaScrpit

           function isArray(o) {
            return Array.prototype.isPrototypeOf(o)
          }
          • instanceof
          • -用于檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上

          JavaScrpit

          function isArray(o) {
            return o instanceof Array
          }
          • Array.isArray-用于確定傳遞的值是否是一個 Array

          JavaScrpit

          function isArray(o) {
            return Array.isArray(o)
          }    *
          • Object.prototype.toString-方法返回一個表示對象的字符串

          JavaScrpit

          function isArray(o) {
            return Object.prototype.toString.call(o) === '[object Array]'
          }

          Q:如何實現一個組件,前端組件的設計原則是什么?

          • 單一原則:一個組件只做一件事
          • 通過腦圖、結構圖,標識組件的 State Props Methods 生命周期,表示層次和數據流動關系
          • State 和 Props-扁平化:最多使用一層嵌套,便于對比數據變化,代碼更簡潔-無副作用:State 僅響應事件,不受其他 State 變化影響
          • 松耦合-組件應該獨立運行,不依賴其它模塊
          • 配置、模擬數據、非技術說明文檔、helpers、utils 與 組件代碼分離
          • 視圖組件只關心 視圖,數據獲取,過濾,事件處理應在外部 JS 或 父組件 中處理
          • Kiss原則(Keep it Simple Stupid)-不需要 State 時,使用 函數組件-不要傳遞不需要的 Props-及時抽取復雜組件為獨立組件-不要過早優化
          • 參考 CSS 的 OOSS 方法論,分離 位置 和 樣式,利于實現皮膚
          • 考慮 多語言、無障礙 等后期需求

          Q:對比 express 和 koa?

          • Handler 處理方式-Express:回調函數-Koa:Async / Await
          • 中間件-Express:同一線程,線性傳遞-Koa:洋蔥模型,級聯傳遞
          • 響應機制-Express:res.send 立即響應
          • -Koa:設置 ctx.body ,可累加,經過中間件后響應

          前端通關手冊

          上面分享的這些前端考點和高頻題都來自于本次 LeetBook 的上新。想要解鎖更多內容,點擊下面的圖片查看吧。

          《前端通關手冊:JavaScript》:力扣

          《前端通關手冊:HTML&CSS》: 力扣

          實用的前端面試突圍指南書,以面試題目作為線索,從基礎到更新,通過多方法,講概念,讓面試者的回答在廣度或深度上能夠脫穎而出,帶你輕松掌握 JavaScript、HTML、CSS 的面試考點。

          編者介紹

          吳小宇,做網站 13 年,2 次創業,土木、教育、前端 3 次跨領域轉行,入行 1 年成為組長,熱愛技術,尊重商業和人性,擅長多角度解決問題。

          當然,在面試時除了前端方面的專業知識,也會問到一些計算機通用基礎問題,因此本次上新還特別為扣友們準備了一本校招通用的通關手冊。

          《校招基礎知識詳解》: 力扣

          互聯網校招基礎考點一網打盡,用簡單易懂的講解將面試知識串連起來,幫你快速理清多而雜的知識點,構建起校招技能樹,面試游刃有余。

          編者介紹

          CyC2018,Github 校招面試項目 CS-Notes 作者,排名 10。校招期間收獲多家大廠 Offer,具有豐富的面試經驗。

          針對這部分基礎,我們同樣整理了一份實用的考點大綱:


          技術會迭代,我們也會與時俱進,不斷精益內容。希望能夠通過 LeetBook 節省面試者的時間,提高投入產出比,在準備面試的過程中,真正獲得知識和能力的提升。

          最后,祝福所有扣友都能找到滿意的工作!


          主站蜘蛛池模板: 日本大香伊一区二区三区| 另类一区二区三区| 亚洲午夜福利AV一区二区无码| 天美传媒一区二区三区| 久久中文字幕一区二区| 农村人乱弄一区二区| 亚洲AV无码一区二三区| 国产精品女同一区二区久久| 国产成人一区二区精品非洲| 国产乱码精品一区二区三区中| 精品一区精品二区制服| 麻豆国产一区二区在线观看| 国产精品亚洲一区二区麻豆| 狠狠做深爱婷婷久久综合一区| 内射一区二区精品视频在线观看| 91国在线啪精品一区| 亚洲av乱码中文一区二区三区 | 国产一区二区好的精华液| 国产成人高清亚洲一区久久| 久久亚洲中文字幕精品一区| 人妖在线精品一区二区三区| 卡通动漫中文字幕第一区| 亚洲熟女一区二区三区| 亚洲av成人一区二区三区在线播放 | 熟女性饥渴一区二区三区| 男插女高潮一区二区| 美女视频黄a视频全免费网站一区| 国产一区二区免费| 日本一区二区三区四区视频| 国产一区二区福利| 日韩人妻无码免费视频一区二区三区| 国产av天堂一区二区三区| 海角国精产品一区一区三区糖心| 精品国产一区二区三区久久蜜臀| 色欲AV蜜桃一区二区三| 亚洲AV色香蕉一区二区| 欲色影视天天一区二区三区色香欲| 亚洲av午夜福利精品一区 | 三上悠亚亚洲一区高清| 综合一区自拍亚洲综合图区| 无码av免费一区二区三区|