设置div的高度_探讨div中的高度与宽度

be66d469510d1b452345369249918561.png
在学习css的过程中,总会遇到各式各样的超自然现象无法解释,当中有不少疑惑,决定用这篇文章来一探究竟。本文重点用常见例子的方式来探讨已知div的高度和宽度时的实际应用。

Previously,请记住一点:

写css请用border调试

写css请用border调试

写css请用border调试

1.包裹文字时的div高度

e06de073b63ba1f2bf3b44b5cc7ecd6b.png

从上面是div的高度不是20px,说明跟font-size属性无关,只是由line-height决定,由字体的行高决定。

扩展知识:line-height和font-size之间的关系是由字体设计师决定的,当然我们可以自己手动设置line-height。

2.多行文字实现左右对齐的效果

cea297b5a47a9f75a9b846fe27a4b4b0.png

这时候设置border只是便于调试。

css代码应该是这样的:

<style>
    div{
      border:1px solid green;
      font-size:20px;
    }
    span{
      border:1px solid red;
      display:inline-block;
      width:5em;  
      text-align:justify;
      line-height:20px;   /*行高和高度相同 */
      overflow: hidden;   /*超出范围隐藏 */
      height:20px;   /* 高度设置和外层div相同 */
    }
    span::after{
      content:'';
      display:inline-block;
      width: 100%;
      border:1px solid blue;
    } /*给span补充一个和span等宽的block元素*/ 
  </style>

3. 老生常谈的清除浮动

c46ca3208ddd4477b733a0b5255ccf9d.png

css结构如下:

ul{
        margin:0px;
        padding:0px;
        list-style:none;
        border:1px solid red;
      }        
      ul>li{
        float:left;
        border:1px solid green;
      }

      .clearfix::after{
        content:'';
        display:block;
        clear:both;
      }

4. 多行文本溢出时省略

4.1. 只显示单行

效果如下:

47a0bf87f9020a64a4370370f164df7e.png

css如下:

div{
   white-space:overrap;
   overflow:hidden;
   text-overflow: ellipsis;
}

4.2. 显示多行

效果如下:

f1622bf34282e30c9f40fbaf9ef4dba9.png

代码:

/*以下代码并不兼容IE8*/
    div{
      border:1px solid red;
      display:-webkit-box;
      -webkit-line-clamp:2;   /*代表只显示几行*/
      -webkit-box-orient:vertical;      
    }

5.文字垂直居中

29415857d1c9871ae0017e96ec96bd7e.png

文字需要显示垂直居中的时候,千万不要设置height的高度

文字需要显示垂直居中的时候,千万不要设置height的高度

文字需要显示垂直居中的时候,千万不要设置height的高度

不然会出现这样恶心的效果;

00875da55a3d094ca7498626c6bc97cc.png

正确的解法应该是通过设置line-height的值,然后通过padding、margin的值自适应高度的方式设置div的高度

div{
      border:1px solid red;
      line-height:30px;
      padding:10px;
      text-align: center;
    }

6. margin合并

当div里面嵌套div(块级元素)的时候,在子div设置margin的时候会有两种情况

  • 父级div没有设置margin或者border的时候,子级div会出现合并父级的情况,父元素并未因此撑高(左右宽度是有撑大的)。
  • 父级div设置了margin或者border的时候,父级的高度会因此被撑高,并且子级的div的margin会被框在父级的border之内。

7.总结

  • 如果div里面包裹内联元素,div 的高度取决与内联元素 line-height 行高,line-height 由字体设计师决定
  • 特定的font-family(字体)会有建议的line-height
  • 两个行内元素之间有看不见的符号(Tab,Space,Enter )都只显示一个空格
  • div的高度是由内部文档流中元素的总和决定的。其中,内联元素的排列顺序从左到右,块级元素从上到下
  • 脱离文档流的意思是该元素不计入高度,分别有三种方式:position:fixed;position:absolute;float:left。
  • 内联元素的宽度是会受margin、padding的影响,但是高度并不受它们的影响。
  • 块级元素的宽度千万不要去改,其高度是由其包裹内的文档流的高度决定的。
  • 如果块级里面包裹内联元素,则根据内联元素的line-height决定。
  • 如果块级里面包裹块级元素,则跟里面的margin、padding、border都有关
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值