三列布局不起作用
Three column layout not working
我正在尝试制作一个带有 right/left 边栏和主要内容的三栏布局。
我将左侧边栏向左浮动,右侧边栏向右浮动,希望主要内容环绕在右侧边栏周围,因为它位于 HTML 中的右侧边栏之后。当所有三个元素的宽度都为主 div
的 25% 时,内容将环绕在左侧边栏 div
下方,而不环绕右侧边栏 div
。但是,当我将 main
的宽度增加到大约 75% 时,它似乎停留在中间。
.left-sidebar {
background: red;
width: 25%;
float: left;
}
.right-sidebar {
background: blue;
width: 25%;
float: right;
}
.main {
background:yellow;
width: 25%;
}
<body>
<div class="left-sidebar">Lorem ipsum dolor sit amet, </div>
<div class="right-sidebar">Filler</div>
<div class="main">Text</div>
</body>
谁能告诉我这是什么原因造成的?
您需要浮动所有元素:
.left-sidebar, main, .right-sidebar { float: left; width: 25%;}
并重新排序 html:
<div class="left-sidebar">Lorem ipsum dolor sit amet</div>
<div class="main"></div>
<div class="right-sidebar"></div>
所有元素都需要用float标记:
HTML
<div>
<h2 align="center">responsive solution optional title</h2>
<div align="center" class="float-left">utmost left column</div>
<div align="center" class="float-left">centre column</div>
<div align="center" class="float-left">right sidebar</div>
</div>
CSS
.float-left {
float:left;
width:33%;
}
您的右侧边栏和主要 div 也需要在 css 或某些内容中指定的高度才能可见,否则将具有 0px 高度。
此外 .main class 需要有 float:left
.left-sidebar {
background: red;
width : 25%;
float :left;
}
.right-sidebar {
background: blue;
width : 25%;
float: right ;
height:10px;
}
.main {
background:yellow;
width : 25%;
height:10px;
float:left;
}
我不完全明白你想做什么,但这是一个想法。
您应该首先将所有内容包裹在 div 上并给出特定的宽度。
另外,如果你想要中间的 main 改变你的 main div 的位置。
例如:
<div class="mainWrap">
<div class = "left-sidebar">Lorem ipsum dolor sit amet </div>
<div class = "main">Lorem ipsum dolor sit amet</div>
<div class = "right-sidebar">Lorem ipsum dolor sit amet</div>
</div>
然后css。如果您将所有内容都浮动到左侧,您将拥有内联 3 列布局。
.mainWrap {
width:100%;
}
.left-sidebar { background: red;
width : 33%;
float :left; }
.right-sidebar {background: blue;
width : 33%;
float: right ;}
.main { background:yellow;
width : 33%;}
这是例子
Demo
希望对您有所帮助
现在你应该居中 .main
class。只需将 margin:0 auto;
添加到您的 css 代码
.sidebar-left {float:left; width:25%; background:cyan;}
.sidebar-right {float:right; width:25%; background:lime;}
.main {width:50%; background:tomato; margin:0 auto;}
<div class="sidebar-left">left</div>
<div class="sidebar-right">right</div>
<div class="main">main</div>
我正在尝试制作一个带有 right/left 边栏和主要内容的三栏布局。
我将左侧边栏向左浮动,右侧边栏向右浮动,希望主要内容环绕在右侧边栏周围,因为它位于 HTML 中的右侧边栏之后。当所有三个元素的宽度都为主 div
的 25% 时,内容将环绕在左侧边栏 div
下方,而不环绕右侧边栏 div
。但是,当我将 main
的宽度增加到大约 75% 时,它似乎停留在中间。
.left-sidebar {
background: red;
width: 25%;
float: left;
}
.right-sidebar {
background: blue;
width: 25%;
float: right;
}
.main {
background:yellow;
width: 25%;
}
<body>
<div class="left-sidebar">Lorem ipsum dolor sit amet, </div>
<div class="right-sidebar">Filler</div>
<div class="main">Text</div>
</body>
谁能告诉我这是什么原因造成的?
您需要浮动所有元素:
.left-sidebar, main, .right-sidebar { float: left; width: 25%;}
并重新排序 html:
<div class="left-sidebar">Lorem ipsum dolor sit amet</div>
<div class="main"></div>
<div class="right-sidebar"></div>
所有元素都需要用float标记:
HTML
<div>
<h2 align="center">responsive solution optional title</h2>
<div align="center" class="float-left">utmost left column</div>
<div align="center" class="float-left">centre column</div>
<div align="center" class="float-left">right sidebar</div>
</div>
CSS
.float-left {
float:left;
width:33%;
}
您的右侧边栏和主要 div 也需要在 css 或某些内容中指定的高度才能可见,否则将具有 0px 高度。
此外 .main class 需要有 float:left
.left-sidebar {
background: red;
width : 25%;
float :left;
}
.right-sidebar {
background: blue;
width : 25%;
float: right ;
height:10px;
}
.main {
background:yellow;
width : 25%;
height:10px;
float:left;
}
我不完全明白你想做什么,但这是一个想法。 您应该首先将所有内容包裹在 div 上并给出特定的宽度。 另外,如果你想要中间的 main 改变你的 main div 的位置。 例如:
<div class="mainWrap">
<div class = "left-sidebar">Lorem ipsum dolor sit amet </div>
<div class = "main">Lorem ipsum dolor sit amet</div>
<div class = "right-sidebar">Lorem ipsum dolor sit amet</div>
</div>
然后css。如果您将所有内容都浮动到左侧,您将拥有内联 3 列布局。
.mainWrap {
width:100%;
}
.left-sidebar { background: red;
width : 33%;
float :left; }
.right-sidebar {background: blue;
width : 33%;
float: right ;}
.main { background:yellow;
width : 33%;}
这是例子 Demo
希望对您有所帮助
现在你应该居中 .main
class。只需将 margin:0 auto;
添加到您的 css 代码
.sidebar-left {float:left; width:25%; background:cyan;}
.sidebar-right {float:right; width:25%; background:lime;}
.main {width:50%; background:tomato; margin:0 auto;}
<div class="sidebar-left">left</div>
<div class="sidebar-right">right</div>
<div class="main">main</div>