inline-block元素的一些坑
当年刚知道CSS display有 inline-block 这个神奇的属性的时候,感觉碉堡了,以为从此不用float了,什么div、p,只要 display: inline-block 就在一行上了。直到想用它装装逼的时候,才发现自己图样图森破,只能用一句话形容,当时我就懵逼了。。
莫名其妙的元素间隔
;;} 如此粗暴的reset方式。还是看个例子吧:
html:
<div id="text"> <p>hahah</p> <p>hahhaha</p> </div>
css:
#text p { display: inline-block; padding: 10px; background-color: red; color: #fff;}
显示:
两个inline-block的p出现了间隔。
对于其他的inline-block元素也是一样,比如img:
左右和上下都出现了间距。
那如何去掉他们呢。方法有很多:参见张鑫旭大大的博文:去除inline-block元素间间距的N种方法。
我比较常用的 font-size:0 以及写的时候整成一行。。。orz
莫名其妙的对不齐
看下面的代码:
html:
<div id="img-text"> <p class="bg-img"></p> <p class="words">wordswords</p> </div>
css:
#img-text p { display: inline-block; } #img-text .words { width: 100px; height: 100px; background-color: red; color: #fff; } #img-text .bg-img { width: 100px; height: 100px; background-image: url(img/3.jpg); }
效果:
我勒个擦,为什么不能好好的排在一行,图上去了,文字下垂了。。。(我这里用的背景图,使用img标签也是一样的,写背景图主要是因为切图的时候好多都是以背景图出现的。)
解决方法也很简单,给图片或者背景设置 vertical-align: top 即可。
齐了!!!
其实对于其中的原理我也不是很清楚。在MDN上查了一下关于 vertical-align 的内容, vertical-align 适用于行内元素(inline)和表格单元格(table-cell)元素。所以就不要在div这些里面用它了。
再看它的取值,一大坨,不过大多数的取值有一个共性:那就是都是以父元素的基线为标准的。
问题来了父元素的基线是什么鬼。。。
基线大概就是以前上学时写拼音或者英语的四线格子的第三条线。。恩,大概是。
我给父元素加了几个字:
你会发现图片的底大概就在“我是父元素字体”这几个字的3/4处,img默认的vertical-align就是baseline。
然后我们看一下vertical-align取值top的时候是什么意思:
元素及其后代的顶端与整行的顶端对齐
很明了,与整行的顶端对齐,就是这个样子:
不过图片底部还是与父元素字体的大概3/4处对齐。
网上还有说设置为text-bottom神马的,不过我试验都是没有对齐的。
其实,啰嗦这么多,一个float就可以搞定。
而且,看他们贴的多近。
[2015-8-31更新]
张鑫旭大大最近又更新了一篇长文, 我觉得大家可以直接去看这一篇了, 从理论到应用:
CSS深入理解vertical-align和line-height的基友关系
inline-block元素的一些坑的更多相关文章
- CSS3如何去除 inline block 元素之间多出的空格
display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...
- 多个inline元素、block元素、inline-block元素在父容器中的换行情况
1.首先看inine元素的换行情况 <style> *{padding:0;margin:0} div.wrap{width:200px;height:200px;border:1px s ...
- 当inline元素包裹block元素时会发生什么
经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a&g ...
- inline元素、block元素、inline-block元素
inline 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行,直到该行排满. block 块级元素:是可以控制宽和高.margin等,并且会换行.块级对象元素会单独占一行显示, ...
- block元素和inline元素的特点
一.block元素的特点 1.处于常规流中时,如果width没有设置,会自动填充满父容器 2.可以设置height/width及margin/padding 3.处于常规流中时,布局在前后元素位置之间 ...
- 关于block元素和inline元素
呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...
- inline元素、block元素
inline元素 不会独占一行,相邻的行内元素会排列在同一行内,直到一行排不下才会换行 高.行高.以及外边距和内边距不可改变 宽度就是它的文字或图片的宽度,不可改变,随元素内容变化而变化 内联元素只能 ...
- inline,block,inline-block的区别
display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...
- inline, block, and inline-block
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- display:inline block inline-block 的区别
原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...
随机推荐
- 【转】使用GDB调试Coredump文件
来自:http://blog.ddup.us/?p=176 写C/C++程序经常要直接和内存打交道,一不小心就会造成程序执行时产生Segment Fault而挂掉.一般这种情况都是因为数组越界访问,空 ...
- C# 循环获取目录
#region 获取目录 /// <summary> /// 获取指定文件夹下所有子目录及文件 /// </summary> /// <param name=" ...
- SVN 冲突文件快速解决方法
精简的美丽...... 现在几乎没有几个写代码的人不用snv来存储代码了吧! 但是,在实际操作中,多人对同一文件读写造成冲突是时有发生的事.这个时候解决的方法就是打开文件找出冲突的地方.如果冲突的部分 ...
- mysql 日期函数格式
mysql中的from_unixtime函数的format表达式字段描述: %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的 ...
- 自动监控主从MySQL同步的SHELL脚本
代码如下: #!/bin/bash #check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LI ...
- MYSQL 分析表、检查表和优化表
1. 对表进行优化 ( 优化表主要作用是消除删除或者更新造成的空间浪费) 2. 对表进行分析(分析关键字的分布, 分析并存储MyISAM和BDB表中键的分布) 3. 对表进行检查(检查表的错误,并且为 ...
- 如何删除google流氓扩展(强制安装,并且无权限删除)
chrome现在也是流氓遍地跑, 没比IE安全到哪里. TubeAdblocKer 这个流氓扩展,强制安装,无法删除.google了一大堆方法,全部无效.祭出了filelocator这个神器之后,终于 ...
- Java SE ---算术运算符
算术运算符:(加)+,(减)-,(乘)*,(除)/,(求余)%,自增自减 一,算数运算符:当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型.如果参加运算的变量中有整型int ...
- poj2299解题报告(归并排序求逆序数)
POJ 2299,题目链接http://poj.org/problem?id=2299 题意: 给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列. 思路: 其实就 ...
- Mac OS X Yosemite 10.10 配置 Apache+PHP 教程注意事项
刚更新到了 Mac OS X Yosemite 10.10,发现运行Apache出现了一些问题,修正一下! 教程基于 Mac OS X Mavericks 10.9.X,移步:Mac OS X Mav ...