饥人谷技术博客

2018-05-31 元素的高度与宽度以及衍生技巧

2018-06-01  本文已影响3人  EnochQin

前言:本文主要写块级元素与内联元素的宽度与高度的相关知识,以及相关的衍生技巧,包括一些常用的居中方法等(与我的上一篇博客css如何居中不同,上一篇是把所有能用来居中的方法都介绍了一遍,本篇只写常用的方法,可以应对80%的情况)


1、块级元素宽高

2、内联元素

3、文档流或译为常规流(normal flow)

以下设置会脱离文档流:

4、margin合并

5、常用的水平居中方法

(1)块级元素水平居中:
(2)内联元素水平居中

6、常用的垂直居中方法

(1)父元素高度不确定
(2)父元素高度确定
.parent{
  display:table;
  height:100px;
  border:1px solid red;
}
.child{
  display:table-cell;
  vertical-align:middle;
  text-align:center;
}
.parent{
      display:flex;
      justify-content:center;
      align-items:center;
}
.parent{ 
  height:300px;
  position:relative;
  border:1px solid red;
}
.child{
  position:absolute;
  top:0;
  left:0;
  bottom:0;
  right:0;
  margin:auto;
  width:100px;
  height:200px;
  border:1px solid green;
}

7、溢出省略效果

div{
  border:1px solid red; 
  width:100px;
  text-overflow:ellipsis; /*文字超出部分用省略号代替*/
  white-space:nowrap; /*不能换行*/
  overflow:hidden; /*超出部分隐藏*/
}

效果图,原文字是this is demo and so on。超过div宽度即100px的部分用…代替:


效果图
div{
  border:1px solid red;
  width:200px;
  display:-webkit-box;
  -webkit-line-clamp:3; /*只显示三行。溢出部分用省略号代替*/
  -webkit-box-orient:vertical;
  overflow:hidden;
}

效果图:


效果图

8、中文单行两端对齐

单行两端对齐的实现原理:text-align:justify;可以设置对齐方式为两端对齐但是只对多行文本有效果,想要实现单行文本需以下操作:

  1. 首先要把内联元素变为inline-block(为了设置宽度)
  2. 然后使用after伪元素为本来只有一行span的增加一行使得justify起作用(after伪元素的宽度需设置为100%用来撑起两端对齐的宽度)
  3. span元素设置overflow:hidden; 把after伪元素增加的那一行隐藏起来使布局美观
span{
  text-align:justify;
  display:inline-block;
  overflow:hidden;
  line-height:20px;
  height:20px;
  width:4em;
}
span::after{
  content:'';
  display:inline-block;
  width:100%;
}

效果图:姓名和联系方式都是两端对齐


效果图

9、在不设置高度的情况下,做一个高度为40px的div且内容垂直居中

这种设置方式,可以直接让文字垂直居中,并且带有响应式,贯彻一个理念:不要轻易设置height

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

10、做一个空的宽高自适应的正方形

直接设置一个空的div样式为{ padding-top:100% } 即可。
可以自适应父元素的宽高并形成一个空的不超出父元素且范围的最大的正方形。
效果图(父元素设置了padding):

效果图
上一篇 下一篇

猜你喜欢

热点阅读