精通css之路 --- width:auto 里的 width:100%

我一直知道的是,在width:100%时:

  • inline-block : 被内容撑开

  • block : 充满父盒子

后来在 width:autowidth:100% 一起使用时,我发现了一些有趣的问题,我随着我的发现把它们记录了下来

  1. 在这里插入图片描述
<div class="out">
  <div></div>
  <span> 这是一段话这是一段话这是一段话 </span>
</div>

.out {
  display: inline-block;
  height: 80px;
  white-space: nowrap;
  background-color: #a0b3d6;
}
.out>div {
  width: 228px;
  height: 90%;
  display: inline-block;
  background-color: #c1d5eb;
}
.out>span {
  display: inline-block;
  width: 100%;
  background-color: #34538b;
  color: #fff;
}
  1. 如果span{width: auto}

    在这里插入图片描述

  2. 如果span里没有文字会怎么样呢
    在这里插入图片描述

    <div class="out">
      <div></div>
      <span></span>
    </div>
    
    .out {
      display: inline-block;
      height: 80px;
      white-space: nowrap;
      background-color: #a0b3d6;
    }
    .out>div {
      width: 228px;
      height: 90%;
      display: inline-block;
      background-color: #c1d5eb;
    }
    .out>span {
      display: inline-block;
      width: 100%;
      height: 20%;
      background-color: #34538b;
      color: #fff;
    }
    
  3. 现在我又发现一个问题,div 和 span之间的空隙是什么呢? 原来这是空白折叠现象

    空白折叠发生在:标准文档流的行内元素之间。

    在这里插入图片描述

    <div></div>
    <span></span>
    
    div {
      width: 228px;
      height: 80px;
      display: inline-block;
      background-color: #c1d5eb;
    }
    
    span {
      display: inline-block;
      width: 100px;
      height: 80px;
      background-color: #34538b;
      color: #fff;
    }
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
帮我优化以下代码<style> * { box-sizing: border-box; } .row::after { content: ""; clear: both; display: table; } [class*="col-"] { float: left; padding: 15px; } html { font-family: "Lucida Sans", sans-serif; } .header { background-color: #0603F7; color: #ffffff; padding: 3px; } .menu ul { list-style-type: none; margin: 0; padding: 0; } .menu li { padding: 8px; margin-bottom: 7px; background-color: #33b5e5; color: #ffffff; box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } .menu li:hover { background-color: #F59B06; } .aside { background-color: #33b5e5; padding: 15px; color: #ffffff; text-align: center; font-size: 14px; box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } .footer { background-color: #0099cc; color: #ffffff; text-align: center; font-size: 12px; padding: 15px; } /* For mobile phones: */ [class*="col-"] { width: 100%; } @media only screen and (min-width: 600px) { /*小屏幕 */ .col-s-1 {width: 8.33%;} .col-s-2 {width: 16.66%;} .col-s-3 {width: 100%;} .col-s-4 {width: 33.33%;} .col-s-5 {width: 41.66%;} .col-s-6 {width: 75%;} .col-s-7 {width: 58.33%;} .col-s-8 {width: 66.66%;} .col-s-9 {width: 100%;} .col-s-10 {width: 83.33%;} .col-s-11 {width: 91.66%;} .col-s-12 {width: 100%;} } @media only screen and (min-width: 768px) { /*大屏幕*/ .col-1 {width: 8.33%;} .col-2 {width: 16.66%;} .col-3 {width: 100%;} .col-4 {width: 33.33%;} .col-5 {width: 41.66%;} .col-6 {width: 100%;} .col-7 {width: 58.33%;} .col-8 {width: 66.66%;} .col-9 {width: 75%;} .col-10 {width: 83.33%;} .col-11 {width: 91.66%;} .col-12 {width: 100%;} } </style>
最新发布
05-30
首先,这段代码已经非常简洁了,但还是有一些优化空间: 1. 将重复的样式提取出来,避免重复书写。例如,可以将 `.menu li` 和 `.aside` 中的 `background-color`,`box-shadow`,`color` 和 `padding` 提取出来,作为一个公共的样式类,再在需要使用的地方加上该样式类即可。 2. 可以考虑使用 CSS 预处理器来编写样式,例如 Sass 或 Less,可以更加简洁、易读、易维护。 3. 可以将媒体查询中的重复代码提取出来,避免重复书写。例如,可以将 `.col-s-*` 和 `.col-*` 中的宽度设置提取出来,再在媒体查询中加上相应的样式即可。 4. 对于类名中的数字,可以考虑使用循环语句生成,避免重复书写。 以下是优化后的代码: ``` <style> * { box-sizing: border-box; } .row::after { content: ""; clear: both; display: table; } .common-style { background-color: #33b5e5; color: #ffffff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); padding: 15px; } .header { background-color: #0603F7; color: #ffffff; padding: 3px; } .menu ul { list-style-type: none; margin: 0; padding: 0; } .menu li { padding: 8px; margin-bottom: 7px; box-shadow: none; } .menu li:hover { background-color: #F59B06; } .aside { text-align: center; font-size: 14px; } .aside-common { width: 100%; } .footer { background-color: #0099cc; color: #ffffff; text-align: center; font-size: 12px; padding: 15px; } /* For mobile phones: */ [class*="col-"] { width: 100%; } @for $i from 1 through 12 { $width: percentage($i / 12); .col-s-#{$i} { width: $width; } @media only screen and (min-width: 600px) { .col-#{$i} { width: $width; } } } .col-s-3, .col-s-9 { width: 100%; } @media only screen and (min-width: 768px) { .col-s-6 { width: 75%; } .col-s-7 { width: 58.33%; } .col-s-8 { width: 66.66%; } .col-s-10 { width: 83.33%; } .col-s-11 { width: 91.66%; } .col-3 { width: 100%; } .col-6 { width: 100%; } .col-9 { width: 75%; } } </style> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值