明修栈道暗度陈仓

该秘籍的心法只有十二个字:”隐藏容器溢出,正负内外边距。”看完下面的几行代码,再看这句话你真的可以看到圣光!

隐藏容器溢出。将外层容器的溢出设为隐藏:

.container {
overflow: hidden;
}

这个时候刷新页面是没有效果的,配合下一步才会看见光芒:

.left, .center, .right {
float: left;
width: 300px;
margin: 30px 10px; // 为所有的列添加以下两行
padding-bottom: 500px;
margin-bottom: -500px;
}

上面就是正负内外边距:将内边距底部设为不可能会用到的一个正高度,同时将外边距底部设为相反数,巧妙地消除了内边距的冗余高度。太棒了,看效果:

布局效果图

理解这种多列等高的方案,有三个要点:为什么设置 padding-bottom?为什么设置 margin-bottom?为什么设置 overflow: hidden?

  1. 设置 padding-bottom。设置该属性可以扩大背景色渲染的范围,当背景色足够大时,就为裁剪提供了基本条件。实际上内容区域仍然不等高。
  2. 设置 margin-bottom。设置该属性用于消除占据的多余空间,是对上一个属性的弥补性措施。
  3. 设置 overflow: hidden;。当内容高度扩充时,容器高度就会扩充,通过为容器设置该属性,本意是裁减容器的多余部分,实际上裁剪的目标是容器内部的多列,这就是明修栈道暗度陈仓。

使用开发者工具检查时,就可以对此了解一二:

元素审查

就像面说到的,暂时还没有完美的方案。这种方案最大的缺陷在于无法设置底部边框,算是牺牲了 border-botton 属性。这种方案可以满足其他所有的要求,兼容性更是做到了 IE6+:

来源:http://www.jianshu.com/p/93e61ec8f354

用css样式围剿等高列问题(转载)的更多相关文章

  1. css样式: 宽高按一定比例进行自适应

    纯 CSS 实现高度与宽度成比例的效果 最近在做一个产品列表页面,布局如右图所示.页面中有若干个 item,其中每个 item 都向左浮动,并包含在自适应浏览器窗口宽度的父元素中. item 元素的 ...

  2. CSS样式实现表头和列固定

    效果图:第一行和第一列固定       <!DOCTYPE html> <html lang="zh"> <head> <meta cha ...

  3. 八种创建等高列布局【出自w3c】

    高度相等列在Web页面设计中永远是一个网页设计师的需求.如果所有列都有相同的背景色,高度相等还是不相等都无关紧要,因为你只要在这些列的父元素中设置一个背景色就可以了.但是,如果一个或多个列需要单独设置 ...

  4. 有关列分组,定义css样式无效的问题

    声明: web前端学习笔记,欢迎大神指点.联系QQ:1522025433. 有时候我们要单独对表格的某列定义单独的样式,就会很自然的想到 表格的 在<table>标签内使用的 <co ...

  5. 古老的CSS同高列问题

    今日在网页设计时,遇到了希望页面的几列同高需求的实现问题,搜罗了一下google,找到以下文章,感觉不错,翻译过来,同时作为学习加深印象. https://css-tricks.com/fluid-w ...

  6. canvas基础入门(一)canvas的width、height于css样式中的宽高区别

    canvas的width.height于css样式中的宽高对画布的内容显示是有所区别的 1.在canvas标签下调用他的width和height,而且是没有单位的宽高,这种指定canvas大小的方法也 ...

  7. CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)

    本篇讲解CSS特异性(CSS Specificity)的细节,也就是CSS样式选择器的权重计算 通过计算选择器的权重(weight)最终决定哪个选择器将获得优先权去覆盖其他选择器的样式设定,即“优先原 ...

  8. bootstrap全局CSS样式学习

    参考http://v3.bootcss.com/css/,根据自己的记忆进行的复述,加深记忆. 首先介绍bootstrap全局CSS样式 只通过使用bootstrap.css,即可获得统一的样式设置. ...

  9. [bootstrap] 基本css样式和组件

    一.基本css样式 01.全局设置 全局 font-size 是 14px,line-height 是 20px. 这些样式应用到了 <body> 和所有的段落上. 另外,对 <p& ...

随机推荐

  1. Linux 常用命令汇总

    1.shutdown -s 时间 如果是想马上关机就直接输入0或者now: 2.init 0 这个是运行级别关机: 3.halt 这个命令不是很好用: 4.power off 这个命令也是很好用的. ...

  2. Oracle解锁的相关操作(转)

    当某个数据库用户在数据库中插入.更新.删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait ...

  3. cidaemon.exe是什么进程及怎样关闭cidaemon.exe进程

    问题描写叙述: 这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cpu率 ...

  4. IOS 警告 收集

    Semantic Warnings Warning Message -WCFString-literal input conversion stopped due to an input byte t ...

  5. Qt Quick 组件和动态创建的对象具体的解释

    在<Qt Quick 事件处理之信号与槽>一文中介绍自己定义信号时,举了一个简单的样例.定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Co ...

  6. DirectSound应用

    只是使用的假设PlaySound()这个API函数来显示的声音效果,然后,然后,它不会出现在混合声音,因为PlaySound还有播放期间声音,这将不可避免地导致现有声音停止. 因此,使用 PlaySo ...

  7. Session与Caching

    Session与Caching 在之前的版本中,Session存在于System.Web中,新版ASP.NET 5中由于不在依赖于System.Web.dll库了,所以相应的,Session也就成了A ...

  8. Ubuntu14.04安装一个小问题,搜狗输入法

    罕见的搜狗输入法支持ubuntu.尝试了决定性下载. 官方网站:http://pinyin.sogou.com/linux/ 官网教程:http://pinyin.sogou.com/linux/he ...

  9. Sqlserver2012 评估期已过解决问题

     Sqlserver2012评估期已过问题解决 一.背景: 因为之前安装sqlserver2012忘记输入序列号,如今出现评估期已过的问题,前几天忙活半天,才解决,发现网 上叙述都非常凌乱,并且仅仅有 ...

  10. Appium键盘操作

    方法1 AppiumDriver实现了在上述功能,代码如下(java版本) driver.sendKeyEvent(66);方法2 HashMap<String, Integer> key ...