2020-12-17 html、css面試題3: 水平垂直居中,左右固定中間自適應 三欄佈局,靜態佈局、自適應佈局、流式佈局、響應式佈局、彈性佈局,IE中常見的相容性問題,清空陣列的方法
11.如何讓一個盒子水平垂直居中
1、 如何讓一個盒子水平垂直居中
①定位:(常用方法,推薦)
position:absolute;
position:relative;
left:值;
top:值;
②display:table-cell;
③外邊距:margin-left:值;
margin-top:值;
④margin:auto;(不相容低版本的IE瀏覽器)
⑤彈性盒模型:display:flex;
justify-content:conter;
align-itens:center;
⑥用transform的屬性translate平移,不僅能實現絕對居中同樣的效果,也支援聯合可變高度方式使用。
使用top:50%; left:50%;時,是以盒子的左上角為原點定位,是左上角的原點居中,但是元素本身並不居中。
transform:translate(-50%,-50%):分別向左向上移動自身長寬的50%,使其位於中心。
transform: translate(-50%,-50%)導致的畫素模糊問題解決辦法:
/** 這 0.5px加或者減都可以 */
transform: translat(calc(-50% + 0.5 px), calc(-50% + 0.5 px));
⑦用calc計算
12.左右固定中間自適應 三欄佈局(聖盃、雙飛翼、彈性盒子…)
聖盃佈局:
缺點:當皮膚的main部分比兩邊的子皮膚寬度小的時候,佈局就會亂掉。
雙飛翼佈局:
與聖盃佈局很像,也是全部往左浮動,但是在內容div裡再巢狀一個div,設定子div的margin為左右div預留位置,左右div只設定margin負值即可實現。
相似點:
1.給main設定width: 100%,佔滿視窗,從而自適應。
2.為了形成在一行三欄佈局,給三個方塊都加上浮動float: left;(注意清除浮動,因為浮動會導致父元素高度塌陷)
3.利用負margin-left把三個方塊拉到一行,margin-left負多少就是往左移動多少,左邊需要相對父元素的-100%,移到父元素的最左邊,右邊只需要移動本身寬度的負值,即可在最右邊。
區別:
1.雙飛翼佈局給主皮膚新增了一個父標籤用來通過margin給子皮膚騰出空間。
2.聖盃採用的是padding,而雙飛翼採用的margin,解決了聖盃佈局的問題。
3.雙飛翼佈局不用設定相對佈局,以及對應的left和right值。
flex佈局
思路:順著主軸依次放3列,內容在最前,通過order控制顯示順序,通過flex-grow讓中間佔據全部剩餘空間,通過flex-basis設定左、右div的寬度。
缺點:相容性。
13.靜態佈局、自適應佈局、流式佈局、響應式佈局、彈性佈局(rem、em)
靜態佈局(Static Layout)
即傳統Web設計,對於PC設計一個Layout,在螢幕寬高有調整時,使用橫向和豎向的滾動條來查閱被遮掩部分;
對於移動裝置,單獨設計一個佈局,使用不同的域名如wap.或m.。
自適應佈局(Adaptive Layout)
自適應佈局(Adaptive)的特點是分別為不同的螢幕解析度定義佈局。佈局切換時頁面元素髮生改變,但在每個佈局中,頁面元素不隨視窗大小的調整發生變化。
你可以把自適應佈局看作是靜態佈局的一個系列。
流式佈局(Liquid Layout)
流式佈局(Liquid)的特點(也叫"Fluid") 是頁面元素的寬度按照螢幕進行適配調整,主要的問題是如果螢幕尺度跨度太大,那麼在相對其原始設計而言過小或過大的螢幕上不能正常顯示。
響應式佈局(Responsive Layout)
分別為不同的螢幕解析度定義佈局,同時,在每個佈局中,應用流式佈局的理念,即頁面元素寬度隨著視窗調整而自動適配。
可以把響應式佈局看作是流式佈局和自適應佈局設計理念的融合
彈性佈局(rem/em佈局)
包裹文字的各元素的尺寸採用em/rem做單位,可以使包裹文字的元素隨著文字的縮放而縮放;而頁面的主要劃分割槽域的尺寸仍使用百分數或px做單位。
css 中的 px 是css設定自己大小,元素長寬的單位
瀏覽器中em和px關係是 **16px** = **1em**
rem是根據根節點,也就是html預設字型大小來設定大小的。所以改變了html根
節點字型大小,em的預設值也會改變。向上面html設定為12px,那麼**1rem=12px**了
rem不是子節點繼承父節點大小,而是所有的節點都繼承html節點,所有當html節點設定成10px時候,所有整個頁面1rem就等於10px了
1.靜態佈局:
**佈局特點:**寬高固定
2.自適應佈局:
**佈局特點:**不同解析度下,頁面元素位置變化,大小不變
**實現方法:**針對不同解析度建立對應的樣式表,使用 @media 媒體查詢給不同尺寸的裝置切換不同的樣式
**缺點:**IE8及以下不支援媒體查詢;只能相容主流解析度
3.流式佈局(百分比佈局):
**佈局特點:**不同的解析度下顯示相同的排版;高度固定,寬度自適應
**實現方法:**網頁中主要區域的尺寸使用百分比;
**缺點:**大螢幕上元素被拉長,但是文字,高度還是固定大小,不協調
經典流式佈局:左側固定,右側自適應;兩側固定,中間自適應
4.彈性佈局(rem/em佈局):
**佈局特點:**頁面元素寬度,高度,字型大小會跟著螢幕大小縮放
**實現方法:**使用js監聽當前螢幕大小,設定html的字型大小
**缺點:**IE678不相容;需要計算;
5.響應式佈局:一個網站能夠相容多個終端——而不是為每個終端做一個特定的版本
**佈局特點:**每個螢幕解析度下面會有一個佈局樣式,即元素位置和大小都會變,響應式設計的目標是確保一個頁面在所有終端上(各種尺寸的PC、手機、手錶等等)都能顯示出令人滿意的效果
**實現方法:**媒體查詢(css3中的Media Query)+流式佈局
媒介查詢:通過不同的媒介型別和條件定義樣式表規則,媒介查詢讓CSS可以更精確作用於不同的媒介型別和同一媒介的不同條件。
**優點:**適應pc和移動端
1.面對不同解析度裝置靈活性強
2.能夠快捷解決多裝置顯示適應問題
**缺點:**要匹配足夠多的螢幕大小,工作量大,設計也需要多個版本
1.會出現隱藏無用的元素
2.載入時間加長
14.說一下在IE(IE6)中常見的幾個相容性問題
一、頭文件所引起的怪異盒模型問題
產生條件:不設定文件宣告,頁面就會陷入怪異盒模型解析模式
解決方法:加入文件宣告
二、IE6下雙邊距BUG
產生條件:在IE6下,塊元素有浮動有橫向的margin,橫向的margin值
會被放大成兩倍浮動方向與margin方向一致時,該方向會出現雙倍邊距
解決方法:display:inline
三、圖片間隙問題
產生條件:給父容器設定寬度後,圖片會在原來基礎上把父元素撐大3-5px
解決方法:1.給父元素新增font-size:0;
2.給圖片新增display:block;
四、li的間距問題
產生條件:IE6瀏覽器 li標籤設定寬高,且li裡面的元素髮生了浮動
解決方法:1. li不設定寬高;
2. li內部的標籤不進行浮動
五、塊狀元素預設高度問題
產生條件:部分塊狀元素會有預設高度(一般為16px-18px之間)
解決方法: 1.給元素新增overflow:hidden;
2.font-size:0;
六、表單行高不一致
產生條件:一行中的文字輸入框和按鈕不在同一高度
解決辦法:給表單元素新增float:left;並去掉預設邊框border:0;
七、圖片元素img下高度超出,出現多餘空白
解決方法:1.設定img為display:block;
2.父級設定overflow:hidden;
八、左浮元素margin-bottom失效
解決方法:1.顯示設定高度
2.父標籤設定_padding-bottom代替子標籤的margin-bottom
3.再放個標籤讓父標籤浮動,子標籤margin- bottom,即(margin-bottom與float不同時 作用於一個標籤)
九、position下的left,bottom錯位
解決方法:為父級(relative層)設定寬高或新增*zoom:1
十、子級中有設定position,則父級overflow失效
解決方法:為父級設定position:relative
十一、塊元素中有文字及右浮動的行元素,行元素換行
解決方法:將行元素置於塊元素內的文字前
十二、透明rgba與opacity
產生條件:IE6不支援此兩種透明的設定方法
解決方法:使用IE6當中的濾鏡filter替代掉,
如:opacity:0.6;filter:alpha(opacity=60)異盒模型問題
15.清空陣列的方法
1.splice
var ary = [1,2,3,4];
ary.splice(0,ary.length);
console.log(ary); // 輸出 [],空陣列,即被清空了
2.length賦值為0
var ary = [1,2,3,4];
ary.length = 0;
console.log(ary); // 輸出 [],空陣列,即被清空了
3.賦值為[]
var ary = [1,2,3,4];
ary = []; // 賦值為一個空陣列以達到清空原陣列
相關文章
- CSS佈局 --- 自適應佈局CSS
- 三欄佈局之自適應佈局
- 三列自適應佈局(聖盃佈局)
- flex彈性佈局 響應式佈局Flex
- css自適應佈局CSS
- css佈局,左右固定中間自適應實現CSS
- 如何實現兩欄佈局,右側自適應?三欄佈局中間自適應呢?
- 居中佈局、三欄佈局
- CSS 佈局之水平居中佈局CSS
- CSS佈局 --- 居中佈局CSS
- 兩列居中寬度自適應佈局
- 三列寬度自適應佈局
- CSS佈局之三欄佈局CSS
- Html佈局左右寬度固定中間自適應解決方案HTML
- css經典佈局系列一——垂直居中佈局CSS
- 一列居中寬度自適應佈局
- CSS 兩欄佈局和三欄佈局CSS
- 兩列自適應佈局方案整理
- flex佈局兩邊固定寬 中間自適應Flex
- 響應式佈局
- flex彈性佈局 垂直居中Flex
- 【CSS】三欄/兩欄寬高自適應佈局大全CSS
- 佈局總結-水平居中佈局的實現
- 彈性佈局(伸縮佈局)
- CSS-常見兩欄、三欄佈局(雙飛翼佈局、聖盃佈局)CSS
- css佈局-float佈局CSS
- CSS 三欄佈局之聖盃佈局和雙飛翼佈局CSS
- 使用flex實現三欄佈局,兩邊固定,中間自適應Flex
- css--常見左右盒子寬度高度自適應佈局CSS
- Android中常見的佈局和佈局引數Android
- CSS:三欄佈局之雙飛翼佈局CSS
- 移動 WEB 開發的佈局方式 ---- 響應式佈局Web
- Web自適應佈局那些事兒Web
- display:table-cell自適應佈局
- QT Creator/QT Designer佈局自適應QT
- easyui-layout佈局高度自適應UI
- Flutter佈局篇(1)–水平和垂直佈局詳解Flutter
- Flutter佈局篇(1)--水平和垂直佈局詳解Flutter