百分比宽度 div 后跟固定宽度 div

Posted

技术标签:

【中文标题】百分比宽度 div 后跟固定宽度 div【英文标题】:Percentage-width divs followed by fixed width div 【发布时间】:2014-08-28 09:26:12 【问题描述】:

我正在尝试使用 CSS 和 html 实现以下布局:

_____________________________________________________________________________
|  div1  33%         |  div2  33%         |  div3  33%         | div4 200px |
—————————————————————————————————————————————————————————————————————————————

明确一点,我希望div1、div2、div3在添加200px div后占据剩余宽度的三分之一。

我尝试过的:

    在容器 div 中包含 div1、div2、div3

    然后将 div4 浮动到右侧并赋予其 200px 的宽度。

我尝试了其他各种方法,但无济于事。我将不胜感激。

【问题讨论】:

请展示您已经完成的工作(代码)并使用jsfiddle发布一个示例 calc 可以在这里工作。 【参考方案1】:

你必须弄乱填充来修复其余部分,但下面是一个工作小提琴和代码。对糟糕的命名约定感到抱歉,但您应该能够将所有这些更改为您需要的。

http://jsfiddle.net/8HgHt/

.third 
  padding: 0;
  background-color: gray;
  height: 100px;
  float: left;
  display: table-cell;
  width: 33%;


.third:hover 
  background-color: red;


.third_holder 
  float: left;
  width: 100%;
  display: table-cell;


.absolute_div 
  width: 200px;
  display: table-cell;
  background-color: silver;


.whole_container 
  width: 100%;
  display: table;
<div class="whole_container">

  <div class="third_holder">
    <div class="third">
    </div>
    <div class="third">
    </div>
    <div class="third">
    </div>
  </div>

  <div class="absolute_div">
  </div>
</div>

【讨论】:

【参考方案2】:

你可以使用calc

Jsfiddle Demo

CSS

* 
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box; /* accounting for borders */


.wrapper 
    width:80%; /* or any width */
    margin:10px auto; /* for visualisation purposes only */
    overflow:hidden; /* float containment */


.wrapper div 
    float:left;
    height:100px;


.fixed 
    width:200px;
    background: lightblue;


.percent 
    width:calc((100% - 200px)/3); /* the magic bit */
    background: lightgreen;
    border:1px solid grey;

支持 IE9 及以上版本 - http://caniuse.com/calc

【讨论】:

【参考方案3】:

这会有所帮助:http://jsfiddle.net/GUcCa/1/

var fxdWidth = parseInt($('#fixd').css("width").replace("px", ''));
var totalWidth = parseInt($('#fixd').parent().css("width").replace("px", ''));
$('#floating').css("width", totalWidth - fxdWidth + "px");
.border 
  border-style: dotted;
  border-width: 1px;


.border2 
  border-style: solid;
  border-width: 1px;


.block 
  display: inline-block;
  width: 33%;


#fixd 
  width: 200px;
  float: right;


#floating 
  width: 100%;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="border block" id="fixd">
  div4
</div>
<div class="border2 block" id="floating">
  <div class="border block">
    div1
  </div>
  <div class="border block">
    div2
  </div>
  <div class="border block">
    div3
  </div>
</div>

【讨论】:

以上是关于百分比宽度 div 后跟固定宽度 div的主要内容,如果未能解决你的问题,请参考以下文章

响应式 div 宽度结合固定宽度 div 纯 CSS

div css样式宽度设成百分比怎么在浏览器中获得它的像素值?

div css布局网页如何实现网页自动适应屏幕高度和宽度

DIV宽度设置为百分比(如50%),如何使DIV的高度等于宽度

将 Fixed div 设置为父容器的 100% 宽度

div中 宽度是百分比显示的,怎么在js中获取这个宽度呢?