css世界读书笔记:

内联元素与流

块级元素负责结构,内联元素接管内容

x元素的下边缘就是我们的基线baseline

x-height就是x的高度

vertical-align:middle是x中点位置,所以那个不是严格的中间对齐

ex单位是一个x的高度

利用那个ex单位可以做不受字体和字号影响的内联元素的垂直居中对齐效果

z<i class="icon-arrow"></i>

.icon-arrow {
display: inline-block;
width: 20px;
height: 1ex;
background: url(/images/5/arrow.png) no-repeat center;
}
line-height

非替代元素的纯内联元素,其可视高度完全由line-height决定,替代元素则不行。

行距 = line-height - font-size

半行距就是行距/2,但是没有小数表达,所以,如果标注的是文字上边距,则向下取整,如果是文字下边距,向上取整。因为据大多数的文体在内容区域是都是偏下的。

单行垂直居中 也是近似

不需要设置height只用line-height就可以

.line-height{
line-height: 50px;
font-size: 12px;
margin-top: 16px;
}

多行文本垂直居中

<style>
.box{
width: 280px;
line-height: 120px;
background-color: #f0f3f9;
margin: auto;
}
.content{
display: inline-block;
line-height: 20px;
margin: 0 20px;
vertical-align: middle;
}
</style> <div class="box">
<div class="content">基于行高实现的多行文字垂直居中效果,需要vertical-align属性帮助。</div>
</div>

line-height的默认值,在个浏览器默认值不一样需要重制。最好是1.5的设置。

body{
line-height: 1.5;
}
input, button {
line-height: inherit;
}

内联元素line-height的最大值特性。

内联元素,自身有一个内联盒子,只用有内联盒子,就会有行框盒子,每个行框盒子前面都有一个宽度是0的具有该元素的字体和行高属性的看不见的幽灵空白节点

vertical-align

分4类:

  • 线类:baseline(默认)/ top / middle/ bottom
  • 文本类:text-top/text-bottom
  • 上标下标类: sub/super
  • 数值百分比类: 20px/2em/20%

在图文混排的页面中,内联元素默认都是沿着字母x的下边缘对齐的。对于图片等替换元素,往往使用本身的下边缘作为基线。我们可以通过数值或者百分比来调整位置。

兼容性好,支持ie67。可以精准的控制元素的垂直对齐位置。

HTML:
<p>请选择<i class="icon-arrow"></i></p>
<p>请选择<i class="icon-arrow valign-1"></i></p>
<p>请选择<i class="icon-arrow valign-2"></i></p>
CSS:
.icon-arrow {
display: inline-block;
width: 20px; height: 20px;
background: url(arrow.png);
}
.valign-1 {
vertical-align: middle;
}
.valign-2 {
vertical-align: -5px;
}

vertical-align的作用前提

只能应用到内联元素以及display值为table-cell的元素。(display是inline,inline-block,inline-table或者tabel-cell的元素上,默认span,strong,em等内联元素,img,botton,input等替代元素,非html规范的自定义标签元素,以及td 单元格,都是支持vertical-align属性,其他的块级元素则不支持,float和position会破坏)

vartical-align属性的默认值baseline在文本之类的内联元素那里就是字符x的下边缘,对于替换元素则是替换元素的下边缘,但是,如果是inline-block元素,规则要复杂le:一个inline-block元素,如果里面没有内联元素,或者overflow不是visible,则该元素的基线就是margin底边缘,否则其基线就是元素里面最后一行内联元素的基线。

利用上面的原理20px图标实践。

<div class="box">
<h4>1. 空标签后面跟随文本</h4>
<p><i class="icon icon-delete"></i>删除</p>
<h4>2. 标签里面有“删除”文本</h4>
<p><i class="icon icon-delete">删除</i>随便什么文字</p>
<h4>3. 字号变大</h4>
<p class="large">
<i class="icon icon-delete"></i>删除
</p>
<p class="large">
<i class="icon icon-delete">删除</i>随便什么文字
</p>
</div>
.icon {
display: inline-block;
width: 20px;
height: 20px;
white-space: nowrap;//不换行
letter-spacing: -1em; //
text-indent: -999em; //缩进 文字隐藏
}
.icon:before {
content: '\3000';//始终有内容,不让margin为下边距
}
top与bottom属性

top就是垂直上边缘对齐

  • 内联元素:元素底部和当前行框盒子的顶部对齐
  • table-cell元素:元素底padding边缘和表格行的顶部对齐
middle是近似垂直居中
text-top与text-bottom

对于内联元素,如果大家遇到不太友好理解的现象,请一定要意识到,有一个“幽灵空白节点”以及无处不在的vertical-align属性。

line-height与vertical-align的更多相关文章

  1. What is Vertical Align?

    https://css-tricks.com/what-is-vertical-align/ ************************************************* CSS ...

  2. 浏览器兼容CSS代码:按钮文字垂直居中(input button text vertical align)

    经过测试的浏览器:IE6, IE7, IE8, IE9, Firefox, Chrome, Safiri, Maxthon 按钮的HTML代码: <input id="btn_comm ...

  3. 关于Vertical Align的理解

    1:vertical-align 翻译就是垂直-对齐... 2:关于line-height的点 2.1:如果一个标签没有定义height属性,那么其最终表现的高度一定是由line-height起作用. ...

  4. How to Take Control of Your Line Height in Outlook.com

    Reference to: http://www.emailonacid.com/blog/details/C13/line_height_and_outlook.com

  5. 深入了解css的行高Line Height属性

    什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. ...

  6. 前端知识点回顾之重点篇——CSS中vertical align属性

    来源:https://www.cnblogs.com/shuiyi/p/5597187.html 行框的概念 红色(line-height)为行框的顶部和底部,绿色(font-size)为字体的高度, ...

  7. div仿checkbox表单样式美化及功能

    div仿checkbox表单样式美化及功能(checkbox的样式不好看)素材在底部: 效果图: window.css .bj { position: absolute; top: 0; left: ...

  8. CSS布局设置

    一 盒模型 盒模型 在CSS中,"box model"这一术语是用来设计和布局时使用,然后在网页中基本上都会显示一些方方正正的盒子.我们称为这种盒子叫盒模型. 盒模型有两种:标准模 ...

  9. 原生 JS 实现移动端 Touch 滑动反弹

    什么是 Touch滑动?就是类似于 PC端的滚动事件,但是在移动端是没有滚动事件的,所以就要用到 Touch事件结合 js去实现,效果如下: 1. 准备工作 什么是移动端的 Touch事件?在移动端 ...

  10. height与line-height

    1.网页的所有元素可以分为块元素和行元素.一行文字所在的一个逻辑区域是行元素,其他的元素就都是块元素line-height只针对行元素,height针对其他所有元素 2. width,height对于 ...

随机推荐

  1. 【BZOJ2733】[HNOI2012] 永无乡(启发式合并Splay)

    点此看题面 大致题意: 给你一张图,其中每个点有一个权值,有两种操作:在两点之间连一条边,询问一个点所在联通块第\(k\)小的权值. 平衡树 看到第\(k\)小,应该不难想到平衡树. 为了练习\(Sp ...

  2. mongodb索引 全文索引之相似度查询

    我们在百度搜索中,可以看到与自己搜索度内容越相关度,排在越前面,这个需求可以在mongodb中很简单度实现,mongodb的全文索引不仅可以返回相匹配的查询结果,而且可以告诉你查询结果与你的查询条件多 ...

  3. 利用kvo实现列表倒计时

    自己稍微记录一下,方便以后用到: 先创建一个定时器的类: #import "TimeCenter.h" @interface TimeCenter () @property (no ...

  4. Flutter 入坑(1):flutter 环境搭建,window版本

    下载安装JAVA环境 1. 既然要做原生应用了,而且是基于Android的,那还是需要我们安装一下JAVA的环境的,我比一般得到一个新系统后首先做的就是这一步.    https://www.orac ...

  5. [BZOJ] 3301: [USACO2011 Feb] Cow Line

    康拓展开/逆展开 模板 #include<algorithm> #include<iostream> #include<cstdio> #define int lo ...

  6. 一步一步讲解安装NodeJs开发环境

    node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node. ...

  7. MultipartFile 动态决定是否上传文件,解决不上传文件报错

    controller 接收参数   用 HttpServletRequest 代替 @RequestParam()  接收参数 picFile 前台 传文件的参数名字  ,   这样 前段 传 nul ...

  8. 如何使用koa实现socket.io官网的例子

    socket.io官网中使用express实现了一个最简单的IM即时聊天,今天我们使用koa来实现一下 ### 框架准备 确保你本地已经安装好了nodejs和npm,使用koa要求node版本> ...

  9. vue.js 一(基础环境搭建)

    之前由于看了React的东西,写了两篇React的脚手架搭建,一是给自己记一点可用的东西,免得每次都去找,毕竟搭建环境在项目相对固定的时期不是经常要干的事情,一段时间不用就会忘记了. 前端的js框架还 ...

  10. 大数据小项目之电视收视率企业项目09--hive环境搭建

    Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据.它架构在Hadoop之上,总归为大数据,并使得查询和分析方便.并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务 ...