范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

常见布局错位问题解决办法

  一个常见的bug:
  设置两列布局,左侧为导航条右侧为内容区,左侧导航条有50px的padding,并且含有三条导航,右侧只展示一个内容区,代码如下:
  效果如下:
  相信大家都遇到过这样的问题,也都知道解决这个问题我们只需要添加一个vertical-align这个属性就可以了,但是这是为什么呢?今天我们就来探讨一下vertical-align这个问题。
  1. vertical-align是什么属性?
  vertical-align是设置一个含有行级特点的元素垂直方向对齐方式的属性。
  2. vertiacl-align作用的前提
  vertical-align只能作用在display的值为inline、inline-block、inline-table或table-cell的元素上。
  因此默认情况下span、strong、em等内联元素,img、button、input等替换元素,非html规范的自定义标签元素,以及td单元格都是支持vertical-align属性的。
  但在css的世界钟,总有一些"搅屎棍"影响着默认的状态,比如L浮动和绝对定位会让元素块状化,因此在vertical-align与float和position:absolute一起使用的时候是没有作用的。
  3. vertical-align对齐的原理
  根据W3C Spec中对vertical-align属性的定义:
  This property affects the vertical positioning inside a line box of the boxes generated by an inline-level element.
  翻译:此属性影响由内联级元素生成的line-box内的垂直位置。
  那么什么是line box?同样来自W3C Spec定义line box :
  The rectangular area that contains the boxes that form a line is called a line box.
  翻译:包含形成一排内容的方框的矩形区域称为线框。
  既然vertical-align是垂直方向上的对齐,我们就要注意line box的高度,那么line box的高度怎么计算呢?我们还是看下W3C Spec中的定义:
  The height of a line box is determined by the rules given in the section on line height calculations.
  翻译:line box的高度由文本的行高计算给出的规则决定。
  转换成人话就是:
  一个line box的高度是的计算方式如下:line box中的每一个行内元素都将加入到计算过程,如果是元素inline的则取其line-height的值,如果元素是inline-block或者是inline-table则取其margin-box的高度,最后这些值的最大值,即为line box的高度了。
  4. 在vertical-align的世界中都有哪些对齐方式?
  (1)baseline (默认值)
  相对于基线对齐,那么问题来了line box的基线在哪?
  我们先看一个代码
  看下效果:
  下面我们添加一下vertical-align这个属性让第一个inline元素的vertical-align的值为top,第二个inline元素的vertical-align值为bottom,中间inline-block元素和图片添加一个margin值为10px;在最后再加上一个span标签将其vertical-align设置为默认值baseline
  代码如下:
  效果如下:
  下面我们找到line box
  下面我们把每个元素自身的盒子画出来
  w3c标准中并没有说明line-box的baseline的位置,这一点很让人困惑,baseline的位置需要满足vertical-align属性的值以及让line-box的高度最小等条件,是一个很灵活的参数。虽然line-box的baseline是不可见的,但是可以很轻松的将它可视化出来,如下图,默认情况下基线为书写字母的四线格中倒数第二条线。
  由此可以轻松地将我们的实例程序的baseline画出,如下图:
  由上图可见
  line-box的基线是一个不固定的位置,对于图片类的不确定元素默认的基线再margin盒的底部
  2)top 和bottom
  上述案例中我们可见设置vertical-align:top和vertical-align:bottom的元素所在的位置为line box的顶部和底部。即值为top和bottom代表垂直方向按照line box的盒子顶部与底部对齐
  3) sub 和 super
  sub:行内元素盒的基线相对于line-box的基线,偏下一点(偏多少浏览器说了算);
  super:行内元素盒的基线相对于line-box的基线,偏上一点(偏多少浏览器说了算);
  为第一个span添加vertical-align:sub;第二个span添加vertical-align:super效果如下
  4)middle
  MDN中定义middle:行内元素盒的中心相对于行盒的基线,偏上1/2 x-height;
  那么哪里是x-height呢?
  维基百科中是这么说的:
  Typically, this is the height of the letter x in the font (the source of the term), as well as the v, w, and z. (Curved letters such as a, c, e, m, n, o, r, s, and u tend to exceed the x-height slightly, due to overshoot.) One of the most important dimensions of a font, x-height is used to define how high lower-case letters are compared to upper-case letters.
  有道翻译一下:
  通常,这是字体中字母x的高度(术语的来源),以及v、w和z的高度。字体最重要的维度之一,x-height用于定义小写字母与大写字母的比较高度。
  即:
  也就是vertical-align:middle表示元素向上偏移二分之1的x-height大小
  再次修改我们的案例将第一个span的vertical-align的值设置成middle
  此时你会发现设置vertical-align:middle的元素基线会向下移而不是向上移动,这是因为middle对齐的不再是基线而是元素自身的中心位置与linebox的基线位置如下middle的位置。
  5)text-top和text-bottom
  text-top:相对于父级元素下文本的顶部对齐
  text-bottom:相对于父级元素下文本的底部对齐
  一个案例:
  代码:
  效果:
  6)具体像素
  元素的基线相对于line box的基线通过绝对值的大小进行移动。
  一个案例:
  代码:
  效果:
  7)百分比
  元素的基线移动相对于line box的基线通过相对于line-height的百分比的值来移动。
  一个案例:
  代码:
  效果:
  回到最初的起点,辣个bug
  设置两列布局,左侧为导航条右侧为内容区,左侧导航条有50px的padding,并且含有三条导航,右侧只展示一个内容区
  代码如下:
  效果如下:
  上述效果中右侧内容区部分明明没有设置任何的margin和定位却向下偏移了一些,导致这样效果的原因就是在多行的文字中基线的位置。
  那么问题又来了多行文字组成的块区域基线在哪?
  查看父级的基线我们只需要给父级加上一个文本节点x,如下
  效果如下:
  这样line box的基线可显而知
  由此我们可以得出结论:如果多行元素会影响linebox的基线位置下移至最高的元素最后一行的基线处。
  当你知道了规则,vertical-align就没那么复杂了吧。
  如果vertical-align并没有按照你想的那样行动,问自己两个问题:line box的顶部与底部边缘和基线在哪里?元素的顶部与底部边缘和基线在哪里?

人生到哪不过都是为了一口饭初三去乡村闭关,今天初六出关。第一件事,就是写一篇小作文复盘一下这几日。先祝关注我的朋友,牛年牛牛大顺!想来这三天,也是真有意思,每一天都有值得回味的一幕。初三刚返乡,就遇上了大家一场喜宴引发的人生思考昨晚有幸受邀参加了过去同事的喜宴,是去年底婚宴之后,特意组了一个局,邀请在本地的,之前特意去他老家赴宴的朋友。筵席之上,有他的同学同事,居然还有他的老板(现在是合作伙伴),居然还有每天想办法让自己快乐很重要昨天,发了那篇自己要去寻找温暖的文章。有星球里的好友,评论我总是可以把生活里的小事,换个角度,却有那么多的感动!那些被认为不好的环境不好的事情,都可以积极想办法解决。有点惭愧!很多灰度待世间人情世故,心中存是非原则标准今天一早,就看到一则与我行业有关的新闻。华为公司的任总,为华为注册姚安娜商标道歉!看了这则新闻,我真的是惊叹不已!市面上那些抢注商标的都没有道歉,合理合法注册维权的反而要道歉?看了只有自身强大,才能化解各种尴尬这两天接收这个月的书,跟助理共同经历了一个尴尬,也是很难得,都是给我提供写作素材。她本月寄给我三本书,之前商家打电话给我说,其中一本,库存仅剩最后一本,比较老旧,但不影响阅读。我心自毁和自嘲都是很高的情商修养看了这期的吐槽大会狂吐槽,开心之余,也是略有所感!吐槽别人,让别人不生气是艺术被人吐槽,忍住不生气是涵养敢于自嘲,彰显情商的功底敢于自毁,更显心中的气度。每当有自毁,必定得高分,成你的幸福就是我的天堂孤坐书案,独对轩窗,看窗外落花如雨,飞云过尽。此去经年,人成各,今非昨,秋如旧,人空瘦。执笔问君安,本欲将柔情放飞,用盏盏飘香的思念给你串缀朵朵清雅的祝愿,不想却滴墨成殇,任婉转而幸福奋斗的泪伤感的秋,斜阳的余晖透过这间大房子的窗子,抚摸着我僝僽的和沧桑的脸容。低下头,看了看自己曾经写下励志豪言的撕碎过日记本,再环视一下金碧辉煌的房子和手里的珠宝饰物。忽然一种莫名的感觉孩子是来弥补我们缺失的童年快乐今天带着孩子和母亲,去了一趟我们这边的动物园。原本是为了满足孩子的愿望天天都在书本上认识动物的图片,有这样的机会,带上孩子去认知一下真实的动物。带上母亲,原本心里想的是,我小时候,不是每份礼物都让人感到快乐今天六一节,儿童们快乐的日子!现在的情况是,儿童快乐不快乐,并不知道,反正无非就是在家或者在学校。大人们想要通过这个节日,来表达自己想要快乐的诉求,倒是蛮强烈的。朋友圈都是要保持童影响生活幸福度的处事态度一直以来,有很多朋友关心我,问我菲律宾的疫情,问我未来的规划,问我最大的收获。我觉得我最大的收获是,淡然而又有态度的处事原则。决定不分对错很小的时候,在学校,我们学过,塞翁失马焉知
惊艳印度行无知游历北印,一切不可思议在印度赶上DurgaPuja杜加女神节最后一天,大街小巷随处可见声势浩大的狂欢派对知道我去印度旅行了,有朋友惊讶不已印度可不适合女生去,你不怕脏乱差吗?更多人不约而同地好心提醒我听工地上的日子不好过,但是没有收入更加不好过做过工地的人都知道在工地干活是真的累,特别是夏天,在楼面上顶着快超过四十度的烈日太阳干活,那身体就没干过,所以为了赚那几个钱我们容易吗?肯定是不容易我相信做过工地的都知道。这一栋栋大地上的事情大地上的事情大地上的事情,就像大地的下面除了大地也还是大地。你还能寻找到云一些总在大地的粗糙的边缘。朦胧,半透明,会因为人的好奇因人好奇到尝试用脚步来踩踏它的时候便飘动,腾飞的云。为什么选择它作为下饭首选?文Allen今天小编给大家带来一道美食蒜蓉辣酱!关注我,每天都有新花样!老规矩,介绍菜品营养价值。每百克辣椒维生素C含量高达198毫克,维生素B胡萝卜素以及钙铁等矿物质含量亦较丰富租个女朋友回家不算什么,外国的租妻行为,让你难以相信说到泰国,大家都不陌生,泰国也有非常多吸引人的地方,但是同时也有许多奇葩的东西,让人意想不到,甚至觉得离谱。这个国家有一个行业租妻,听名字就觉得奇特。只听说过租车,还有租房,都没有清平乐官家缺女官,苗俞二人截胡,张妼晗脸都气绿了在电视剧清平乐中,苗昭仪和俞婕妤二个人都是官家身边很有地位的娘子!为什么她们都不想张妼晗在官家跟前安排人手?1张妼晗心术不正张妼晗从一个默默无闻的舞娘,在短短时间内成为宫里最得宠的张妼晗想害死怀吉,却漏掉了两个人,偷鸡不成蚀把米。在电视剧清平乐中,张妼晗可以说是一个非常张扬跋扈的人,他想除掉怀集,却录到了两个非常重要的人,偷鸡不成蚀把米。1张妼晗记恨怀吉帮辉柔其实张妼晗和怀吉之间没有什么仇恨,唯一的仇恨就是山西夏县十大历史名人诗传山西夏县十大历史名人诗传文马维騄嫘祖西阴有女名嫘祖,轩辕正妃贤而淑。始用草树皮捻线,继而养蚕织丝绸。人类自此衣蔽体,绫罗开路通五洲。夫统华夏功显赫,妻创文明竞风流。大禹黄帝玄孙姒文职场小心机学会了受用一生,轻松变成职场老手成功从来没有捷径,但混职场总有小妙招。什么时间管理法精力分配法职场厚黑学鬼谷子攻心术等等,都是在教你如何修炼内功,便于更好的管理自己驾驭他人。在这个信息爆炸人心浮躁的时代,想要在职关于一切的本质真相一切都是暂时,相对,虚假,会变的和无常的。一切感知,认识,分别,定义都是主观,相对,虚假,片面的。一切事情和选择,决定都是因缘和合必然,因果注定的。一切偶然都是必然,一切自由都是注事情总有定论今年的瓜可真是不少。而且一个比一个大。无论谁成为了那个瓜,应该都和自己不当的行为脱不了干系。自己有着怎样的内心,自己曾经做过什么,自己应该比谁都清楚。一切的狡辩抵赖虚张声势自圆其说