前言

公司终于可以上外网了,近期在搞RN的东西,暂时脑子有点晕,等过段时间再来写点总结。倒是最近有个新学前端的同学经常会问一些基础知识,工作空闲写了小Demo给他看,全是很基础的知识,纯粹是顺便记录在这里就当温故而知新吧...

CSS布局

关于布局,我们马上就要想到浮动和定位,根据要实现的布局,相当于用浮动和定位等属性进行拖拽即可。现在浏览器对ie等老版本浏览器的兼容需求越来越低,我们还可以采用css3的flexbox布局来设计,这个如今已经是必须要掌握的一个布局方法了,尤其是在移动端非常便捷,最近正火react-native正是引入了flexbox布局,学会了这个,再去做app的开发布局也会感觉爽的停不下来。

言归正传,我们来实现一个最简单的三列布局,需要的效果如下:

两边是固定的侧边栏,中间是自适应宽度的主体内容。我们有好几种方法来实现。

绝对定位法

绝对定位感觉是新手最喜欢用的方法,不管怎么样,就是一个定位叠着一个定位,什么样子都可以定位出来。

  • html:
<div class="container">
<div class="left">left</div>
<div class="right">right</div>
<div class="main">main</div>
</div>
  • css:
.container {
position: relative;
width: 100%;
height: 800px;
background: #eee;
} .left,
.right {
height: 600px;
width: 100px;
position: absolute;
top: 0;
} .left {
left:0;
background: burlywood;
} .right {
right: 0;
background: coral;
} .main {
height: 800px;
margin: 0 110px;
background: chocolate;
}

浮动法

浮动法跟绝对定位法一样,比较简单,但是需要注意一点就是html中main部分要写在最后。

  • html:
<div class="container">
<div class="left">left</div>
<div class="right">right</div>
<div class="main">main</div> </div>
  • css:
.container {
height: 800px;
background: #eee;
} .left,
.right {
height: 600px;
width: 100px;
}
.left {
float: left;
background: burlywood
}
.right {
float: right;
background: coral
}
.main {
height: 800px;
margin: 0 110px;
background:chocolate
}

margin负值法

margin负值法算是一个因吹丝停的方法,我其实很少用,但是公司的很多老项目中倒是用的不少,这个方法比较巧妙,在html中main部分需要嵌套一个div了,并且顺序也是在第一位,然后浮动,后面left和right部分同样浮动按照正常来说会换行了,所有给一个负值的margin,就巧妙的达到了想要的效果。

  • html:
<div class="container">
<div class="main">
<div class="body">main</div>
</div>
<div class="left">left</div>
<div class="right">right</div> </div>
  • css:
.container {
height: 800px;
background: #eee;
} .main {
float: left;
width: 100%;
height: 800px;
} .main .body {
height: 100%;
margin: 0 110px;
background: chocolate;
} .left {
float: left;
margin-left: -100%;
width: 100px;
height: 600px;
background: burlywood;
} .right {
float: left;
margin-left: -100px;
width: 100px;
height: 600px;
background: coral;
}

flexbox布局法

flexbox布局在这个场景中其实并不是最合适的,因为两边侧栏都是固定宽高,和主体部分也没有等高。不过没有关系,学会其基本用法才是最主要的,记住flexbox分为容器与子元素两部分的样式设置,容器的justify-content 和 align-items是两个最重要的属性,子元素的flex属性,集成了flex-grow,flex-shrink,flex-basis三个属性。具体的用法我前面也有一篇文章写过。同时建议参考下CSS参考手册,里面关于flex属性的两个例子非常好。

  • html:
<div class="container">
<div class="left">left</div>
<div class="main">main</div>
<div class="right">right</div> </div>
  • css:
.container {
display: flex;
height: 800px;
background: #eee;
} .left {
flex: 0 0 100px;
height: 600px;
background: burlywood;
} .main {
flex: 1 1 auto;
margin: 0 10px;
background: chocolate;
} .right {
flex: 0 0 100px;
height: 600px;
background: coral
}

总结

突然写点简单的CSS知识感觉神清气爽,感觉找到了刚学时候的新鲜感~不限网的感觉不错,以后继续在博客园逛逛写写。

最新文章

  1. 如何封装JS ----》JS设计模式《------ 封装与信息隐藏
  2. Oracle中的Temporary tablespace的作用
  3. lightbox图片展示效果
  4. 【07_226】Invert Binary Tree
  5. (源码)自己写的ScrollView里套漂亮的圆角listview(算是漂亮吧。。。)
  6. MAC终端配色Solarized
  7. Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库
  8. MyEclipse激活失败,解决办法
  9. 织梦dede自定义内容分页,datalist运用实例
  10. HDU1864--01背包
  11. tomcat启动批处理——setclasspath.bat
  12. Asp.Net Core配置的知识总结
  13. ubuntu18.04 使用管理员权限
  14. PyTorch-Adam优化算法原理,公式,应用
  15. IIS 使用OpenSSL 生成的自签名证书,然后使用SingalR 客户端访问Https 站点通信
  16. 爬虫破解js加密(一) 有道词典js加密参数 sign破解
  17. 别人的Linux私房菜(9)文件与文件系统的压缩
  18. Python 网页解析器
  19. Intellij IDEA 环境配置与使用
  20. HUD6182

热门文章

  1. Incorporating ASP.NET MVC and SQL Server Reporting Services, Part 2
  2. (转)cat &gt; file &lt;&lt; EOF 的用法
  3. css3爆炸轮播效果
  4. PHP不使用内置函数intval(),实现字符串转整数
  5. loj#2332 「JOI 2017 Final」焚风现象
  6. p4463 [国家集训队] calc
  7. 洛谷P1982 小朋友的数字
  8. 【CDN+】 Spark 的入门学习与运行流程
  9. PHP-图片处理
  10. eclipse调试debug时出现source not found