近日在畫一個(gè)界面的時(shí)候,遇到一個(gè)需求:在界面當(dāng)中畫一條豎線,且這條豎線在高度上需要自動(dòng)占滿整個(gè)父div(即這條豎線的高度和兩個(gè)div中較高的一個(gè)等高)。
往常我們畫一條橫線直接用標(biāo)簽<hr>即可,當(dāng)畫一條豎線的時(shí)候發(fā)現(xiàn)找不到標(biāo)簽。在網(wǎng)上查找了一下資料,大致推薦用js來做。小弟比較偏執(zhí)想用純css來做,最終找到了解決方法,下面我就來分享一下我的做法。
![](/d/20211016/32669f4cd5ccf2517db531de6a83523c.gif)
在兩個(gè)子div中加多一個(gè)div,并設(shè)置左(右)邊框?yàn)榭梢?,并且利用利用padding-bottom|margin-bottom正負(fù)值相抵消的原理。例如設(shè)置 padding-bottom:1600px; margin-bottom:-1600px
;我們可以理解為:運(yùn)用的是padding可以撐開外層標(biāo)簽而margin不用來撐開外層標(biāo)簽。即當(dāng)padding-bottom時(shí)撐開外層標(biāo)簽的高度,外層標(biāo)簽用overflow:hidden;隱藏掉多余的高,這樣可以讓高度與最高的那一欄對(duì)齊;而margin關(guān)乎模塊布局,margin可以抵消掉padding撐開的盒子使布局能夠從內(nèi)容部分開始。
以下是代碼:
body{
margin-top:100px;
margin-left:200px;
}
.maindiv{
width:900px;
padding:10px;
overflow:hidden; /*關(guān)鍵*/
border:1px solid black;
}
.leftdiv{
float:left;
width:400px;
background-color:#CC6633;
}
.rightdiv{
float:right;
width:400px;
background-color:#CC66FF;
}
.centerdiv{
float:left;
width:50px;
border-right: 1px dashed black;
padding-bottom:1600px; /*關(guān)鍵*/
margin-bottom:-1600px; /*關(guān)鍵*/
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>豎線畫法</title>
<link href="../css/demo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="maindiv">
<div class="leftdiv"><br><br><br><br><br><br></div>
<div class="centerdiv"></div>
<div class="rightdiv"><br><br><br><br><br><br><br></div>
</div>
</body>
</html>
效果圖:
![](/d/20211016/7df7d15bc54183a5fe6bfc1026fbf8d7.gif)
順便寫一下js的思路和關(guān)鍵代碼
![](/d/20211016/5b8e22e31274fd7791a865525943b3da.gif)
比較兩個(gè)子div的高度哪一高。選擇把高的那個(gè)div的相鄰邊框設(shè)為可見也可達(dá)到目的。
以下是js的代碼
function myfun(){
var div1=document.getElementById("content");
var div2=document.getElementById("side");
var h1=div1.offsetHeight;
var h2=div2.offsetHeight;
if(h1>h2){
div1.style.borderRight="1px dashed #B6AEA3";
}else{
div2.style.borderLeft="1px dashed #B6AEA3";
}
}
總結(jié)
以上所述是小編給大家介紹的HTML如何在兩個(gè)div標(biāo)簽中間畫一條豎線,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!