美文网首页CSS
CSS深入浅出(1)-流

CSS深入浅出(1)-流

作者: 如梦初醒Tel | 来源:发表于2019-03-14 11:50 被阅读169次

何为“流”

有人称流是文档流亦或者是正常留,我简称为“流”,它在css中引导元素的排列和定位的一条看不见的“水流”。
块级元素一定是独占一行,并且依次向下排列
内联元素从左往右在一行中排列,需要换行的时候就会按照“之”换行。


块级元素 内联元素

何为“块级元素”

“块级元素”对应的英文是 block-level element,常见的块级元素有<div>、<li><table>
等。需要注意是,“块级元素”和“display 为 block 的元素”不是一个概念。例如, <li>元
素默认的 display 值是 list-item, <table>元素默认的 display 值是table,但是它们均是“块级元素”,因为它们都符合块级元素的基本特征,也就是一个水平流上只能单独显示一个元素,多个块级元素则换行显示。
正是由于“块级元素”具有换行特性,因此理论上它都可以配合 clear 属性来清除浮动带来的影响。例如:

.clear:after {
content: '';
display: block; // 也可以是 table,或者是 list-item
clear: both;
}

在实际开发当中,常用的就是blocktable,不会使用list-item

  1. list-item会出现项目符号,需要额外多写一行代码list-style:none;声明。
  2. IE浏览器不支持,兼容性不够好。

"with:auto"

width 的默认值是 auto。
(1) 充分利用可用空间。比方说, <div>、<p>这些元素的宽度默认是 100%于父级容器的。
(2) 收缩与包裹。典型代表就是浮动、绝对定位、 inline-block 元素或 table 元素。
(3) 收缩到最小。 这个最容易出现在 table-layout 为 auto 的表格中

image.png

如上:每一列的空间不够,文字能断就断,中文随便断,英文不能断。
(4) 超出容器限制。除非有明确的 width 相关设置,否则上面 3 种情况尺寸都不会主动超过父级容器宽度的,但是存在一些特殊情况。

image.png

外部尺寸

<div>默认宽度 100%显示,是“外部尺寸”,其余全部是“内部尺寸”。而这唯一的“外部尺寸”,是“流”的精髓所在。

外部尺寸和流体特性

一个垂直导航:

a {
display: block;
width: 100%;
}

<a>元素默认 diplay 是 inline,所以,设置 display:block 使其块状化绝对没有问题,但后面的 width:100%就没有任何出现的必要了。
写CSS一定要按照“鑫三无准则”,即“无宽度,无图片,无浮动”。为何要“无宽度”?
原因很简单,表现为“外部尺寸”的块级元素一旦设置了宽度,流动性就丢失了。
流动性,并不是看上去的宽度 100%显示这么简单,而是一种 margin/border/padding和 content 内容区域自动分配水平空间的机制。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<style>
  .width {
  width: 100%;
}

.nav {
  background-color: #cd0000;
}
.nav-a {
  display: block;
  margin: 0 10px;
  padding: 9px 10px;
  border-bottom: 1px solid #b70000;
  border-top: 1px solid #de3636;
  color: #fff;
}
.nav-a:first-child { border-top: 0; }
.nav-a + .nav-a + .nav-a { border-bottom: 0;}
  </style>
<body>
<h4>无宽度,借助流动性</h4>
<div class="nav">
  <a href="" class="nav-a">导航1</a>
  <a href="" class="nav-a">导航2</a>
  <a href="" class="nav-a">导航3</a>
</div>
<h4>width:100%</h4>
<div class="nav">
  <a href="" class="nav-a width">导航1</a>
  <a href="" class="nav-a width">导航2</a>
  <a href="" class="nav-a width">导航3</a>
</div>
</body>
</html>

尝试一下

对比

这两个唯一的区别就是前者没有指定宽度,后者指定了width:100% 结果就是后者的尺寸超过了外部的容器。即“流动性丢失”。

借助流动性,就算外部的容器尺寸变化,这个导航也可以自适应。这就是利用浏览器原生流特性的好处。

盒子

width作用在“内在盒子”
内在盒子分为四种不同的盒子,分别是 content box、 padding box、 border box和 margin box。


盒子

相关文章

  • CSS深入浅出(1)-流

    何为“流” 有人称流是文档流亦或者是正常留,我简称为“流”,它在css中引导元素的排列和定位的一条看不见的“水流”...

  • CSS深入浅出1

    css深入浅出 主要内容:布局、居中、自适应、媒介查询、bfc和ifc(触发条件) 1. 宽度与高度 1.1 di...

  • 诗书国学2018

    1.静水深流赋 [玫瑰]静水深流[玫瑰] 静候佳音如意道 水到渠成自然心 深入浅出悟良品 流觞曲水有缘人 [玫瑰]...

  • css_高度与宽度

    以下是css深入浅出视频截图 个人觉得非常实用且涨知识

  • HTMLCSS学习笔记(七)-- 定位与锚点

    CSS文档流 CSS 有三种基本的定位机制:普通流、浮动流、定位流 POSTION position定位属性,检索...

  • 浮动、定位

    1 . 文档流的概念指什么,有哪种方式可以让元素脱离文档流 CSS普通流/文档流(normal flow)是元素按...

  • css 清除浮动的方法及BFC剖析

    一、常用css定位流描述 1、文档流定位 position: static(默认方式) 页面元素的默认定位方式 块...

  • css的定位机制

    css中的定位机制有3中,分别是标准文档流、浮动定位和绝对定位 1.标准文档流(Normal flow)(1)对于...

  • webpack Error: Cannot find modul

    深入浅出webpack 1.5章节使用Extract-text-webpack-plugin分离css安装插件后打...

  • 信息流广告Feeds AD

    什么是信息流广告? 深入浅出解析信息流广告|人人都是产品经理 1. 与产品功能混排在一起的原生广告。 例如:①微信...

网友评论

    本文标题:CSS深入浅出(1)-流

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