css网页的几种布局实例
本文主要介绍了浅谈css网页的几种布局的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。2018年已经过了一周,总结一下2017年在公司wiki上写的一篇关于css布局的知识,当时也借鉴了几个大神写的css布局知识,和自己在项目中遇到的坑。废话不多说。请看以下的干货。1、左边固定,右边自适应布局的两种实现方式效果图如下:大屏展示:小屏展示: 第一种实现方式通过负边距与浮动 实现左边固定,右边自适应的布局。 主要代码如下:.left{float: left;width: 100%;height: 200px;background-color: red;}.left-content{margin-left: 30%;}.right{float: left;width: 30%;margin-left: -100%;height: 200px;background-color: green;}.layout0{clear: both;width: 100px;height: 100px;background-color: yellow;}设置子元素的margin,然后父元素必须浮动。用父元素包裹,主要是因为right会覆盖left,从而导致left内容不可以看到,如果直接在left上设置margin或者padding会导致布局变化,因此只能再用一个p包裹内容,并且去除right覆盖的宽度。-margin必须大于或等于自身的宽度才会上移实现过程中需要注意的是:1.自适应的容器需要容器包裹住,否则容器内的内容会被覆盖。2.right容器的负边距必须大于或等于自身的宽度才会上移。3.如果right容器负边距等于自身的宽度它会靠右对齐,如果负边距等于-100%,则会靠左对齐。第二种 通过浮动布局来实现左边固定,右边自适应的布局主要的代码如下:.left{float: left;width: 200px;height: 200px;background-color: yellow;}.right{padding-left: 200px;height: 200px;background-color: red;}@media (min-width: 650px) and (max-width: 1000px){.left{width: 150px;}.right{margin-left: 150px;}}@media (max-width: 640px){.left{width: 100px;}.right{margin-left: 100px;}}左边固定宽度,右边自适应实现过程中需要注意的是: 1. left需要脱离文档流,而right只需要正常显示就可以。2.left只是覆盖在right上边,因此想要让right内容完整显示需要给right padding-left或者margin-left。 大屏展示:小屏展示: 主要代码如下:#head{height: 200px;background-color: yellow;}#body{width: 100%;float: left;}.main{background-color: green;min-height: 200px;margin: 0 210px;}.left{float: left;background-color: red;width: 200px;height: 200px;margin-left: -100%;}.right{float: right;background-color: blue;width: 200px;height: 200px;margin-left: -200px;}#footer{clear: both;height: 200px;background-color: orange;}即左右固定,中间自适应,它可以利用margin-left为负数来实现,它的实现原理就是margin为负值可以改变float元素的排列位置当多个元素同时从标准流中脱离开来时,如果前一个元素的宽度为100%宽度,后面的元素通过负边距可以实现上移。当负的边距超过自身的宽度将上移,只要没有超过自身宽度就不会上移实现过程中需要注意:1.中间自适应的p需要放在left和right容器前面并且内容p需要用父容器包裹2.left和right容器向同一个方向浮动。主要代码如下:#head{height: 200px;background-color: yellow;}#body{overflow: hidden;}.left{float: left;background-color: red;width: 200px;height: 200px;}.right{float: right;background-color: blue;width: 200px;height: 200px;}.main{background-color: green;height: 200px;margin: 0 210px;}#footer{clear: both;height: 200px;background-color: orange;}左右固定宽度并且向两边浮动,中间的p设置两边的margin该方案有一个缺陷,在小屏幕情况下回导致right被挤下去,main没有了实现过程中需要注意:1.该方式只需要注意中间自适应的p需要放在left和right容器的后面。2.left和right容器向两边浮动。主要代码如下:使用flex 实现“双飞翼布局”#main{display: flex;display: -webkit-flex;//谷歌浏览器加前缀flex-flow: row nowrap;justify-content: flex-start;align-items: center;}.left{flex: 0 0 auto;width:100px;height: 200px;background-color: red;word-wrap: break-word; overflow: hidden;}.main{flex: 1 1 auto;height: 200px;background-color: green;}.right{flex: 0 0 auto;width: 100px;height: 200px;background-color: yellow;}flex 语法我参照了阮一峰关于flex语法介绍 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html如果未了解过flex布局请移至文末点击链接查看 阮一峰大神写的关于flex语法3、定位布局这边就不絮絮叨叨的讲一些基础的css定位知识了(ps:不会的请自行到w3c官网查阅),我主要来讲解一下工作中遇到的坑。以免其他人和我一样掉入坑中。第一:使用多个fixed时,注意自己需要基于什么定位,因为如果父级有用transform属性时,可能会导致子元素的fixed基于父元素容器定位,而不是基于body定位。效果如下:在上图中我可以发现中间黑色的小框是基于父级来定位,并且宽度也基于父容器的50%。详细的请看下面代码: 关于position的定位的坑 body{ margin: 0; padding: 0; } i{ font-style: normal; cursor: pointer; } #delete-button{ position: absolute; left: 45%; top: 45%; text-align: center; vertical-align: middle; height: 50px; margin: auto; cursor: pointer; } #delete-button > i{ display: inline-block; width: 32px; height: 32px; border-radius: 16px; background-color: orange; color: red; font-size: 32px; vertical-align: middle; line-height: 28px; } /*第一个模态框的样式*/ #layout{ display: none; width: 100%; height: 100%; } /*使用flex布局水平竖直居中*/ /*#layout-box{ position: fixed; width: 100%; height: 100%; left: 0; top: 0; display: flex; display: -webkit-flex; flex-flow: column nowrap; justify-content: center; align-items: center; background-color: rgba(0,0,0,0.3); }*/ /*使用postion 和 transform 水平垂直居中*/ #layout-box{ position: fixed; width: 100%; height: 100%; background-color: rgba(0,0,0,0.3); } .modal-dialog{ position: absolute; left: 50%; top: 50%; width: 500px; height: 200px; border-radius: 10px; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); -o-transform: translate(-50%, -50%); background-color: #fff; } .dialog-title{ text-align: center; color: #333; font-size: 28px; margin-bottom: 10px; } .dialog-content{ text-align: center; color: #666; font-size: 18px; } .dialog-button{ margin-top: 20px; width: 100%; color: #333; } .dialog-button >.button-box{ display: inline-block; width: 48%; text-align: center; } .button-box span{ display: inline-block; padding: 10px; color: #fff; border-radius: 6px; cursor: pointer; } #confirm{ background-color: #27ad9a; } #cancel{ background-color: red; } /*添加按钮的样式*/ #add-button > i{ display: inline-block; width: 32px; height: 32px; border-radius: 16px; background-color: #27ad9a; color: #fff; font-size: 32px; vertical-align: middle; line-height: 28px; text-align: center; } #add-button{ display: inline-block; cursor: pointer; } /*第二个模态框的样式*/ .layout2{ display: none; position: fixed; width: 100%; height: 100%; left: 0; top: 0; background-color: rgba(0,0,0,0.2); } .modal-dialog2{ position: fixed; left: 50%; top: 50%; width: 50%; height: 50%; border-radius: 10px; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); -o-transform: translate(-50%, -50%); background-color: rgba(0,0,0,0.2); } .modal-dialog2 > span{ display: block; } .modal-text{ float: left; } #close{ color: red; font-size: 24px; float: right; cursor: pointer; } -删除 提示 是否删除该项,点击确定 确定 取消 <p id="add-butto
怎么可以最简单的使用div+css制作网页框架
1、布局先把大框架确定,再逐步把内部的细节构建出来,从层级关系来看就是由外往内布局;
2、如果你对divcss不是很熟悉,那么你可以先以图片作为背景图片代替
3、如果对布局定位不是很熟练,那么可以暂时以绝对位置来布局
4、自己不熟悉的情况下,在设计平面页面的时候就要先考虑到自己是否有能力写出这个页面的布局出来,或者说自己写出来的不出问题;比如圆角、阴影、半透明效果、模块错位叠加等等;
其实页面布局是否简单只是相对而言的,精通的人和新手的看法肯定不同,从长远来看,新手还是不要取巧,写divcss代码的时候不要怕出错,不要怕难,碰到了问题就去寻找解决的方法,针对问题然后去解决问题是最好的解决方式,当你不再碰到问题或者很少碰到问题的时候,就说明你已经精通或者离精通不远了
还有一点要说一下,学习得有一个喜欢的态度,不要当做负担或者任务来学习,当你对一个东西感兴趣的时候你会学习的很快;就好比读书的时候某些学生某一科的成绩一直很好,绝大部分人其实都是感兴趣才会学的那么好
什么是div+ css布局?
1、能够使代码精简,使用div+css布局使代码很是精简,css文件可以在网站的任意一个页面进行调用,避免了使用table表格修改部分页面。
2、提升了网页访问速度,div+css布局较传统的Table布局比较,减少了许多代码,其浏览访问速度自然得以提升,从而提升了网站的用户体验度。
3、有利于优化。采用div-css布局的网站对于搜索引擎很是友好,简洁、结构化的代码更加有利于突出重点和适合搜索引擎抓取。
4、浏览器兼容性 。DIV+CSS更容易出现多种浏览器不兼容的问题,主要原因是不同的浏览器对web标准默认值不同。
5、需要注意的是,网页不喜欢一个页面有太多的css代码,否则同样会影响蜘蛛的爬行,影响搜索引擎的收录,所以采用外部调用的方式调用CSS是非常不错的方法。