美文网首页
2.替换和不可替换元素,元素的格式化

2.替换和不可替换元素,元素的格式化

作者: yaoyao妖妖 | 来源:发表于2018-07-10 12:52 被阅读0次

    替换和不可替换元素

    1.替换元素

    <img><input><textarea>
    <select><object>
    

    1.替换的行内元素具有“内在尺寸”,尺寸是有自身决定的,而不会受周围环境的影响,如<img>和<input>等,但是如果同时定义<img>标签的width属性,和css的width属性,根据层叠原理,css的属性将优先于<img>标签的width属性;替换的行内元素的高度是有height属性决定;

    2.非替换元素

    2.非替换的行内元素(如 a,span等元素)的宽度是其内容经过浏览器解释后实际的宽度,而不能通过设定width属性为非替换的行内元素设置宽度,非替换的行内元素的高度是有框高度的行高决定的。

    3.我们也知道,行内元素设置width,height无效。那么来了img标签、input标签为啥可以设置呢?

    他们属于行内替换元素

    1. 行内替换元素img input,除了具备行内元素同行并列的特点,他可以设置影响文档流布局的
    内外边距以及宽高。且设置高度等同于设置行高,会垂直居中
    
    2.margin 行内元素的边距,不会合并(替换非替换)。不同于块级元素,会合并上下,
    左右边距。
    

    盒模型

    1.盒模型需要弄清的几个概念

    1. 标准盒模型宽高指的是盒模型中内容的高度,盒模型指的是盒子在网页中占得的大小,当改变
    margin,border,padding时,盒子的宽高不会改变,但是盒子在网页中占据的空间会变大。
    
    2. IE盒模型宽高指的是盒模型中内容的高度+padding+border,根据Doctype确定是哪种盒子。
    
    3. min-width/max-width有兼容性问题,IE不支持
    
    4. 可以设置宽高的元素只有块级元素和替换元素。(img, input, textarea)
    
    5. 垂直方向,两个相邻的元素都设置外边距,外边距会发生合并。
    
    6. 内联元素和使用display:inline设置为内联元素的宽高无效,垂直方向的padding,margin
     无效,水平方向的padding,margin有效。
    
    7. 块级元素和使用display:block设置为块级元素的padding,margin,width,height都生效。
    
    8.  display:inline-block,元素呈现为inline,但是具有block特性。
    
    9.  对于块级元素,设置height=line-height,可以垂直居中。
    
    10. 盒子模型当只设置了宽或者高没有设置的时候,默认为auto,那么这个属性值是由盒子模型
     的内容和子元素的内容决定的,但是浮动的子元素不能撑开盒子。
    

    html文档中的每个元素都被描绘成矩形盒子,盒模型通过四个边界来描述:margin(外边距),border(边框),padding(内边距),content(内容区域)


    image.png
    2.1 元素背景区域

    如果边框的颜色为透明,背景将应用于内容,内边距和边框组成的区域。

    2.2 水平格式化

    非替换元素的水平格式化

    水平格式化的7大属性值加起来是父级元素的width值
    margin-left
    border-left
    padding-left
    width
    padding-right
    border-right
    margin-right
    
    2.2其中margin-left,width,margin-right可以设置为auto。
    1.如果三个属性中某个属性设置了auto:
    
    设置auto的属性值=width-另外两个确定的值
    

    2.三者的值都确定了但是总和不等于父级元素的width

    在FF中,margin-right的值为开发者设定的值
    在Chrome中,margin-right被强制为auto
    

    3.如果margin-left和amrgin-right都设置为auto

    margin-left和amrgin-right会设置相等的值,因此元素将在父级元素中居中,
    注:text-align设置为center只适用于块级元素中的内联内容居中,并不能使块级元素居中。
    

    4.某个外边距和width设置成auto

    设置为auto的外边距会为0,width会设置为所需的值来填充父级元素。
    

    5.全设置成auto

    两个外边距会设置为0,width会尽可能宽。
    

    6.负外边距

    7个属性只要都是大于等于0的值,总和总是等于父级元素的width,不会超过父级元素的区域
    但是可以通过制定负外边距来得到比父级元素width更大的区域
    margin设置负值那么整个盒子的宽度会变大
    

    替换元素的水平格式化

    替换元素的水平格式化规则和非替换元素的规则类似,只有一个width有区别,如果width设置为auto,则元素的宽度是内容的固有宽度。注意:对于img标签,如果width不等于其固有宽度,则height也会等比例增加,除非设置特定值。反过来如果height设置高度,width也会等比例增加

    2.3 垂直格式化的7大属性值加起来是父级元素的width值
    margin-top
    border-top
    padding-top
    height
    padding-bottom
    border-bottom
    margin-bottom
    

    其中margin-top,margin-bottom和height可以设置成auto

    一个正常流中的块元素的margin-top和margin-bottom设置为auto后,会被设置为0,即不能将元素垂直居中,实际上元素没有外边距。定位元素如果设置成auto有不同的处理结果。

    相关文章

      网友评论

          本文标题:2.替换和不可替换元素,元素的格式化

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