本鱼拟成立工作室承接项目开发/软件定制/云设施开发运维/办公设备技术支持等,如您有相关需求,欢迎来询 | ::博客文章推荐::

被一小段HTML坑了,必须记录下……

: WEB前端 木魚 10121℃ 24评论
 话说为毛线我这大半夜的不睡觉在这里装神弄鬼,完全是因为一小段HTML把我深深地坑了,坑了我整整两天,死活没搞明白,差点没勇气继续活下去。于是我很愤慨地在这里谴责它……
图片

事情要追溯到三天前,我重构一个网页,然后出现这样一个需求。这个需求简述如下:要求有一行表单,分成三列,左右各是一个按钮,中间有个链接;这个链接文字的高度和宽度都是固定的,而整行的宽度不固定,要求被两个按钮平分。
这很明显是个自适应的案例。我想了想决定这么干,让中间的按钮绝对定位,俩按钮用层包裹平分这个宽度,然后分别在第一个层的右边、第二个层的左边留出空白,用来放置链接,搞定。
图片

抽出来一个测试案例,就是如下的网页:


 
代码结构很简单,这里设置的框模型都是border-box,意味着包括边框在内的才是整个宽度(这样才好平分宽度),而里面的两个div都是inine-block的,也就是内联盒子。总宽度是700像素,左右的按钮的层都是350像素总宽度,正好平分。

小菜一碟,手到擒来!!
图片

然后我在Chrome里面预览……
 

 
图片 ……
 

为毛线会换行啊干!!!图片

 

我仔细瞄了瞄总宽度。没错啊是700像素……

我又仔细看了看俩层的宽度……

明明都是350像素啊,加起来就是700像素啊,1个像素都不多出来为毛要换行啊!!!!!
图片

既然是换行那自然是因为太宽了。。虽然我还没明白到底哪里宽了。先把50%改成49%吧,这样总宽度占用98%,还留了点空白。

图片 ……
你妹,这样就不换行了。可是你让我到哪里去找太宽了啊!350加350不就是700吗?!
图片

他们说49就49好了,差那么几个像素没事的。可是这里心里别扭啊,总觉得他娘的不爽。强迫症吗?可是我就是想知道为什么啊!!
图片

于是我开始翻箱倒柜地查,删掉中间的绝对定位,挪位置,换内容测……
折腾了一天一宿后特么的还是换行……
图片 

终于有次我开始测试,把左侧的div加上浮动后,发现就不换行了……

这就解决了吗难道!
可是他们说这是绕开了问题而不是解决了……
好吧这确实就是绕开了……
图片

 于是我又开始折腾找原因。为了确定不是页面其它地方问题的关系,我重构了一个页面专门测试。

 

 

 

 

……果然特么的还是换行了……
图片

我继续调!
图片

看宽度……

再看……

再看……

调49%……

我勒个去。。。难道就真的只能49了吗?!
图片

你让我这强迫症患者心里怎么受得了!你们这些div想过我的感受吗?!
图片

……正在准备砸电脑的时候突然瞄见这个……

哎我去,这里的空白是肿么回事!这俩div不是并列的吗!俩都没有margin怎么会有空白!!!!
看到这里,我倒吸了一口凉气。
我去这是一个问题没搞定又被我搞出一个问题了吗……
图片

 
等下……我转念一想,难道就是因为这里的空白导致的换行了吗……可是他妹的这里的空白到底是肿么出来的啊!!!
这时候一位扫地大妈从我身边扫地而过,瞥了一眼我的屏幕,然后说,你的源码中俩div中间有换行有缩进……
我:图片 

把中间的换行删掉后,尼玛果然就不换行了……
我去不带这样玩人的啊!!!!
图片

下面这幅图你能看到源码有任何差别嘛?

……其实差别就是俩div之间没有了换行符直接紧挨着了……

 
 

……
图片

我说你们还能再坑爹点儿么……
图片
 

本日志备份自 QQ 空间,原文地址:http://user.qzone.qq.com/286495995/blog/1382382990

喜欢 (3)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(24)个小伙伴在吐槽
  1. 忍不住让我笑会。。。。

    54245452015-08-16 20:16 回复
  2. 呵呵,基本的html知识啊,标签外不要留空,更不用说回车换行了,sourcecode要well formatted,最好在标签内部进行。你用vs直接设置文档格式,看看vs对html是怎么排的……
    不过话说我也曾经被坑过……

    ljf2015-07-19 01:51 回复
    • 标签内换行实在难看。VS默认的格式就是缩进的。除非手动删掉所有的空白换行。与此如此难看还不如不用。明明是格式化的文档,写得跟压缩过似的。

      木魚2015-07-19 18:19 回复
      • vs的格式化确实很难看,同感。
        你的rdb工具挺好用的,有个问题,我在做一个clickonce的winform程序,rdb解压可以在内存里完成吗?相关算法能不能给一下呢?不胜感激……

        ljf2015-07-20 12:23 回复
        • 可以,回头我发个源码吧。
          PS,这个inline-block还有一个问题,就是之间的空格虽然影响显示,但是调试的时候完全不会显示出来(Chrome的开发者工具树状图),所以带来的影响非常隐蔽。

          木魚2015-07-20 12:53 回复
  3. display:inline-block;很好理解呀
    比如说
    ss 显示出来就是紧挨着 ss
    s[回车]s 显示出来就是 s s:-)

    sean2015-07-16 21:22 回复
  4. 不管博主被折腾的怎么样,但我实在佩服你的文章啊, 好有趣的孩纸 —-赞一个~

    fooder2015-03-24 08:53 回复
  5. 这强迫,真心佩服

    麻辣鱿鱼2015-01-22 20:22 回复
  6. 这是因为inline-block的原因。其实有多种方式,一种是楼上所说,去掉标签之间空白,二是父元素font-size为0,然后子元素再重设回来。

    Coral.Qing2015-01-20 15:01 回复
  7. 技术宅惹不起啊…

    徐剑飞2013-10-23 09:07 回复
  8. [em]e328557[/em] 原来 我哪叫强迫症啊!!

    • @[em]e328293[/em]bboy 酱:也可以说是偏执吧。算是一个好事。

      木魚2013-10-22 01:57 回复
  9. 我是你的女朋友啊

    岳明2013-10-22 08:43 回复
  10. 这其实是左手和右手的故事

    尊敬的神2013-10-22 08:37 回复
  11. 这么晚了,注意身体啊!

    郭会茹2013-10-22 06:45 回复
  12. 路过……

    海绵宝宝2013-10-22 05:35 回复
  13. 好深奥的样子~

    农舍布衣2013-10-22 04:44 回复
  14. 刚问了个朋友,他说inline 和inline-block不能忽略两端的换行的,会留空格[em]e103[/em]

    忆丶小雅¨2013-10-22 04:28 回复
  15. css掌握的不错嘛,而且大妈还这么厉害,搞不懂为啥用float是绕开了问题,源代码换行还能在页面上体现啊,真心没测过[em]e109[/em],这岂不是源代码全部要格式化成一行,倒是省流量哈哈

    cherish2013-10-22 04:12 回复
  16. [em]e103[/em] 表示很愉快地学习了….

    忆丶小雅¨2013-10-22 03:32 回复
  17. 阅!以后我可不能犯你这错误。

  18. 这夜猫

    大动作2013-10-22 03:21 回复