美文网首页
HTML 的width的简单研究

HTML 的width的简单研究

作者: 充满活力的早晨 | 来源:发表于2018-10-19 11:25 被阅读13次

以前只是简单的写点html,没有真正的写过项目。最近公司给安排了点h5的活。在布局的过程中,发现子标签同时包含百分比和px,px具体像素有时候会失效,特此研究下,看看两者具体啥关系。

图1
图2

如上图1和图2,我们要求左边的宽度线可变,而要求右边文字的宽度一定,数字保持对其,文字保持对其。

高手这种布局高手略过,菜鸟布局

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
  .KCERDIncomeDetail{
    background-color: #f6faff;
    padding-top: 20px;
    padding-left: 25px;
    padding-bottom: 20px;
/*    padding-right: 18px;
*/  }
  .KCERDIncomeDetailItem{
    display: flex;
    flex-direction: row;
    align-items: center;;
    justify-content: space-between;
  }
  .KCERDIncomeDetailGraphLength{
    width: 100%;
    height: 10px;
    margin-top: 7px;
    margin-bottom: 8px;
  }
  .KCERDIncomeDetailGraph{
    height: 10px;
    border-radius: 5px;
  }
  .KCERDIncomeDetailNameLength{
    display: flex;
    align-items: center;;
    flex-direction: row;
    width: 150px;
  }
  .KCERDIncomeDetailName{
    font-size: 9px;
    margin-left: 20px;
    color: #606060;
    width: 45px;
  }
  .KCERDIncomeDetailPrice{
    font-size: 13px;
    margin-left: 10px;
    margin-right: 10px;
    width: 75px;
    color: #242424;
  }
</style>
</head>

<body>
<div class="KCERDIncomeDetail"><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: green; width: 100%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">电子支付</div><div class="KCERDIncomeDetailPrice">240680.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(230, 141, 94); width: 4%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">2400.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(74, 205, 198); width: 33%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">240680.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(73, 208, 122); width: 45%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">2.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(74, 205, 198); width: 33%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">280.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(74, 205, 198); width: 33%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">240680.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(74, 205, 198); width: 33%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">2480.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(74, 205, 198); width: 33%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">240680.00</div></div></div><div class="KCERDIncomeDetailItem"><div class="KCERDIncomeDetailGraphLength"><div class="KCERDIncomeDetailGraph" style="background: rgb(73, 128, 208); width: 10%;"></div></div> <div class="KCERDIncomeDetailNameLength"><div class="KCERDIncomeDetailName">现金</div><div class="KCERDIncomeDetailPrice">24680.00</div></div></div></div>
</body>
</html>

进度条的宽度类是

  .KCERDIncomeDetailGraphLength{
    width: 100%;
    height: 10px;
    margin-top: 7px;
    margin-bottom: 8px;
  }

而文字和价格类是

  .KCERDIncomeDetailNameLength{
    display: flex;
    align-items: center;;
    flex-direction: row;
    width: 150px;
  }
  .KCERDIncomeDetailName{
    font-size: 9px;
    margin-left: 20px;
    color: #606060;
    width: 45px;
  }
  .KCERDIncomeDetailPrice{
    font-size: 13px;
    margin-left: 10px;
    margin-right: 10px;
    width: 75px;
    color: #242424;
  }

这里我们进度条的宽度设置的是100%。而文字和价格的总宽度设置的是150px。
这里我们要是去掉KCERDIncomeDetailName 和 KCERDIncomeDetailPrice 的width会发生什么呢?

去掉width 窄屏幕 去掉width 宽屏幕

这里我们发现了电子支付变成两行或者后面的价格不对齐了。
但是文字和价格的在一起的总长度的每项长度不变,但是总长度在变化。(拖动html文件的窗口大小观察)

因此我们这里再把KCERDIncomeDetailName 的width=45px;


KCERDIncomeDetailName 的width=45

发现文本和价格完全不对齐了。将文本的颜色变成蓝色。我们发现如下

image.png

发现文字的宽度不变,而价格的宽度自适应了,相应的super div也跟着自适应了(我们设置的是width=150px)

总结如下:在多个子标签中对子标签使用width属性,要是子标签的width同时包含百分比和具体长度。分情况如下:

具体长度(px)的子标签没有child的:那么长度是定宽的。
具体长度(px)的子标签有child的:具体长度取决于child的布局;

  • 具体长度(px)的子标签有child的,但是child没有具体布局,那么,长度是具体长度(px)的子标签有child的,但是child自有布局指定的长度。
  • 具体长度(px)的子标签有child的,但是child 具有布局,但是不是确定的,那么长度是可变的。
  • 具体长度(px)的子标签有child的,但是child 具有布局,也确定了。那么长度是不变的。

相关文章

网友评论

      本文标题:HTML 的width的简单研究

      本文链接:https://www.haomeiwen.com/subject/rjfqaftx.html