1. 程式人生 > >連這些都不知道,怎麼去阿里!

連這些都不知道,怎麼去阿里!

本次收錄了一些面試中經常會遇到的經典面試題以及自己面試過程中遇到的一些問題,並且都給出了我在網上收集的答案。馬上就要過春節了,開年就是嶄新的一年,相信很多的前端開發者會有一些跳槽的悸動,通過對本篇知識的整理以及經驗的總結,希望能幫到更多的前端面試者。(如有錯誤或更好的答案,歡迎指正,水平有限,望各位不吝指教。:)

CSS權重

CSS權重指的是樣式的優先順序,有兩條或多條樣式作用於一個元素,權重高的那條樣式對元素起作用,權重相同的,後寫的樣式會覆蓋前面寫的樣式。

權重的等級

可以把樣式的應用方式分為幾個等級,按照等級來計算權重
1、!important,加在樣式屬性值後,權重值為 10000
2、內聯樣式,如:style=””,權重值為1000
3、ID選擇器,如:#content,權重值為100
4、類,偽類和屬性選擇器,如: content、:hover 權重值為10
5、標籤選擇器和偽元素選擇器,如:div、p、:before 權重值為1
6、通用選擇器(*)、子選擇器(>)、相鄰選擇器(+)、同胞選擇器(~)、權重值為0
權重的計算例項

1、例項一:

<style type="text/css">
 div{
 color:red !important;
 } 
</style>
......
<div style="color:blue">這是一個div元素</div>
<!-- 
兩條樣式同時作用一個div,上面的樣式權重值為10000+1,下面的行間樣式的權重值為1000,
所以文字的最終顏色為red 
-->
//本次給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q群:864305860,
不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,
同時每天更新視訊資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。

2、例項二:

<style type="text/css">
 #content div.main_content h2{
 color:red; 
 }
 #content .main_content h2{
 color:blue;
 }
</style>
......
<div id="content">
 <div class="main_content">
 <h2>這是一個h2標題</h2>
 </div>
</div>
<!-- 
第一條樣式的權重計算: 100+1+10+1,結果為112;
第二條樣式的權重計算: 100+10+1,結果為111;
h2標題的最終顏色為red
-->

CSS3新增選擇器

1、E:nth-child(n):匹配元素型別為E且是父元素的第n個子元素

<style type="text/css"> 
 .list div:nth-child(2){
 }
</style>
......
<div class="list">
 <h2>1</h2>
 <div>2</div>
 <div>3</div>
 <div>4</div>
 <div>5</div>
</div>
<!-- 第2個子元素div匹配 -->

2、E:first-child:匹配元素型別為E且是父元素的第一個子元素

3、E:last-child:匹配元素型別為E且是父元素的最後一個子元素

4、E > F E元素下面第一層子集

5、E ~ F E元素後面的兄弟元素

6、E + F 緊挨著的後面的兄弟元素

屬性選擇器:

1、E[attr] 含有attr屬性的元素

<style type="text/css">
 div[data-attr='ok']{
 color:red;
 }
</style>
......
<div data-attr="ok">這是一個div元素</div>

2、E[attr=’ok’] 含有attr屬性的元素且它的值為“ok”

3、E[attr^=’ok’] 含有attr屬性的元素且它的值的開頭含有“ok”

4、E[attr$=’ok’] 含有attr屬性的元素且它的值的結尾含有“ok”

5、E[attr*=’ok’] 含有attr屬性的元素且它的值中含有“ok”

CSS3圓角、rgba

CSS3圓角

設定某一個角的圓角,比如設定左上角的圓角:

border-top-left-radius:30px 60px;

同時分別設定四個角: border-radius:30px 60px 120px 150px;

設定四個圓角相同:

border-radius:50%;

rgba(新的顏色值表示法)

1、盒子透明度表示法:

 .box
 {
 opacity:0.1;
 /* 相容IE */
 filter:alpha(opacity=10); 
 }

2、rgba(0,0,0,0.1) 前三個數值表示顏色,第四個數值表示顏色的透明度

CSS3 transition動畫

1、transition-property 設定過渡的屬性,比如:width height background-color
2、transition-duration 設定過渡的時間,比如:1s 500ms
3、transition-timing-function 設定過渡的運動方式,常用有 linear(勻速)|ease(緩衝運動)
4、transition-delay 設定動畫的延遲
5、transition: property duration timing-function delay 同時設定四個屬性

CSS3 transform變換

1、translate(x,y) 設定盒子位移
2、scale(x,y) 設定盒子縮放
3、rotate(deg) 設定盒子旋轉
4、skew(x-angle,y-angle) 設定盒子斜切
5、perspective 設定透視距離
6、transform-style flat | preserve-3d 設定盒子是否按3d空間顯示
7、translateX、translateY、translateZ 設定三維移動
8、rotateX、rotateY、rotateZ 設定三維旋轉
9、scaleX、scaleY、scaleZ 設定三維縮放
10、tranform-origin 設定變形的中心點
11、backface-visibility 設定盒子背面是否可見

舉例:(翻面效果)

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>翻面</title>
 <style type="text/css">
 .box{
 width:300px;
 height:272px;
 margin:50px auto 0;
 transform-style:preserve-3d;
 position:relative; 
 }
 .box .pic{
 width:300px;
 height:272px;
 position:absolute;
 background-color:cyan;
 left:0;
 top:0;
 transform:perspective(800px) rotateY(0deg);
 backface-visibility:hidden;
 transition:all 500ms ease;
 }
 .box .back_info{
 width:300px;
 height:272px;
 text-align:center;
 line-height:272px;
 background-color:gold;
 position:absolute;
 left:0;
 top:0;
 transform:rotateY(180deg);
 backface-visibility:hidden;
 transition:all 500ms ease; 
 }
 .box:hover .pic{
 transform:perspective(800px) rotateY(180deg);
 }
 .box:hover .back_info{
 transform:perspective(800px) rotateY(0deg);
 }
 </style>
</head>
<body>
 <div class="box"> 
 <div class="pic"><img src="images/location_bg.jpg"></div>
 <div class="back_info">背面文字說明</div>
 </div>
</body>
</html>

CSS3 animation動畫
1、@keyframes 定義關鍵幀動畫
2、animation-name 動畫名稱
3、animation-duration 動畫時間
4、animation-timing-function 動畫曲線 linear(勻速)|ease(緩衝)|steps(步數)
5、animation-delay 動畫延遲
6、animation-iteration-count 動畫播放次數 n|infinite
7、animation-direction 動畫結束後是否反向還原 normal|alternate
8、animation-play-state 動畫狀態 paused(停止)|running(運動)
9、animation-fill-mode 動畫前後的狀態 none(預設)|forwards(結束時停留在最後一幀)|backwards(開始時停留在定義的開始幀)|both(前後都應用)
10、animation:name duration timing-function delay iteration-count direction;同時設定多個屬性
##理解練習:

1、人物走路動畫

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>走路動畫</title>
 <style type="text/css"> 
 .box{
 width:120px;
 height:180px;
 border:1px solid #ccc; 
 margin:50px auto 0;
 position:relative;
 overflow:hidden; 
 }
 .box img{
 display:block;
 width:960px;
 height:182px;
 position: absolute;
 left:0;
 top:0;
 animation:walking 1.0s steps(8) infinite; 
 }
 @keyframes walking{
 from{
 left:0px;
 }
 to{
 left:-960px;
 }
 }
 </style>
</head>
<body>
 <div class="box"><img src="images/walking.png"></div>
</body>
</html>

CSS3 瀏覽器字首

瀏覽器樣式字首

為了讓CSS3樣式相容,需要將某些樣式加上瀏覽器字首:
-ms- 相容IE瀏覽器
-moz- 相容firefox
-o- 相容opera
-webkit- 相容chrome 和 safari
div
{ 
 -ms-transform: rotate(30deg); 
 -webkit-transform: rotate(30deg); 
 -o-transform: rotate(30deg); 
 -moz-transform: rotate(30deg); 
 transform: rotate(30deg);
}
//本次給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q群:864305860,
不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。

##864305860
自動新增瀏覽器字首

連這些都不知道,怎麼去阿里!

目前的狀況是,有些CSS3屬性需要加字首,有些不需要加,有些只需要加一部分,這些加字首的工作可以交給外掛來完成,比如安裝: autoprefixer

可以在Sublime text中通過package control 安裝 autoprefixer

Autoprefixer在Sublime text中的設定:

1、preferences/key Bindings-User

{ "keys": ["ctrl+alt+x"], "command": "autoprefixer" }

2、Preferences>package setting>AutoPrefixer>Setting-User

{
 "browsers": ["last 7 versions"],
 "cascade": true,
 "remove": true
}

last 7 versions:最新的瀏覽器的7個版本

cascade:縮排美化屬性值

remove:是否去掉不必要的字首

HTML5新增標籤

新增語義標籤

1、<header> 頁面頭部、頁首
2、<nav> 頁面導航
3、<article> 一篇文章
4、<section> 文章中的章節
5、<aside> 側邊欄
6、<footer> 頁面底部、頁尾

音訊視訊

1、<audio>
2、<video>

PC端相容h5的新標籤的方法,在頁面中引入以下js檔案:

<script type="text/javascript" src="//cdn.bootcss.com/html5shiv/r29/html5.js"></script>

HTML5 新增表單控制元件

新增型別:網址 郵箱 日期 時間 星期 數量 範圍 電話 顏色 搜尋

<label>網址:</label><input type="url" name="" required><br><br> 
<label>郵箱:</label><input type="email" name="" required><br><br> 
<label>日期:</label><input type="date" name=""><br><br> 
<label>時間:</label><input type="time" name=""><br><br> 
<label>星期:</label><input type="week" name=""><br><br> 
<label>數量:</label><input type="number" name=""> <br><br>
<label>範圍:</label><input type="range" name=""><br><br> 
<label>電話:</label><input type="tel" name=""><br><br> 
<label>顏色:</label><input type="color" name=""><br><br> 
<label>搜尋:</label><input type="search" name=""><br><br>
新增常用表單控制元件屬性:
1、placeholder 設定文字框預設提示文字
2、autofocus 自動獲得焦點
3、autocomplete 聯想關鍵詞

移動端與PC端頁面佈局區別

視口

視口是移動裝置上用來顯示網頁的區域,一般會比移動裝置可視區域大,寬度可能是980px或者1024px,目的是為了顯示下整個為PC端設計的網頁,這樣帶來的後果是移動端會出現橫向滾動條,為了避免這種情況,移動端會將視口縮放到移動端視窗的大小。這樣會讓網頁不容易觀看,可以用 meta 標籤,name=“viewport ” 來設定視口的大小,將視口的大小設定為和移動裝置可視區一樣的大小。

設定方法如下( 快捷方式:meta:vp + tab ):

<head>
......
<meta name="viewport" content="width=device-width, user-scalable=no,
 initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
......
</head>

視網膜螢幕(retina螢幕)清晰度解決方案

視網膜螢幕指的是螢幕的物理畫素密度更高的螢幕,物理畫素可以理解為螢幕上的一個發光點,無數發光的點組成的螢幕,視網膜螢幕比一般螢幕的物理畫素點更小,常見有2倍的視網膜螢幕和3倍的視網膜螢幕,2倍的視網膜螢幕,它的物理畫素點大小是一般螢幕的1/4,3倍的視網膜螢幕,它的物理畫素點大小是一般螢幕的1/9。

影象在視網膜螢幕上顯示的大小和在一般螢幕上顯示的大小一樣,但是由於視網膜螢幕的物理畫素點比一般的螢幕小,影象在上面好像是被放大了,影象會變得模糊,為了解決這個問題,可以使用比原來大一倍的影象,然後用css樣式強制把影象的尺寸設為原來影象尺寸的大小,就可以解決模糊的問題。

背景圖強制改變大小,可以使用background新屬性

background新屬性
background-size:
length:用長度值指定背景影象大小。不允許負值。
percentage:用百分比指定背景影象大小。不允許負值。
auto:背景影象的真實大小。
cover:將背景影象等比縮放到完全覆蓋容器,背景影象有可能超出容器。
contain:將背景影象等比縮放到寬度或高度與容器的寬度或高度相等,背景影象始終被包含在容器內。
適配佈局型別

PC及移動端頁面適配方法

裝置螢幕有多種不同的解析度,頁面適配方案有如下幾種:
1、全適配:響應式佈局+流體佈局
2、移動端適配:
流體佈局+少量響應式
基於rem的佈局
流體佈局

流體佈局,就是使用百分比來設定元素的寬度,元素的高度按實際高度寫固定值,流體佈局中,元素的邊線無法用百分比,可以使用樣式中的計算函式 calc() 來設定寬度,或者使用 box-sizing 屬性將盒子設定為從邊線計算盒子尺寸。

calc()

可以通過計算的方式給元素加尺寸,比如: width:calc(25% - 4px);
box-sizing

1、content-box 預設的盒子尺寸計算方式
2、border-box 置盒子的尺寸計算方式為從邊框開始,盒子的尺寸,邊框和內填充算在盒子尺寸內
響應式佈局

響應式佈局就是使用媒體查詢的方式,通過查詢瀏覽器寬度,不同的寬度應用不同的樣式塊,每個樣式塊對應的是該寬度下的佈局方式,從而實現響應式佈局。響應式佈局的頁面可以適配多種終端螢幕(pc、平板、手機)。

@media (max-width:960px){
 .left_con{width:58%;}
 .right_con{width:38%;}
}
@media (max-width:768px){
 .left_con{width:100%;}
 .right_con{width:100%;}
}

基於rem的佈局

首先了解em單位,em單位是參照元素自身的文字大小來設定尺寸,rem指的是參照根節點的文字大小,根節點指的是html標籤,設定html標籤的文字大小,其他的元素相關尺寸設定用rem,這樣,所有元素都有了統一的參照標準,改變html文字的大小,就會改變所有元素用rem設定的尺寸大小。

cssrem安裝

cssrem外掛可以動態地將px尺寸換算成rem尺寸

下載本專案,比如:git clone https://github.com/flashlizi/cssrem 進入packages目錄:Sublime Text -> Preferences -> Browse Packages... 複製下載的cssrem目錄到剛才的packges目錄裡。 重啟Sublime Text。

配置引數 引數配置檔案:Sublime Text -> Preferences -> Package Settings -> cssrem px_to_rem - px轉rem的單位比例,預設為40。 max_rem_fraction_length - px轉rem的小數部分的最大長度。預設為6。 available_file_types - 啟用此外掛的檔案型別。預設為:[".css", ".less", ".sass"]。