CSS Box,垂直分隔线

时间:2019-02-21 23:11:40

标签: css

一年前,我在编写CSS方面完全是绿色的,但是由于主要是通过这个网站,我才得以很好地理解,尤其是在您经常展示该解决方案的jsfiddle示例中。
我一直在网上寻找解决方案。
我似乎无法在2 div之间设置分隔线
我的布局如下所示:https://jsfiddle.net/9cgm7nsv/

* {margin: 0px; padding: 0px; word-wrap: break-word; font-size: 11px; font-family: Verdana, Tahoma, Arial, sans-serif; box-sizing: border-box;}
body {color: rgb(48, 48, 48); background: rgb(170, 170, 170); margin: 1px 0px 0px; }
a {color: rgb(70, 122, 167); font-weight: bold; text-decoration: none; background-color: inherit;}
a img { border: none; }

p { padding: 1px 3px; }
h1 { background-color: rgb(58, 82, 127); color: rgb(204, 204, 204); margin: 0px; padding: 3px 10px; }
h2 { background-color: rgb(58, 82, 127); color: rgb(204, 204, 204); margin: 0px; padding: 5px 10px; }
h3 { background-color: rgb(10, 10, 10); color: rgb(204, 204, 204); margin: 0px; padding: 3px 10px; }
h4 { background-color: rgb(51, 51, 51); color: rgb(204, 204, 204); margin: 0px; padding: 3px 10px; }
table {border-collapse:collapse; margin: 0px; color: black; width: 100%;}
table, td, th {border:1px solid black; font-size: 11px; padding: 2px 5px 2px;}
th {background-color: rgb(120, 120, 120); color: rgb(230, 230, 230);}
button {padding: 3px;}

#container { width: 1202px; margin: 3px auto;padding: 1px; text-align: left; border:black; background: rgb(184, 184, 184);}

#navigation { height: 2.2em; line-height: 2.2em; width: 1200px; border: 1px solid rgb(255, 255, 255); background: rgb(75, 75, 75);}
#navigation li { float: left; list-style-type: none; border-right: 1px solid rgb(255, 255, 255); white-space: nowrap; }
#navigation li a { display: block; padding: 0px 10px; font-size: 0.8em; font-weight: normal; text-transform: uppercase; background-color: inherit; color: rgb(255, 255, 255); }

#col-container {
	display: table; 
	width: 1200px; 
	border: 1px solid rgb(255, 255, 255); 
	margin: 1px 0px; 
	background:#FFF;
}

#col {
	display: table-cell;
	padding: 1px;
	width: 60%; 
	vertical-align: top; 
	background:blue; 
	color:#222; 
	border: 1px solid rgb(200, 200, 200);
}

#colside { 
	display: table-cell;
	padding: 1px; 
	width: 20%; 
	vertical-align: top; 
	background:blue; 
	color:#222; 
	border: 1px solid rgb(200, 200, 200); 
}

#splitcontentleft {
	float:left; 
	width:50%;
}

#splitcontentright {
	float:right; 
	width:50%;
}

#imgbutton {padding: 0px;}

#footer {
	clear: both; 
	width: 1200px; 
	margin: 0px; 
	padding: 8px 0px; 
	border: 1px solid rgb(255, 255, 255); 
	font-size: 0.9em; 
	color: rgb(240, 240, 240); 
	background: rgb(50, 50, 50); 
}

#footer p { margin: 0px; padding: 0px; text-align: center; }

div.box {
	margin: 0px 0px 1px 0px; 
	border: 1px solid rgb(192, 192, 192); 
	background-color: rgb(250, 251, 252); 
	color: rgb(80, 80, 80); 
	line-height: 1.3em; 
}

div.vertical-line{
      width: 10px;
      background-color: white;
      height: 100%;
      float: left;
    }

div.horisontal-line{
      width: 100%; /* Line width */
      background-color: white; /* Line color */
      border-top: 1px solid rgb(100, 100, 100);
      border-bottom: 1px solid rgb(100, 100, 100);
      height: 3px;
      float: left;
    }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" type="text/css" href="global2.css" title="global" media="screen,projection" />
	<title>Local page</title>
</head>

<body>
	<div id="container">
		<script src="nav2.js"></script>

		<div id="col-container">

	  	<div id="colside">
	    	<div class="box">
					<h4>Left side</h4>
					<p>Test text</p>
					<p>Test text</p>
				</div>
	    </div>

			<div class="vertical-line"></div> <!-- Divider between left side and middle -->

	  	<div id="col">
	  		<div class="box">
					<h4>Center</h4>
					<p>Test text</p>
					<p>Test text</p>
				</div>

				<div class="horisontal-line"></div> <!-- Divider between upper and lower part of middle -->

				<div id="splitcontentleft">
					<div class="box">
						<h4>Lower left</h4>
						<p>Test text</p>
						<p>Test text</p>
					</div>
				</div>

				<div class="vertical-line"></div> <!-- DOESN'T work. Divider between lower left and lower right -->

				<div id="splitcontentright">
					<div class="box">
						<h4>Lower right</h4>
						<p>Test text</p>
						<p>Test text</p>
					</div>
				</div>
			</div>

			<div class="vertical-line"></div> <!-- Divider BETWEEN middle and right side -->

		  <div id="colside">
		  	<div class="box">
					<h4>Right side</h4>
					<p>Test text</p>
					<p>Test text</p>
				</div>
			</div>

		</div> <!-- col-container end -->

		<script src="footer2.js"></script>
	</div> <!-- Container end -->

</body>
</html>

问题在页面的左下方和右下方之间。
我随便尝试了所有方法,但是我希望一定有一个我没有尝试过的解决方案。
我不时尝试了一年多,仍然没有运气。
该页面的大部分内容都很完美,只是两个部分之间没有分隔符。
任何建议或信息都非常有用。
预先非常感谢。

1 个答案:

答案 0 :(得分:0)

我更改了CSS中的两件事,使width:100%;的{​​{1}}都一样:

id

其余的更改都在HTML中。决定保留#splitcontentleft { float:left; width:100%; } #splitcontentright { float:right; width:100%; } 以便页面可以在IE和其他浏览器中正确呈现。为此,您必须具有HTML表。基本表格格式为:

display:table;

当我查看表格/表格的格式时,我数了5列和3行。首先,我将<table> <!-- opens the table --> <tr> <!-- the first row in your table --> <td> <!-- your first table cell/column inside the row --> </td> </tr> </table> <!-- everything has to close --> 更改为<div id="col-container...以标识表布局:

<table id="col-container...

我添加了<body> <div id="container"> <script src="nav2.js"></script> <table id="col-container"> 来标记第一行,然后将<tr>更改为<div。请注意,我离开了您的样式<td,并添加了id="colside"。您需要指明行距,以免每行最后没有两个空的rowspan="3"(您的<td>右侧是重复的内容)。

<div>

下一部分是您的<tr> <td id="colside" rowspan="3"> <div class="box"> <h4>Left side</h4> <p>Test text</p> <p>Test text</p> </div> </td> ,再次将其从vertical-line更改为<div>,然后添加<td

rowspan="3"

然后,我们更改您的“中心”栏。由于顶部仅在第一行,因此该区域略有变化。但是...如果您查看其底下的内容,它需要跨越3列。因此,我们将其更改为:

<td class="vertical-line" rowspan="3"></td> <!-- Divider between left side and middle -->

我们还没有留下前5列的代码。我们需要重复左侧的操作并添加另一条垂直线。然后我们用 <td id="col" colspan="3"> <!-- center wrapper --> <div class="box"> <h4>Center</h4> <p>Test text</p> <p>Test text</p> </div> </td> <!-- close center wrapper --> 关闭表行。

</tr>

这下一部分是用于将“中心部分”从其下方的左右分开的水平线。这代表表格的第二行。

    <td class="vertical-line" rowspan="3"></td> <!-- Divider BETWEEN middle and right side -->

    <td id="colside" rowspan="3">
        <div class="box">
            <h4>Right side</h4>
            <p>Test text</p>
            <p>Test text</p>
        </div>
    </td>
</tr>

下一部分是第三行,位于该水平线下方。这是导致显示器出现问题的部分。这行对我来说似乎有点粗,肯定超过10像素,但这可能是浏览器问题。仍然可以。

<tr>
    <td class="horisontal-line" colspan="3"></td> <!-- Divider between upper and lower part of middle -->
</tr>

最后,您关闭了<tr> <td id="splitcontentleft"> <div class="box"> <h4>Lower left</h4> <p>Test text</p> <p>Test text</p> </div> </td> <td class="vertical-line"></td> <!-- DOESN'T work. Divider between lower left and lower right --> <td id="splitcontentright"> <div class="box"> <h4>Lower right</h4> <p>Test text</p> <p>Test text</p> </div> </td> </tr>

</table>

这是所有这些更改的结果。我希望此练习可以帮助您更好地理解编码。如有任何疑问,请告诉我。

</table> <!-- col-container end -->

        <script src="footer2.js"></script>
    </div> <!-- Container end -->
* {margin: 0px; padding: 0px; word-wrap: break-word; font-size: 11px; font-family: Verdana, Tahoma, Arial, sans-serif; box-sizing: border-box;}
body {color: rgb(48, 48, 48); background: rgb(170, 170, 170); margin: 1px 0px 0px; }
a {color: rgb(70, 122, 167); font-weight: bold; text-decoration: none; background-color: inherit;}
a img { border: none; }

p { padding: 1px 3px; }
h1 { background-color: rgb(58, 82, 127); color: rgb(204, 204, 204); margin: 0px; padding: 3px 10px; }
h2 { background-color: rgb(58, 82, 127); color: rgb(204, 204, 204); margin: 0px; padding: 5px 10px; }
h3 { background-color: rgb(10, 10, 10); color: rgb(204, 204, 204); margin: 0px; padding: 3px 10px; }
h4 { background-color: rgb(51, 51, 51); color: rgb(204, 204, 204); margin: 0px; padding: 3px 10px; }
table {border-collapse:collapse; margin: 0px; color: black; width: 100%;}
table, td, th {border:1px solid black; font-size: 11px; padding: 2px 5px 2px;}
th {background-color: rgb(120, 120, 120); color: rgb(230, 230, 230);}
button {padding: 3px;}

#container { width: 1202px; margin: 3px auto;padding: 1px; text-align: left; border:black; background: rgb(184, 184, 184);}

#navigation { height: 2.2em; line-height: 2.2em; width: 1200px; border: 1px solid rgb(255, 255, 255); background: rgb(75, 75, 75);}
#navigation li { float: left; list-style-type: none; border-right: 1px solid rgb(255, 255, 255); white-space: nowrap; }
#navigation li a { display: block; padding: 0px 10px; font-size: 0.8em; font-weight: normal; text-transform: uppercase; background-color: inherit; color: rgb(255, 255, 255); }

#col-container {
    display: table;
    width: 1200px;
    border: 1px solid rgb(255, 255, 255);
    margin: 1px 0px;
    background:#FFF;
}

#col {
    display: table-cell;
    padding: 1px;
    width: 60%;
    vertical-align: top;
    background:blue;
    color:#222;
    border: 1px solid rgb(200, 200, 200);
}

#colside {
    display: table-cell;
    padding: 1px;
    width: 20%;
    vertical-align: top;
    background:blue;
    color:#222;
    border: 1px solid rgb(200, 200, 200);
}

#splitcontentleft {
    float:left;
    width:100%;
}

#splitcontentright {
    float:right;
    width:100%;
}

#imgbutton {padding: 0px;}

#footer {
    clear: both;
    width: 1200px;
    margin: 0px;
    padding: 8px 0px;
    border: 1px solid rgb(255, 255, 255);
    font-size: 0.9em;
    color: rgb(240, 240, 240);
    background: rgb(50, 50, 50);
}

#footer p { margin: 0px; padding: 0px; text-align: center; }

div.box {
    margin: 0px 0px 1px 0px;
    border: 1px solid rgb(192, 192, 192);
    background-color: rgb(250, 251, 252);
    color: rgb(80, 80, 80);
    line-height: 1.3em;
}

div.vertical-line{
      width: 10px;
      background-color: white;
      height: 100%;
      float: left;
    }

div.horisontal-line{
      width: 100%; /* Line width */
      background-color: white; /* Line color */
      border-top: 1px solid rgb(100, 100, 100);
      border-bottom: 1px solid rgb(100, 100, 100);
      height: 3px;
      float: left;
    }