title样式 - html title标签




CSS两个div彼此相邻 (9)

@roe和@MohitNanda建议的方法工作,但是如果右边的div设置为float:right; ,那么它必须首先出现在HTML源代码中。 这打破了从左到右的阅读顺序,如果页面在样式关闭的情况下显示,这可能会造成混淆。 如果是这样的话,使用包装div和绝对定位可能会更好:

<div id="wrap" style="position:relative;">
    <div id="left" style="margin-right:201px;border:1px solid red;">left</div>
    <div id="right" style="position:absolute;width:200px;right:0;top:0;border:1px solid blue;">right</div>
</div>

证明:

左右

编辑:嗯,有趣。 预览窗口显示格式正确的div,但渲染后的项目不显示。 对不起,你必须自己尝试。

我想把两个<div>放在一起。 正确的<div>大约是200px; 左边的<div>必须填满屏幕宽度的其余部分? 我怎样才能做到这一点?


UPDATE

如果您需要将元素放置在一行中,则可以使用Flex布局 。 在这里你有另一个Flex教程 。 这是一个很棒的CSS工具,尽管它不是100%兼容的,但它的support每天都会变得更好。 这工作如下简单:

HTML

<div class="container">
    <div class="contentA"></div>
    <div class="contentB"></div>
</div>

CSS

.container {
    display: flex;
    width: 100%;
    height: 200px;
}

.contentA {
    flex: 1;
}

.contentB {
    flex: 3;
}

你在这里得到的是一个总容量为4个单元的容器,它与孩子分享的空间是1/4和3/4。

我在CodePen中做了一个解决你的问题的例子。 我希望它有帮助。

http://codepen.io/timbergus/pen/aOoQLR?editors=110

很古老

也许这只是一个废话,但你有没有尝试过一张桌子? 它不直接使用CSS来定位div,但它工作正常。

你可以创建一个1x2的表格,并将你的divs放在里面,然后用CSS格式化表格,以便将它们放在你想要的位置:

<table>
  <tr>
    <td>
      <div></div>
    </td>
    <td>
      <div></div>
    </td>
  </tr>
</table>

注意

如果你想避免使用表格,如前所述,你可以使用float: left;float: right; 并在下面的元素中,不要忘记添加一个clear: left;clear: right;clear: both; 以便清理位置。


只需使用z-index,一切都会很好。 确保将位置标记为固定或绝对。 那么没有什么东西会像浮标一样移动。


您可以使用flexbox布置物品:

#parent {
  display: flex;
}
#narrow {
  width: 200px;
  background: lightblue;
  /* Just so it's visible */
}
#wide {
  flex: 1;
  /* Grow to rest of container */
  background: lightgreen;
  /* Just so it's visible */
}
<div id="parent">
  <div id="wide">Wide (rest of width)</div>
  <div id="narrow">Narrow (200px)</div>
</div>

这基本上只是刮擦flexbox的表面。 Flexbox可以做很棒的事情。

对于较旧的浏览器支持,您可以使用CSS floatwidth属性来解决它。

#narrow {
  float: right;
  width: 200px;
  background: lightblue;
}
#wide {
  float: left;
  width: calc(100% - 200px);
  background: lightgreen;
}
<div id="parent">
  <div id="wide">Wide (rest of width)</div>
  <div id="narrow">Narrow (200px)</div>
</div>


我今天遇到了这个问题。 基于上述解决方案,这对我有效:

<div style="width:100%;"> 
    <div style="float:left;">Content left div</div> 
    <div style="float:right;">Content right div</div> 
</div> 

简单地让父div跨越整个宽度并浮动其中包含的div。


我使用float和overflow-x的混合:hidden。 最小的代码,始终有效。

https://jsfiddle.net/9934sc4d/4/ - 加上你不需要清理你的浮点数!

.left-half{
    width:200px;
    float:left;
}
.right-half{
    overflow-x:hidden;
}

正如大家已经指出的那样,您可以通过设置float:right; RHS的内容和LHS的负利润率。

但是..如果你不使用float: left; 在LHS(如Mohit所做的那样),那么您将获得一个阶梯效应,因为LHS div仍将消耗布局中的边际空间。

但是,LHS float将收缩内容,因此如果不可接受,您需要插入定义宽度的子节点,此时您可能已定义了父级的宽度。

然而,正如David指出的那样,您可以更改标记的读取顺序以避免LHS浮动要求,但这具有可读性和可能的​​可访问性问题。

然而..这个问题可以通过给予一些额外的标记浮动来solved

(警告:我不赞成在这个例子中使用.clearing div,详情请看here

所有考虑的事情,我认为我们大多数人希望有一个非贪婪的宽度:剩余在CSS3中...


解释我的一个网站做了类似的事情:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <style TYPE="text/css"><!--

.section {
    _float: right; 
    margin-right: 210px;
    _margin-right: 10px;
    _width: expression( (document.body.clientWidth - 250) + "px");
}

.navbar {
    margin: 10px 0;
    float: right;
    width: 200px;
    padding: 9pt 0;
}

  --></style>
 </head>
 <body>
  <div class="navbar">
  This will take up the right hand side
  </div>
  <div class="section">
  This will fill go to the left of the "navbar" div
  </div>
 </body>
</html>

div1 {
    float: right;
} 
div2 {
    float: left;
}

只要您设置为clear: both这将工作正常clear: both对于分隔这两个列块的元素都是如此。





css