今天的內容中,廊坊網站建設公司的技術人員將分享下網站導航水平居中設置的方法,其實辦法有很多,以CSS代碼為例,這種代碼操作很方便,后期修改的時候也簡單,以下是詳細的實例操作。
方法一:使用display:inline-block控制
這個方法比較簡單,是將容器轉成display:inline-block行內塊級元素,然后就可以直接用text-align:center使其達到水平居中效果。HTML代碼中需要一個div來包圍這個導航菜單。
方法二:使用position:relative解決
position:relative定位方法來讓元素水平居中,一般來說小編推薦這方法,因為代碼多了個div去包住,當然這些是根據情況來使用的。將定位div設為浮動,再定位left:50%,然后導航定位至left:-50%。
方法三:使用display:table解決
HTML代碼實例
<ul class="navbar">
<li><a href="/">Home</a></li>
</ul>
CSS代碼實例
.navbar {
display:table;
margin:0 auto;
}
.navbar li {
display:table-cell;
}
.navbar li + li {
padding-left:20px;
}
方法四:使用display:inline-flex解決
HTML代碼實例操作
<div class="navbar">
<ul>
<li><a href="/">Home</a></li>
</ul>
</div>
CSS代碼代碼編寫
.navbar {
text-align:center;
}
.navbar > ul {
display:-webkit-inline-box;
display:-moz-inline-box;
display:-ms-inline-flexbox;
display:-webkit-inline-flex;
display:inline-flex;
}
.navbar li + li {
margin-left:20px;
}
提示:瀏覽器兼容問題,目前這個代碼不支持IE7及以下版本的IE瀏覽器。
其實這些方法很好的解決了網站導航菜單居中的問題,使用CSS編寫有助于后期的修改,極大的方便了我們的操作和節省了寶貴的時間。在以后的內容中,小編還將會繼續為朋友們分享更多更有價值的知識。
原創文章出自暢想網絡,轉載地址:http://www.e-wkj.cn/xw/2316.html
平居中設置
我們在實際工作中常會遇到需要設置水平居中的場景,比如為了美觀,文章的標題一般都是水平居中顯示的。
這里我們又得分兩種情況:行內元素 還是 塊狀元素 ,塊狀元素里面又分為定寬塊狀元素,以及不定寬塊狀元素。今天我們先來了解一下
如果被設置元素為文本、圖片等行內元素時,水平居中是通過給父元素設置 text-align:center 來實現的。
當被設置元素為 塊狀元素 時用 text-align:center 就不起作用了,這時也分兩種情況:定寬塊狀元素和不定寬塊狀元素。
如果是定寬塊狀元素。(定寬塊狀元素:塊狀元素的寬度width為固定值。)
滿足定寬和塊狀兩個條件的元素是可以通過設置“左右margin”值為“auto”來實現居中的。
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
第一種做法:
為什么選擇方法一加入table標簽? 是利用table標簽的長度自適應性---即不定義其長度也不默認父元素body的長度(table其長度根據其內文本長度決定),因此可以看做一個定寬度塊元素,然后再利用定寬度塊狀居中的margin的方法,使其水平居中。
第一步:為需要設置的居中的元素外面加入一個 table 標簽 ( 包括 <tbody>、<tr>、<td> )。
第二步:為這個 table 設置“左右 margin 居中”(這個和定寬塊狀元素的方法一樣)。
舉例如下:
html代碼:
<div> <table> <tbody> <tr><td> <ul> <li>我是第一行文本</li> <li>我是第二行文本</li> <li>我是第三行文本</li> </ul> </td></tr> </tbody> </table> </div>
css代碼:
<style> table{ border:1px solid; margin:0 auto; } </style>
第二種做法:
改變塊級元素的 display 為 inline 類型(設置為 行內元素 顯示),然后使用 text-align:center 來實現居中效果。如下例子:
html代碼:
<body> <div class="container"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> </div> </body>
css代碼:
<style> .container{ text-align:center; } /* margin:0;padding:0(消除文本與div邊框之間的間隙)*/ .container ul{ list-style:none; margin:0; padding:0; display:inline; } /* margin-right:8px(設置li文本之間的間隔)*/ .container li{ margin-right:8px; display:inline; } </style>
這種方法相比第一種方法的優勢是不用增加無語義標簽,但也存在著一些問題:它將塊狀元素的 display 類型改為 inline,變成了行內元素,所以少了一些功能,比如設定長度值。
方法三:
通過給父元素設置 float,然后給父元素設置 position:relative 和 left:50%,子元素設置 position:relative 和 left: -50% 來實現水平居中。
我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線將ul層的父層(div層)平均分為兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線對齊;而li層的css代碼則是將li層的平分線與ul層的最左端(也是div層的平分線)對齊,從而實現li層的居中。
代碼如下:
<body> <div class="container"> <ul> <li><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> </div> </body>
css代碼:
<style> .container{ float:left; position:relative; left:50% } .container ul{ list-style:none; margin:0; padding:0; position:relative; left:-50%; } .container li{float:left;display:inline;margin-right:8px;} </style>
這三種方法使用得都非常廣泛,各有優缺點,具體選用哪種方法,可以視具體情況而定。
頁面布局常遇見需要子元素完全居中顯示,因此在此總結常見方案。
讓黃色塊在父容器(灰色塊)中水平、垂直居中
黃色方塊:寬高100px
灰色方塊:寬高400px
下列方法1到方法7,變換前后的圖像都是上面2張圖(圖標注了長度)
默認代碼:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>完全居中</title>
<style>
.parent {
width: 400px;
height: 400px;
background-color: gray;
}
.children {
width: 100px;
height: 100px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="parent">
<div class="children"></div>
</div>
</body>
</html>
下列方法1到方法7,里css代碼都是基于上方默認代碼
.parent {
/* 彈性布局 */
display: flex;
/* 主軸對齊方式:居中 */
justify-content: center;
/* 側軸對齊方式(單行):居中 */
align-items: center;
}
.parent {
/* 彈性布局 */
display: flex;
}
.children {
margin: auto;
}
.parent {
position: relative;
}
.children {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
分析過程:使用外邊距推中間黃色盒子,距離頂端(400-100)/2= 150 px
.parent {
/* 因為margin塌陷問題(子容器的外邊距會被父容器用掉):此處需要顯示指明父容器溢出方式 */
overflow: auto;
}
.children {
/* 上下150px,左右自動 */
margin: 150px auto;
}
這種方法使用CSS的transform和position屬性。這種方法在某些情況下可能比Flexbox或Grid更簡單:
.children {
position: relative;
left: 50%;
top: 50%;
/*
transform:2/3D變換關鍵字
translate是2D位移關鍵字
x與y都-50%,是因為坐標原點默認是左上角,在left與top移動50%后,黃色盒子處于中心點右下方,因此需要讓黃色盒子xy都減去一半
*/
transform: translate(-50%, -50%);
}
CSS Grid也是一個強大的布局工具,它也可以用來實現子元素的水平和垂直居中。以下是一個例子:
.parent {
display: grid;
justify-items: center;/* 水平居中 */
align-items: center;/* 垂直居中 */
}
通過display設置為table-cell,然后使用text-align 、vertical-align實現水平居中和垂直居中。
.parent {
display: table-cell;
text-align: center;
vertical-align: middle;
}
.children {
display: inline-block;
}
若父元素寬高確定,子元素寬高不確定,用
將children設為行內元素,運用text-align即可實現水平居中,再借助vertical-align在垂直方向上達到居中效果。最后,將children的行高設定為默認值(line-height具有可繼承性,需單獨調整子元素的行高)。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>完全居中</title>
<style>
.parent {
width: 400px;
height: 400px;
background-color: gray;
text-align: center;
line-height: 400px;
}
.children {
background-color: yellow;
display: inline-block;
vertical-align: middle;
line-height: initial;
}
</style>
</head>
<body>
<div class="parent">
<div class="children">child</div>
</div>
</body>
</html>
初始
居中
更多精彩,請關注微信公眾號:碼圈小橙子
*請認真填寫需求信息,我們會在24小時內與您取得聯系。