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

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

  一个常见的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的顶部与底部边缘和基线在哪里?元素的顶部与底部边缘和基线在哪里?

知道那么多大道理,却依然教育不好孩子,这到底是怎么回事?不写作业母慈子孝,一写作业鸡飞狗跳。有位读者在我昨天的文章底下留言说,教育孩子要有耐心,这道理谁都知道。可努力不过三分钟,就又开始失控,觉得自己都要被孩子气出脑梗了。道理,大家都知网曝万科金域华府价格欺诈被约谈近日,南方发布的一则标题为万科中交金域华府价格欺诈被约谈责令限期整改问题未整改新闻报道引起了侃侃的关注。原报道中称金枫花园楼盘(对外推广名万科中交金域华府)销售价格违规被约谈为进一2020诺楠原创音乐演绎大赛海选晋级赛关注量破百万演绎原创,唱响全国!2020诺楠原创音乐演绎大赛首轮120晋级80强的海选晋级赛经过激战后,第一阶段现场评委评分圆满告一段落,进入第二阶段选手接受大众评委的投票启动。来自全国各大高这届双十一,我花了11。11块钱把房子放进购物车2020年11月13日,天气晴转阴本文共4300字,预计阅读时间约12分钟2009年至今,双11已经迈入第12个年头,今年的双11比往年来的更早一些。这场由阿里京东苏宁等电商巨头联2020诺楠原创音乐演绎大赛80强诞生60强晋级赛明日开启演绎原创,唱响全国!2020诺楠原创音乐演绎大赛首轮120晋级80强的海选晋级赛经过上周第一阶段(现场评委评分占比60)的精彩角逐,和第二阶段大众评委投票(占比40)今日凌晨0时已人生路上,别轻言放弃岁月如歌,时而慷慨激昂,时而一曲低沉。走遍万水千山,才知人生最好处,不在于路有多宽,花有多娇,而在于知己不离,爱人不弃看过人生百态,才知感情长久时,不在于甜言蜜语,你侬我侬,而在于懂你的人,最温暖看过一句很实在的话一个懂你的人,胜过万千过客,一句懂你的话,胜过无数安慰。人海茫茫,若能遇见一个人,惺惺相惜,事事回应,想来便觉得心中温暖。若这个人是你爱的,而TA也刚好爱着你,便喜得新狗子名字还是叫毛毛世间一切皆为缘,对于我这个颇有狗缘的人来说,今天又是值得开心的一天,因为又缘遇了一个新狗子半个月前,一岁零八个月的狗子毛毛,突然死了,大家一直认为,有小偷专门下药毒死了毛毛,因为村男人念念不忘的,往往是不爱他的女人问世间情是何物,直教人生死相许。爱情到底是什么东西,为什么那么辛酸那么苦痛,可是无数人前仆后继,甚至有人被伤到体无完肤,还想紧紧握住它,到死仍然不肯放弃。爱情,是每个人都向往和追求城头变幻大王旗最近这段时间大换届,县里镇里的头头脑脑几乎换了个遍。现在轮到县直部门了。今天常务副县长带队,到我们单位来宣布新领导的任免。每次有人事变动的时候,总是小道消息满天飞,更重要的是,这些长集转债上市分析,这只债券大概率是赚钱的长集转债我们来看一下长集转债,股票代码002616,发行数量8亿,债券期限6年,中签率0。002,溢价率9。21,对应股价9。48元,转股定价8。31元,预期上市5月8日,预期价格
小六读寒窑赋随笔近期各媒体疯转寒窑赋,无意中翻看到也借机潜心研读天有不测风云,人有旦夕祸福。蜈蚣百足,行不及蛇雄鸡双翼,飞不过鸦。马有千里之程,无骑不能自往人有冲天之志,非运不能自通。文章盖世,孔以往淡然的情结每个人的记忆里,都藏着过去无法释怀的点点滴滴。这些在成熟以后,还会依然的那么清晰,难以平复。那些老大不小的人都还像一个孩子,都有着往日看不到的淘气和真实,他们将一首首跑调的歌谣唱得追梦人的灵感我自一场旧梦初醒费力地睁开朦胧的双眼迈开孱弱的双腿走向一座未知的旅途忧伤伴随着艰难的路途在梦里我像一条幻想的鱼儿随波逐流放纵快活灵感信手拈来万物皆成为我的子弟兵向我俯首称臣森林依然我们隔山而望漠北的天总是阴阴的春季缠绵的雨水在夜里悄然落下翠绿的山丘盛满了丝丝乡土的温情我想告诉你你一直在我的梦里你一直在我的身边你的声音像清晨的鸟鸣穿过山河峡谷和森林即使隔山而望依然能够听到密林深处一次又一次,我朝着密林深处冲锋像一只被豢养的猛兽挣脱牢笼直至喘息眩晕虚脱倒下的,正慢慢被扶起阳光透过绿荫如父亲用新劈的木块一点点填补高大篱笆的间隙我张开双臂,胸膛便有了清风呼啸身体翅影无痕小六随笔凡尘俗世,心浮气躁。不知道何时能够静下心来,悠然归南山。写作阅读于我而言,都是基于从个人出发,从内心出发,倾听的是自己的心声,凝视的是心灵的景观。要做到这些,有一个前提,自己的心必薰衣草的对白秋日里草木几片片几缕缕映衬着最富足明亮的蔚蓝远远望去薰衣草婀娜多姿那一袭紫衣高贵而唯美历经了酷夏的渲染已然变得更加苍劲随风摇曳着丝丝带墨地晕染着旷蓝如夜晚的月光漫进我淡雅的窗帷如水真正厉害的人,都是不动声色的做人的最高境界是苦而不言,喜而不语。成功了,没有什么好炫耀的,是站在了新的起点上失败了,不值得叫苦,是人生多了一段经历。当你咬紧牙关的时候,就是人生逆袭的开始。顺流而下很容易,但也鸿蒙很火呀,也来试试HarmonyOS开发HarmonyOS开发初体验,一步一步来,从零开始!1下载安装,这个不必多说。下载和安装等2启动运行安装后就可以双击启动了,安装基本就是傻瓜式安装,一路next就可以了。启动后的页一句话总结斗罗大陆14,大家来评评我说得对不对斗罗大陆是唐家三少的经典小说,不过要说斗罗大陆还行,其它的斗罗大陆2绝世唐门斗罗大陆3龙王传说斗罗大陆4终极斗罗。个人觉得是一部比一部烂。来总结一下斗罗14系列。斗罗大陆唐三一路开NBA各种名场面,科比詹姆斯上榜,排名不分先后No。1总决赛唯一13落后翻盘2016骑士13落后翻盘73胜勇士,获得队史第一座总冠军,这也是克里夫兰这座城市52年唯一一座体育竞技奖杯。因此这一年总决赛是NBA历史上唯一一次在1