why? 为啥我要写这个?

有一说一,挺好奇的,对于这种最最基础的问题,我觉得应该要有最最朴实准确的答案。

是文字本身撑开的?试验才是检验真理的唯一标准。

图1

图1当中的 代码如下所示

<!DOCTYPE html>

很简单的控制变量,我们能看到肯定不是文字本身的大小撑起来div

再做个试验

图2

图二当中的代码如下所示

<!DOCTYPE html>
<html><head> <meta charset="utf-8">
</head>
<style>.text1 {border: 1px solid red;font-size: 20px;line-height: 0;}.text2 {margin-top: 100px;border: 1px solid blue;font-size: 0;line-height: 20px;}
</style><body><div class="text1">测试1是高度撑开了div吗?</div><div class="text2">测试2 那到底是什么撑开的div呢? </div>
</body></html>

虽然没有文字,但是div依旧不是空的,而且我们并没设置height,那么可以确定是line-height撑起了整个的高度

在css中能撑起来元素高度的由两个属性组成 line-height height

line-height?

what?这是啥?

line-height是设置行高的的属性,本文不会完整的科普line-height,只会挑几个比较重要的点来分享。

line-height可以继承吗?

会,但是只是在当前元素没有line-height属性时才会继承父元素的

line-height设置大小的时候是相对于与谁设置的大小呢?

line-height 百分数是基于当前字体尺寸的百分比行间距,换句话来说,如果此时font-size为0,会有下面的结果

  1. 文字看不见
  2. 此时line-height如果设置为1,那么计算得到的line-height也是0,就所有的都看不到咯。能看到的只有border的一条线。

把line-height值设置为height一样大小的值可以实现单行文字的垂直居中是真的吗?

是真的,但是描述不准确,准确的描述是““把line-height设置为您需要的box的大小可以实现单行文字的垂直居中”

简单来说在想要在div或者p居中的时候,只需要把line-height设置成你想要的高度就ok了,不需要设置height

举个栗子

图3

可以看图3当中的测试3

下面是对应的代码

<!DOCTYPE html>
<html><head> <meta charset="utf-8">
</head>
<style>.text1 {border: 1px solid red;font-size: 20px;line-height: 0;}.text2 {margin-top: 100px;border: 1px solid blue;font-size: 0;line-height: 20px;}.text3 {margin-top: 100px;border: 1px solid blue;line-height: 120px;}
</style><body><div class="text1">测试1是高度撑开了div吗?</div><div class="text2">测试2 那到底是什么撑开的div呢? </div><div class="text3">测试3 这个是一个居中而且没有height的测试,能成功吗? </div>
</body></html>

可以明显的注意到class=text3的已经明显居中了,但是实际上并没有设置height

注意:这个是单行元素能这样玩,如果是多个段落不能这样玩,会出大事情.

那多行而且是段落怎么办呢?

<!DOCTYPE html>
<html><head> <meta charset="utf-8">
</head>
<style>.text1 {border: 1px solid red;font-size: 20px;line-height: 0;}.text2 {margin-top: 100px;border: 1px solid blue;font-size: 0;line-height: 20px;}.text3 {margin-top: 100px;border: 1px solid blue;line-height: 120px;}.text4 {margin-top: 100px;border: 1px solid blue;line-height: 150px;height: 150px;display: table;}.text41 {display: table-cell;vertical-align: middle;}
</style><body><div class="text1">测试1是高度撑开了div吗?</div><div class="text2">测试2 那到底是什么撑开的div呢? </div><div class="text3">测试3 这个是一个居中而且没有height的测试,能成功吗? </div><div class="text4"><div class="text41"><p class="textp1">测试4 这个是一个居中而且没有height的测试,能成功吗?11</p><p class="textp1">测试4 这个是一个居中而且没有height的测试,能成功吗?22</p></div></div>
</body></html>

比较常见的方案两种:

1.外部包一个table,使用table布局,里面使用table-cell+vertical-align:middle,虽然丑,但是确实有效.

2. flex (不谈了,不懂得可以去查一下)

其他的方法或多或少的有一些小问题,如果有新的方法,欢迎补充。

ps:line-height的一些需要注意注意的点

  1. line-height可以设置百分比,也可以设置具体的大小
  2. 一般在试验当中,line-height设置为文字大小的1.4倍,整体看起来会比较合适
  3. 虽然ine-height可以使用任何的css的单位,但是最佳实践是使用数字而不带单位的行高,主要是继承问题,可能会影响到子元素的布局
  4. line-height仅对内联元素有效,将inline-block或非内联的其他任何元素时效果仅仅作用于inline的后代元素

让div margin属性消失_为什么div里面打一个字之后就会有高度了呢?相关推荐

  1. 让div margin属性消失_margin 和 padding

    CSS的边距属性是用来设置页面中的一个元素所占空间的边缘到相邻元素之间的距离. 主要有两个属性:margin(外边距)和 padding(内边距). margin 在一个声明中设置当前所有或者指定元素 ...

  2. html div居中属性,css布局设置div水平居中

    要让div程度居中配置margin属性便可. 1.居中枢纽CSS代码:margin:0 auto margin:0 auto为甚么能让div 居中评释: margin:0 auto拆分为margin- ...

  3. div超出不换行_子div超出父div部分横向滚动,不换行

    父div: .rootBar{ width: 1920px; height: 216px; float: left; overflow-y: hidden; overflow-x: auto; whi ...

  4. html div居中属性,让div水平居中设置margin属性

    css怎样让div水准居中呢?div居中前提是甚么?怎样才让div居中呢? 要让div程度居中设置装备摆设margin属性即可. 1.居中枢纽CSS代码:margin:0 auto margin:0 ...

  5. html中margin居中样式,利用margin属性将一个div水平居中将

    div+css,图片怎么设置在DIV中垂直居中? 图片大小不固定,想让图片自动垂直居中,应该怎么设置?想实现类似在表div+css,图片设置在DIV中垂直居中: 方法一: 思路:利用text-alig ...

  6. div内上下左右距离_用CSS让DIV上下左右居中的方法

    当父div的行高等于自身高度时,内部的行内元素会上下居中显示.行内块没有固定高度时也会上下居中显示.所以需要对父div的 line-height 进行调整.利用定位属性(top.left.right. ...

  7. html5div居中属性,html怎样让div居中

    html让div居中的方法:1.通过加" 内容"标签让div居中:2.在div中加入"margin:0 auto属性;"自动调节居中. 本文操作环境:windo ...

  8. 微信小程序,购买商品属性自动换行,固定div个数,超出部分自动换行

    微信小程序,购买商品属性自动换行,固定div个数,超出部分自动换行 参考**指定每行div个数(三个为例)** <view class="spec"><view ...

  9. java怎么设有滚动的标签,html标签overflow属性和javascript实现div标签滚动

    原标题:html标签overflow属性和javascript实现div标签滚动 昨天一个朋友说他实现了一个div循环滚动显示的demo,但是弄到jsp中就不滚动了,而且debug测试div的scro ...

最新文章

  1. minsdk(API23)deviceSdk(API22)
  2. 遥控车_vijos1458_纪中1724_水
  3. 获取 一个文件 在沙盒Library/Caches/ 目录下的路径
  4. npm更新模块并同步到package.json中
  5. 只等你来!OpenAtom XuperChain 开发者夏季论坛来啦
  6. boost::hana::front用法的测试程序
  7. hadoop2.0以后不需要借助cywin运行在Windows上
  8. Nuget发布Dll
  9. Spring Boot 面试题
  10. Python安装与第三方工具——pycharm安装
  11. 冷知识 —— 地名的解释
  12. Android连接网络立即同步时区
  13. XML学习总结(一)——XML介绍
  14. android 常见的异常,Android 几个常见异常且容易被忽略的地方
  15. html炫酷特效代码博客,HTML特效代码!
  16. c++小游戏:笨鸟先飞(Flappy bird hhh)
  17. 解决Vscode提示code安装似乎损坏
  18. servlet:共享资源造成的线程冲突
  19. 机器学习 - Python Matplotlib 练习, 常见功能查阅
  20. 大数数字读法 unsigned long long

热门文章

  1. Java中读取属性文件以及做资源国际化
  2. Linux sed 写命令常见使用案例
  3. 处理数字_9_计算标准差
  4. Linux(Ubuntu,Cent OS)环境安装mkfontscale mkfontdir命令以及中文字库
  5. shell编程系列23--shell操作数据库实战之mysql命令参数详解
  6. 精通Spring Boot—— 第二十一篇:Spring Social OAuth 登录简介
  7. Golang通过syscall调用win32的Api
  8. 【NOIP模拟题】“与”(位运算)
  9. SpringMVC+Apache Shiro+JPA(hibernate)案例教学(三)
  10. Android 图片平铺实现方式