我使用以下代码构建一个固定的侧边栏,它应始终为100%高度和20%宽度。主要部分应显示在它旁边。
#sidebar {
width: 20%;
position: fixed;
background: red;
height: 100%;
}
main {
width: 80%;
background: blue;
min-height: 1200px;
}

<div id="sidebar">
<nav>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</nav>
</div>
<main>
<div id="content">
Content
</div>
</main>
&#13;
代码似乎不起作用。我做错了什么?
答案 0 :(得分:4)
通过修复侧边栏,您可以将其从通常的CSS元素顺序中删除。因此,将main
设置为80%
并不能真正创建您希望实现的20% + 80%
幻觉。相反,您的main
会在侧边栏下,而且宽度也只有80%
。
你想要的是一个100%
main
,左边是20%
的填充,所以没有任何东西可以到达那里,因此你的所有内容都是可见的。
#sidebar {
width: 20%;
position: fixed;
background: red;
height: 100%;
}
main {
width: 100%;
box-sizing: border-box;
padding-left: 20%;
background: blue;
min-height: 1200px;
}
&#13;
<div id="sidebar">
<nav>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</nav>
</div>
<main>
<div id="content">
Content
</div>
</main>
&#13;
答案 1 :(得分:2)
body{
position: relative;
margin: 0px;
}
#sidebar {
width: 20%;
position: fixed;
background: red;
height: 100%;
}
main {
width: 80%;
box-sizing: border-box;
background: #00F none repeat scroll 0% 0%;
min-height: 1200px;
margin-left: 20%;
position: absolute;
}
<body>
<div id="sidebar">
<nav>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</nav>
</div>
<main>
<div id="content">
Content
</div>
</main>
</body>
答案 2 :(得分:1)
将margin-left: 20%
添加到main
以抵消#sidebar
所涵盖的空间。
* {
margin: 0px;
padding: 0px;
}
#sidebar {
width: 20%;
position: fixed;
background: red;
height: 100%;
}
main {
margin-left: 20%;
width: 80%;
background: blue;
min-height: 1200px;
}
&#13;
<div id="sidebar">
<nav>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</nav>
</div>
<main>
<div id="content">
Content
</div>
</main>
&#13;
答案 3 :(得分:0)
在主div上添加左边距和侧边栏一样宽。
if(!isset($_POST['session_ID']))
{
$json[] = array(
'return' => $errors_authentification,
'error_msg' => "User not authenticated"
);
echo json_encode($json);
return;
}
session_id($_POST['session_ID']);
session_start();
#sidebar {
width: 20%;
position: fixed;
background: red;
height: 100%;
}
main {
width: 80%;
background: blue;
min-height: 1200px;
margin-left: 20%;
}
答案 4 :(得分:0)
您的代码很好但是侧边栏与主要内容重叠。您可以做的是将position属性添加到主要内容并调整其左侧属性。
使用position属性和left属性尝试此代码。 :)
#sidebar {
width: 20%;
position: fixed;
background: red;
height: 100%;
}
main {
width: 80%;
background: blue;
min-height: 1200px;
position:absolute;
left:100px;
}
&#13;
<div id="sidebar">
<nav>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
</ul>
</nav>
</div>
<main>
<div id="content">
Content
</div>
</main>
&#13;