请考虑以下代码:
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
width: 300px;
border: 1px solid red;
}
#second {
border: 1px solid green;
}Run Code Online (Sandbox Code Playgroud)
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>Run Code Online (Sandbox Code Playgroud)
我希望这两个div在包装器div中彼此相邻.在这种情况下,绿色div的高度应确定包装纸的高度.
我怎么能通过CSS实现这一目标?
cla*_*uzy 419
浮动一个或两个内部div.
浮动一个div:
#wrapper {
width: 500px;
border: 1px solid black;
overflow: hidden; /* will contain if #first is longer than #second */
}
#first {
width: 300px;
float:left; /* add this */
border: 1px solid red;
}
#second {
border: 1px solid green;
overflow: hidden; /* if you don't want #second to wrap below #first */
}
Run Code Online (Sandbox Code Playgroud)
或者如果你漂浮两者,你需要鼓励包装div包含浮动的孩子,或者它会认为它是空的而不是把它们放在它们周围
浮动两个div:
#wrapper {
width: 500px;
border: 1px solid black;
overflow: hidden; /* add this to contain floated children */
}
#first {
width: 300px;
float:left; /* add this */
border: 1px solid red;
}
#second {
border: 1px solid green;
float: left; /* add this */
}
Run Code Online (Sandbox Code Playgroud)
jim*_*rin 114
有两个div,
<div id="div1">The two divs are</div>
<div id="div2">next to each other.</div>
Run Code Online (Sandbox Code Playgroud)
你也可以使用这个display属性:
#div1 {
display: inline-block;
}
#div2 {
display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)
这里是 jsFiddle的例子.
如果div1超过一定高度,div2将放在旁边div1的底部.为了解决这个问题,使用vertical-align:top;上div2.
这里是 jsFiddle的例子.
Jam*_*mes 29
您可以使用CSS float属性将元素彼此相邻:
#first {
float: left;
}
#second {
float: left;
}
Run Code Online (Sandbox Code Playgroud)
您需要确保包装器div允许浮动宽度,并且边距等设置正确.
meo*_*meo 16
这是解决方案:
#wrapper {
width: 500px;
border: 1px solid black;
overflow: auto; /* so the size of the wrapper is alway the size of the longest content */
}
#first {
float: left;
width: 300px;
border: 1px solid red;
}
#second {
border: 1px solid green;
margin: 0 0 0 302px; /* considering the border you need to use a margin so the content does not float under the first div*/
}
Run Code Online (Sandbox Code Playgroud)
你的演示更新了;
Md.*_*fee 15
尝试使用flexbox模型.写作简单易行.
CSS:
#wrapper {
display: flex;
border: 1px solid black;
}
#first {
border: 1px solid red;
}
#second {
border: 1px solid green;
}
Run Code Online (Sandbox Code Playgroud)
默认方向是行.因此,它在#wrapper中彼此相邻排列.但它不支持IE9或低于该版本
Jak*_*son 14
选项1
float:left在两个div元素上使用,并为两个div元素设置%width,总宽度为100%.
用于box-sizing: border-box;浮动div元素.值border-box强制填充和边框进入宽度和高度,而不是展开它.
使用clearfix <div id="wrapper">清除浮动的子元素,这将使包装div缩放到正确的高度.
.clearfix:after {
content: " ";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
#first, #second{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
border: 1px solid red;
float:left;
width:50%;
}
#second {
border: 1px solid green;
float:left;
width:50%;
}
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/dqC8t/3381/
选项2
position:absolute在一个元素上使用,在另一个元素上使用固定宽度.
添加位置:相对于<div id="wrapper">元素,使子元素绝对定位到<div id="wrapper">元素.
#wrapper {
width: 500px;
border: 1px solid black;
position:relative;
}
#first {
border: 1px solid red;
width:100px;
}
#second {
border: 1px solid green;
position:absolute;
top:0;
left:100px;
right:0;
}
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/dqC8t/3382/
选项3
display:inline-block在两个div元素上使用,并为两个div元素设置%width,总宽度为100%.
再次(与float:left示例相同)box-sizing: border-box;在div元素上使用.值border-box强制填充和边框进入宽度和高度,而不是展开它.
注意:内联块元素可能存在间距问题,因为它受HTML标记中的空格影响.更多信息请访问:https://css-tricks.com/fighting-the-space-between-inline-block-elements/
#first, #second{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
#wrapper {
width: 500px;
border: 1px solid black;
position:relative;
}
#first {
width:50%;
border: 1px solid red;
display:inline-block;
}
#second {
width:50%;
border: 1px solid green;
display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/dqC8t/3383/
最后一个选项是使用名为flex的新显示选项,但请注意可能会出现浏览器兼容性:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html
小智 7
尝试使用下面的代码更改将两个div放在彼此的前面
#wrapper {
width: 500px;
border: 1px solid black;
display:flex;
}
Run Code Online (Sandbox Code Playgroud)
这是正确的 CSS3 答案。希望这现在能以某种方式帮助你 :D 我真的建议你阅读这本书:https : //www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863实际上我现在通过阅读这本书做出了这个解决方案. :D
#wrapper{
display: flex;
flex-direction: row;
border: 1px solid black;
}
#first{
width: 300px;
border: 1px solid red;
}
#second{
border: 1px solid green;
}Run Code Online (Sandbox Code Playgroud)
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>Run Code Online (Sandbox Code Playgroud)
小智 5
这很容易-您可以用困难的方式做到
.clearfix:after {
content: " ";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
#first, #second{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
border: 1px solid red;
float:left;
width:50%;
}
#second {
border: 1px solid green;
float:left;
width:50%;
}Run Code Online (Sandbox Code Playgroud)
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>Run Code Online (Sandbox Code Playgroud)
还是简单的方法
#wrapper {
display: flex;
border: 1px solid black;
}
#first {
border: 1px solid red;
}
#second {
border: 1px solid green;
}Run Code Online (Sandbox Code Playgroud)
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>Run Code Online (Sandbox Code Playgroud)
还有大约一百万种其他方式。
但是我只是简单的方法。我还想告诉你,这里的很多答案都是错误的,但是我所展示的两种方式至少都适用于HTML 5。
我的做法:
<div class="left">Left</div>
<div class="right">Right</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.left {
float: left;
width: calc(100% - 200px);
background: green;
}
.right {
float: right;
width: 200px;
background: yellow;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
795807 次 |
| 最近记录: |