关于前端布局的思考
来源:互联网 发布:5sing mac版 编辑:程序博客网 时间:2024/05/22 16:50
在刷百度前端技术学院题目时的思考
1.两栏布局
a.通常情况下比较喜欢使用左浮动加右浮动,给两个浮动块都加上宽度,只要一行能够放下就可以,放不下就会跑到下一行中。这时候给右边的元素加margin,它是相对于左浮动元素来确定margin的距离的。因为这俩是在一个层级。 b.或者左浮动但是右面的元素不加浮动,但是右边的元素需要设置margin-left值,而这个值是相对于父级边框的,而不是相对于左边的元素。然后右边设置width:auto或者不设置宽度,那么右边元素的宽度是自适应的。 c.还有一种是
<style type="text/css"> #header, #footer{ height: 100px; background: red; } #content .main{ height: 200px; background: green; overflow: auto; } #content .aside{ height: 200px; width: 100px; background: blue; float: left; } </style> <body> <div id="header"></div> <div id="content"> <div class="aside"></div> <div class="main"> main main main main main main </div> </div> <div id="footer"></div></body>
第三种方法,我利用的是创建一个新的BFC(块级格式化上下文)来防止文字环绕的原理来实现的。BFC就是一个相对独立的布局环境,它内部元素的布局不受外面布局的影响。它可以通过以下任何一种方式来创建:
float 的值不为 none
position 的值不为 static 或者 relative
display 的值为 table-cell , table-caption , inline-block , flex , 或者 inline-flex 中的其中一个
overflow 的值不为
visible
关于BFC,在w3c里是这样描述的:在BFC中,每个盒子的左外边框紧挨着 包含块 的 左边框 (从右到左的格式化时,则为右边框紧挨)。即使在浮动里也是这样的(尽管一个包含块的边框会因为浮动而萎缩),除非这个包含块的内部创建了一个新的BFC。这样,当我们给右侧的元素单独创建一个BFC时,它将不会紧贴在包含块的左边框,而是紧贴在左元素的右边框。
4.使用负margin
<style type="text/css"> html,body{ padding: 0; margin: 0; } #header, #footer{ height: 100px; background: red; overflow: hidden; } #main{ overflow: auto; } #main .center{ height: 200px; width: 100%; float: left; } .center .content{ height: 200px; background: green; margin-right: 100px; } #main .aside{ height: 200px; width: 100px; background: blue; float: left; margin-left: -100px; } </style> <body> <div id="header">header</div> <div id="main"> <div class="center"> <div class="content"> 我是主区块 我是主区块 main main main </div> </div> <div class="aside"></div> </div> <div id="footer">footer</div></body>
2.三栏布局
张鑫旭-我熟知的三种三栏网页宽度自适应布局方法
a.绝对定位
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><style type="text/css"> html,body{ margin: 0px; height: 100%; } #container{ height: 100%; } #right,#left{ position: absolute; top: 0; width: 200px; height: 100%; } #left{ left: 0px; background-color: red; } #right{ right: 0px; background-color: yellow; } #main{ margin: 0 210px; background-color: blue; height: 100%; } </style> <body> <div id="container"> <div id="left"></div> <div id="main"></div> <div id="right"></div> </div> </body></html>
这个注意一下,body 和html都得设置height:100%。要不中间的元素块会没有了。设置html的height:100%,就可以获取浏览器的定高了,后面的body和div也就有了依赖。详细可以看下面的链接。
由html,body{height:100%}引发的对html和body的思考
b.负margin
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><style type="text/css">html,body{ margin: 0px; height: 100%; } #main{ width: 100%; height: 100%; float: left; } #main #body{ margin: 0 210px; background-color: blue; height: 100%; } #right,#left{ float: left; background-color: yellow; top: 0; width: 200px; height: 100%; } #left{ margin-left: -100%; } #right{ margin-left: -200px; } </style> <body> <div id="main"> <div id="body"></div> </div> <div id="left"></div> <div id="right"></div></body></html>
c.然后就是自身浮动法
这个比较简单,就不多说了。
阅读全文
0 0
- 关于前端布局的思考
- 关于前端的一点思考
- 关于前端开发的思考
- WEB前端:关于项目管理的思考
- 关于前端js搭建的思考
- 关于邮箱前端架构的一些思考
- 关于前端的思考与感悟
- 关于前端的思考和感悟
- 关于布局设计器的思考
- 关于页面布局的一点思考
- 关于前端路由和后端路由的一点思考
- 关于前端的思考:ANGULARJS 2.0以及前后端边界
- 前端框架的思考
- 关于思考的思考
- 关于思考的思考
- 关于html前端页面布局
- 网站前端开发的思考
- 初学前端的点思考
- [Linux]ubuntu开放server的指定端口
- java多线程之线程同步问题
- 解决android横屏后activity启动两次onCreate方法
- 线程池创建
- Java IO最详解
- 关于前端布局的思考
- C++重载原理
- 非root用户CentOS下安装JDK1.7
- 鸣人的影分身
- python3 爬虫-入门
- 烂代码传奇
- 由浅入深理解java集合(三)
- Android:最全面的 Webview 详解
- Android ormlite DB错误 Unable to run insert stmt on object