前端面試題1---css的居中方式
1.css的居中方式
CSS中的居中可分為水平居中和垂直居中。水平居中分為行內元素居中和塊狀元素居中兩種情況,而塊狀元素又分為定寬塊狀元素居中和不定寬塊狀元素居中
一、水平居中
1.行內元素(文字txt,圖片img)
text-align:center;
2.塊級元素居中
01.確定寬度的塊級元素(已知塊狀元素的width且width為固定值)
方法一:margin和width實現水平居中
.content{
width:200px;
height:200px;
margin:0 auto;
}
方法二:絕對定位和margin-left: -(寬度值/2)實現水平居中
.content{
width:200px;
height:200px;
position:absolute;
left:50%;
margin-left:-100px;/*width的一半*/
}
02未知寬度的塊級元素(塊狀元素的寬度width不固定)
方法一:利用table標籤的長度自適應性
將要顯示的元素加入到 table 標籤當中,然後為 table 標籤設定“左右margin”值為“auto”來實現居中
table{
margin:0 auto;
}
<div>
<table>
<tr><td>
<ul>
<li>Hello world</li>
<li>Hello world</li>
</ul>
</td></tr>
</table>
</div>
或使用 display : table;然後設該元素“左右margin”值為“auto”來實現居中
.wrap{
background:#ccc;
display:table;
margin:0 auto;
}
<div class="wrap">
Hello world
</div>
方式二:改變塊級元素的 display 為 inline 型別(設定為 行內元素 顯示),然後使用 text-align:center 來實現居中效果。
存在問題:需額外處理inline-block的瀏覽器相容性(解決inline-block元素的空白間距
.container{
text-align:center;
}
.container ul{
list-style:none;
margin:0;
padding:0;
display:inline;
}
<div class="container">
<ul>
<li>Hello world</li>
<li>Hello world</li>
</ul>
</div>
方法三:絕對定位實現水平居中
.content{
position: absolute;
left: 50%;
transform: translateX(-50%); /* 移動元素本身50% */
background: aqua;
}
方法四:相對定位實現水平居中
先設定父元素wrap清除浮動,然後左浮動。定位讓wrap向右偏移50%。然後定義子元素相對於父元素向左偏移50%。脫離父元素。
/*目標元素的父元素*/
.contentParent{
float: left;
position: relative;
left: 50%;
clear:both;
}
/*目標元素*/
.content{
position: relative;
left:-50%;/*right:50%*/
background-color:aqua;
}
二、垂直居中
垂直居中可分為父元素高度確定的單行文字,以及父元素高度確定的多行文字。
01.父元素高度確定的單行文字
/*設定父元素的 height 和 line-height 高度一致來實現的*/
.wrap h2{
margin:0;
height:100px;
line-height:100px;
background:#ccc;
}
<div class="wrap">
<h2>Hello world</h2>
</div>
02.父元素高度確定的多行文字
方法1:使用插入 table (包括tbody、tr、td)標籤,同時設定 vertical-align:middle。
.wrap{
height:300px;
background:#ccc;
/* td 標籤預設情況下就預設設定了 vertical-align 為 middle,可以不需要顯式地設定 */
vertical-align:middle;
}
<table>
<tbody>
<tr>
<td class="wrap">
<div>
<p>Hello world</p>
<p>Hello world</p>
<p>Hello world</p>
</div>
</td>
</tr>
</tbody>
</table>
.wrap{
background:#ccc;
display:table;
vertical-align:middle;
}
<div class="wrap">
<p>Hello world</p>
<p>Hello world</p>
<p>Hello world</p>
</div>
相關文章
- 前端基礎問題:CSS居中的幾種方式前端CSS
- 前端面試中最常問到的垂直水平居中問題前端面試
- 前端面試之居中佈局前端面試
- 面試題:水平垂直居中的17種方法面試題
- 【面試】前端面試題前端面試題
- 前端面試送命題:面試題篇前端面試題
- 上下居中的處理方式
- 前端面試題前端面試題
- 前端js面試題前端JS面試題
- 常見的前端面試題前端面試題
- 前端常見的部分面試題前端面試題
- 前端常見面試題前端面試題
- 前端面試題目前端面試題
- 前端面試題一前端面試題
- 前端面試題整理前端面試題
- 前端開發面試題前端面試題
- 前端面試題小集前端面試題
- 前端經典面試題前端面試題
- 前端面試之Vue中元件通訊的方式前端面試Vue元件
- CSS中的多種居中方式CSS
- 常見的div居中對齊方式
- CSS居中的各種實現方式CSS
- 面試題 LazyMan 的Rxjs實現方式面試題JS
- 淺談居中問題(水平居中、垂直居中、水平垂直居中)
- 荔枝FM前端面試題前端面試題
- 前端面試題 | CSS篇前端面試題CSS
- 前端面試題總結前端面試題
- 最新前端面試題攻略前端面試題
- 前端面試題(附答案)前端面試題
- 前端面試題(總結)前端面試題
- 前端面試題-CSS Hack前端面試題CSS
- 前端面試題收藏(1)前端面試題
- Web前端JQuery面試題(一)Web前端jQuery面試題
- 前端面試典型例題前端面試
- 前端面試題-display篇前端面試題
- 前端Node.js面試題前端Node.js面試題
- 前端React面試題總結前端React面試題
- 前端面試題整理--http前端面試題HTTP