博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML 应用 多列浮动等高处理
阅读量:6448 次
发布时间:2019-06-23

本文共 4746 字,大约阅读时间需要 15 分钟。

  hot3.png

来自 的解决方案, 做了简化处理,看原文更明白了。随时E文,不过作者并没有使用比较复杂的句子。

直觉利用浮动写一个三列布局:效果如下,这就是背景。

203428_Dx2c_226032.png

基于此提供了一个解决方案,来使得三列均按照最高的内容的那个一列的高度为高度。因此问题的关键是为三列的高度提供一个高度的参考点。可以为三列增加一个容器试试看。

code;

            
        
            html ,body{                background-color:#f6f6f6;            }            .container{                float:left;                background-color:#c00;            }            .left{                width:25%;                float:left;                background-color:#abcdef;            }            .center{                width:50%;                float:left;                background-color:#fedcba;            }            .right{                width:25%;                float:right;                background-color:#defabc;            }                        
                    
In the example above we have three columns each with a different amount of content. You will notice that the problem is the column background colours stretch only as far down as the height of the content they contain. This is the problem we are trying to solve. How can we make all columns the same height?             
The first step to solving the equal height problem is to break it into smaller pieces that can be solved separately. The way we do this is to use two divs for each column instead of one. The first div will be used to hold the content and the other will be used as the background colour. This separation gives us individual control over these elements plus we can put them together in a more useful way. This will all become clear shortly.            
This is the central principle behind this equal column height method. The only way to make the height of a div equal to the tallest column is if that div contains all the columns. So to explain this another way, by placing the columns.            

效果:

    204640_CMiA_226032.png

这个时候,高度已经一致了,就是背景差一些。我们再弄个背景层。那么大概是这个样子来拼这个页面的:

这个时候再看,若是能够把红色的背景按比例分层三种颜色就好了。然后和文字刚好配上,就达到想要的效果了。

三种颜色,那么应该需要三个div,而且div应该高度和内容最高的列高度一致。基于上面已经得出的结论,那么设置三个嵌套的div即可。

233713_vmVB_226032.png

代码如下:

            
        
            html ,body{                background-color:#f6f6f6;            }            .left{                width:25%;                float:left;            }            .center{                width:50%;                float:left;            }            .right{                width:25%;                float:right;            }            .right-bg{                position:relative;                overflow:hidden;                float:left;                background-color:#abcdef;            }            .mid-bg{                float:left;                background-color:#defabc;                position:relative;                right:25%;            }            .left-bg{                float:left;                background-color:#fedcba;                position:relative;                right:50%;            }                        
            
                
                    
In the example above we have three columns each with a different amount of content. You will notice that the problem is the column background colours stretch only as far down as the height of the content they contain. This is the problem we are trying to solve. How can we make all columns the same height?                     
The first step to solving the equal height problem is to break it into smaller pieces that can be solved separately. The way we do this is to use two divs for each column instead of one. The first div will be used to hold the content and the other will be used as the background colour. This separation gives us individual control over these elements plus we can put them together in a more useful way. This will all become clear shortly.                    
This is the central principle behind this equal column height method. The only way to make the height of a div equal to the tallest column is if that div contains all the columns. So to explain this another way, by placing the columns.                                        

效果如下:

234142_mwhj_226032.png

然后,看到了,其实是各个背景层的div 以此向左移动了,那么只要把文字相应的位置补偿回来就OK了。

.left{                width:25%;                float:left;                position:relative;                left:75%;            }            .center{                width:50%;                float:left;                position:relative;                left:75%;            }            .right{                width:25%;                float:right;                position:relative;                left:75%;            }

改动下js,即可看到效果了。

原文中有关于增加padding的部分是如何做的,以及作者的2列,多列的做法。点击去吧。

这个思路实在是太牛了。对js的定位和高度的理解出神入化,尤其是使用多层div的背景的做法,令人拍案叫绝。

转载于:https://my.oschina.net/honchy/blog/358246

你可能感兴趣的文章
获取androdmanifest里面的meta-data
查看>>
Centos 6.3编译安装nagios
查看>>
如何实现7*24小时灵活发布?阿里技术团队这么做
查看>>
iSCSI
查看>>
java1234_Activiti_第6讲_一般程序员使用的函数
查看>>
mysql拷贝表的几种方式
查看>>
NetApp FAS2240-4存储删除文件数据恢复
查看>>
用设计模式去掉没必要的状态变量 —— 状态模式
查看>>
linux安装elasticsearch及遇到的各种问题
查看>>
健忘的正则
查看>>
[转]CMake快速入门教程:实战
查看>>
IntelliJ IDEA创建JavaWeb工程及配置Tomcat部署
查看>>
Markdown用法
查看>>
求最大值及其下标
查看>>
Request header is too large
查看>>
轮播插件swiper.js?
查看>>
网路流24题总结
查看>>
BZOJ-3732 Network 图论 最小生成树 倍增
查看>>
python之文件操作
查看>>
15 个 Android 通用流行框架大全
查看>>