美文网首页
《css 世界》宽度

《css 世界》宽度

作者: McDu | 来源:发表于2020-10-01 16:15 被阅读0次

1. width: auto

auto 是默认值,至少包含 4 种不同的宽度表现:

  1. 充分利用可用空间。比如 <div> <p> 宽度默认 100% 于父级元素。 fill-available
  2. 收缩于包裹。比如浮动、绝对定位、inline-block、table,英文称为 shrink-to-fit。css3 中的 fit-content
  3. 收缩到最小。最易出现在 table-layout 为 auto 的表格中。min-content.
    当父级 relative,且宽度很小的时候,absolute 元素也会出现一柱擎天的情况。
  4. 超出容器限制。除非有明确的 width 设置,否则上述三种情况均不会超出容器限制。特殊情况,如内容很长的连续的英文和数字,或内联元素被设置了 white-space: nowrap. max-content

2. 格式化宽度

格式化宽度仅出现在“绝对定位模型”中,即 position 的值为 absolute 或 fixed 的元素中,默认情况下,绝对定位元素的宽度表现为“包裹性”,宽度由内部尺寸决定,但有一种情况由外部尺寸决定:

对于非替换元素,当 left/righttop/bottom 对立方位的属性值同时存在,元素的宽度表现为“格式化宽度”,其宽度大小相对于最近的具有定位特性(position 不为 static)的祖先元素计算。

3. 内部尺寸与流体特性

内部尺寸,即元素的尺寸由内部的元素决定,而非由外部的容器决定。如何判断?假如一个元素里面没有内容,宽度是 0,那么这个元素就是应用了“内部尺寸”。

  1. 包裹性和自适应性
    内部尺寸具有包裹性和自适应性,即元素尺寸由内部元素决定,但永远小于“包含块”容器的尺寸(除非容器尺寸小于元素的“首选最小宽度”)。
    例子:button 按钮,inline-block 元素,内部文字越多,会在容器的宽度处自动换行。
    <input type="button" value="按钮" 默认 white-space:pre 是不会换行的,需要改成 white-space: normal
    按钮换行效果
    实用: 一行文本居中对齐,多行文本居左对齐
.box {
    text-align: center;
}

.content {
    display: inline-block;
    text-align: left;
}
  1. 首选最小宽度
    指的是元素最适合的最小宽度。
    在 CSS 中,图片和文字的权重要远大于布局。比如外部容器宽度 0px,里面的 inline-block 元素不会在 width:auto 时变为 0 的。此时表现的宽度就是“首选最小宽度”。
    具体规则如下:

    1. 东亚文字(如中文)最小宽度为每个汉字的宽度。
    2. 西方文字最小宽度由特定的连续的英文字符单元决定。并不是所有的英文字符都会组成连续单元,一般会终止于空格、短横线、问号以及其他非英文字符。
      如果想让英文字符和中文一样,每个字符都用最小宽度单元,可以使用 word-break: break-all
      case
      use:“凹”“凸”效果
  2. 最大宽度
    最大宽度就是元素可以有的最大宽度,zxx 是这么理解的:“最大宽度”实际等同于“包裹性”元素设置 white-space: nowrap 声明后的宽度。如果内部没有块级元素或块级元素没有设定宽度值,则“最大宽度”实际上是最大的连续内联盒子的宽度。

4. 宽度分离

宽度最佳实践:width 属性不与影响宽度的 padding 、border(有时包含 margin)属性共存。width 独占一层标签。

.father {
    width: 180px;
}

.son {
    margin: 0 20px;
    padding: 20px;
    border: 1px solid;
}

5. box-sizing

width 默认作用位置在 content box 上。box-sizing 改变了 width 的作用位置

content-box (default)
padding-box
border-box

box-sizing发明初衷:原生普通文本框 <input> 和 <textarea> 的 100%自适应父容器宽度。

拿 textarea 来说,它作为替换元素,特性之一就是尺寸由内部元素决定,且无论其 display 值为 inline 还是 block。对于非替换元素,如果其 display 为 block,具有流动性,宽度由外部尺寸决定,但对于替换元素的宽度不受 display 的影响,因此,通过修改 textare 的 display 是无法让尺寸 100%自适应父容器的。

textarea {
  width: 100%;
  box-sizing: border-box;
}

case
推荐:

input, textarea, img, video, object {
  box-sizing: border-box;
}

相关文章

  • 《css 世界》宽度

    1. width: auto auto 是默认值,至少包含 4 种不同的宽度表现: 充分利用可用空间。比如 ...

  • CSS之宽度与高度

    使用CSS进行布局与定位,就必须了解CSS中的宽度与高度。在CSS中:1.内联元素的宽度由行高决定,宽度由内容、p...

  • CSS布局&CSS居中&媒体查询

    关于CSS布局&CSS居中&媒体查询三者的见解 css布局: 单栏布局: 分为最大宽度和固定宽度,80%以上的页面...

  • 2019-06-24

    转 一、html和css部分 1、如何理解CSS的盒子模型? 标准盒子模型:宽度=内容的宽度(content)+ ...

  • 2019前端基础面试秘籍

    一、html和css部分1、如何理解CSS的盒子模型?标准盒子模型:宽度=内容的宽度(content)+ bord...

  • 2019前端基础面试秘籍

    一、html和css部分 1、如何理解CSS的盒子模型? 标准盒子模型:宽度=内容的宽度(content)+ bo...

  • div的宽度自适应文本

    在css中添加如下代码可使div的宽度等于自身内部文本宽度

  • CSS阶段第一小节第二天

    1.CSS语法 ①CSS的格式 ②CSS的属性 *width:设置宽度,单位px(像素) *height:设置高度...

  • css 宽度分离

    简单来说就是 因为div宽度是width+padding+border,width不是纯宽度,如果不想算,就把wi...

  • CSS边框、图片alt、input标签placeholder、f

    CSS边框属性CSS 边框的属性有style(样式)、color(颜色)、width(宽度)、height(高度)...

网友评论

      本文标题:《css 世界》宽度

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