美文网首页
CSS深入浅出(3)-省略文本、居中和父子margin合并

CSS深入浅出(3)-省略文本、居中和父子margin合并

作者: 如梦初醒Tel | 来源:发表于2019-03-15 07:24 被阅读0次

省略号

单行文本省略

当行文本
属性white-space:nowrap;将多余的收起来。再用属性overflow:hidden;将超过边框部分隐藏起来。 隐藏

最有用属性text-overflow: ellipsis;添加省略号

div{
      border:red 1px solid;
      white-space: nowrap;
      overflow:hidden;
      text-overflow: ellipsis;
    }

多行文本省略

不知道,google抄。

 div{
      border:red 1px solid;
      display: -webkit-box;
      -webkit-line-clamp:2;
      -webkit-box-orient:vertical;
      overflow:hidden;
    }

居中的问题

做一个垂直居中,千万不要固定高度。举个例子:


例子

如上有很多的文本,现在将它省略之后就是一行文本了,这一行文本,我现在要固定高度是40px;然后居中。

居中错误示范1

但是现在要将单行省略都去掉

错误示范2

发现页面排版错误,但是现在又要在这个文本后面添加新的文本


错误示范3

会发现这个排版真的有BUG,问题好多。
这个就是高度固定的原因。解释原因:就去看一下CSS深入浅出(1)-流这篇文章讲的流

那么如何去文字居中呢?
利用padding中的top和bottom这个属性中的两个值上下对称来居中,同时将行高设置一下line-height:40px;

 div{
      border:red 1px solid;
      white-space: nowrap;
      overflow:hidden;
      text-overflow: ellipsis;      
      line-height: 40px;
      padding:10px 0;
    }

margin合并

image.png

看上面的例子,父亲dad包含儿子,看一下盒模型

儿子的高度30(15+15)+21=51 父亲的高度51+20=71

上面的例子说明父亲包含儿子的高度。但是:如果儿子里面添加了属性padding和margin属性,那么出现了透明边框


添加padding和margin之后

如果将border改成了outline

更改父亲为outline
再看一下盒模型,父亲的高度不包含儿子的margin 儿子的盒模型

margin-top和bottom没了
如果将父亲的margin改成5px;那么儿子的margin将会和父亲的margin重合了。
我不知道为什么这个浏览器不显示margin-top 和margin-bottom 5px


image.png

看一下别人的


image.png

那么如何让儿子下来呢?
就在爸爸里面添加border-top或者 border-bottom这个属性。

border-top

所以儿子的margin能不能使父元素变高,就取决于父元素有没有什么东西挡住这个儿子的margin。挡住的东西可以不是border也可以是padding

padding-top和padding-bottom
还有一个很奇怪的就是border:0.1px solid grey;这个也可以
border:0.1px solid grey;
还有一个可以清除合并,添加overflow:hiddlen; image.png

缺点:万不得已的时候不要用最后一个,因为用了最后一个,你要是需要做悬浮,你就完了。

当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素)。
就好比一个小兵,看到上级有漏洞,就假传圣旨,利用漏洞扩张自己的权利。只要设置父元素的border(栅栏)或者padding(隔离墙),就能管住这个调皮的下属。

相关文章

网友评论

      本文标题:CSS深入浅出(3)-省略文本、居中和父子margin合并

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