zoukankan      html  css  js  c++  java
  • 【转】【自己总结了一些点】理解css视觉格式化

    理解css视觉格式化

    参考:

    详尽一点的=>http://www.cnblogs.com/xiaohuochai/p/6252163.html

    简单一点的=>http://www.jianshu.com/p/f1019737e155

    主要是 行布局 的内容比较需要理解。

    想起之前写页面遇到过的问题:
    在表单中,文本与input夹杂,然后垂直怎么也对不齐的问题。。

    太蛋疼了,所以好好理解了一下

    【mark的术语】

    1、正常流
      文本从左向右、从上向下显示,是传统HTML文档的文本布局

    2、非替换元素
      如果元素的内容包含在文档中,则称之为非替换元素

    3、替换元素
      指作为其他内容占位符的一个元素(<img>、<video>、<audio>等)。但,inline-block元素在布局中也当作替换元素处理。所以,又包含大量的表单类元素及表格类元素

    4、块级元素
      在正常流中,在其元素框之前和之后生成“换行”,且会垂直摆放的元素。通过声明display:block可以让元素生成块级框

    5、行内元素
      在正常流中,不会在元素框之前或之后生成“行分隔符”,是块级元素的后代。通过声明display:inline可以让元素生成行内框

    6、根元素
      位于文档树顶端的元素,在HTML文档中,是元素HTML

    总结点

    1、em框
      em框在字体中定义,也称为字符框(character box)。实际的字形可能比其em框更高或更矮。在CSS中,font-size的值确定了各个em框的高度

    2、内容区
      在非替换元素中,内容区是元素中各字符的em框串在一起构成的框;
    而在替换元素中,内容区就是元素的固有高度再加上可能有的外边距、边框或内边距。内容区类似于一个块级元素的内容框(content box)

    3、行间距
      行间距(leading)是font-size和line-height之差。这个差实际上要分为两半,分别应用到内容区的顶部和底部

    **[注意]行间距只应用于非替换元素!!**
    

    2、构造各元素的行内框

    a、对于替换元素来说,得到各元素的height、margin-top、margin-bottom、padding-top、padding-bottom、border-top-width、border-bottom-width值,把它们加在一起

    因为,行间距不应用到替换元素上,所以替换元素的内容大小等于行内框大小
    

    b、对于非替换元素来说,得到各行内非替换元素及不属于后代行内元素的所有文本的font-size值和line-height值,再将line-height减去font-size,得到行的行间距,这个行间距除以2,将其一半分别应用到em框的顶部和底部

    3、替换元素(即<input>一类的标签)的 line-height 并不会生效。

    因此在span中,最好是

    margin: 0;
    padding: 0;
    height: xxx;	// 父 span 的 font-size
    

    这样的话,替换元素就会和父span中的文本拥有相同的内容高度。替换元素的 vertical-align 的属性调整垂直位置也就会比较准确。

  • 相关阅读:
    使用psycopg2操作PostgreSQL数据库之二
    .Net3.5中调用gzip压缩遇到的问题
    开发人员真的不值钱啊
    Python DBAPI 2.0规范
    python MySQLdb学习笔记
    python访问PostgreSQL数据库之连接库Psycopg2
    python的类方法和类的静态方法
    Python运算符重载
    windows下postgreSQL服务接收远程客户连接
    MySQLdb访问mysql的中文字符问题解决之道
  • 原文地址:https://www.cnblogs.com/xfh0192/p/7660565.html
Copyright © 2011-2022 走看看