多种方法实现自适应布局

最近切了几个手机端的网页,第一次切的是美团的首页,为了自适应不同的手机分辨率,需要用到自适应布局,切图的时候是用的第一中方法,用到了定位,后来查找了一些其他方法,现在就介绍几种自适应布局的实现方法:

美团网页头就用到了自适应

地址:”长沙“,右边的”我的“是固定宽度,不会因分辨率不同而改变大小,中间内容自适应;这里就用三个div来代替表示吧。

html部分:

1 <div class="main">
2             <div class="div1">1</div>
3             <div class="div2">2</div>
4             <div class="div3">3</div>
5         </div>

方法一:使用定位的方法将左右两边的内容固定在固定位置,中间内容width=100%,并左右margin出相应的位置放置绝对定位在该区域的‘东西’;

 1         *{
 2             padding: 0;
 3             margin: 0;
 4         }
 5         .main{
 6             height: 30px;
 7             position: relative;
 8         }
 9         .div1{
10             width: 30px;
11             height: 30px;
12             background: blue;
13             float: left;
14             position: absolute;//相对其父元素定位
15             left: 0;
16             top: 0;
17         }
18         .div2{
19             width: 100%;
20             height: 30px;
21             background: green;
22             float: left;
23             margin: 0 30px;
24         }
25         .div3{
26             width: 30px;
27             height: 30px;
28             background: red;
29             float: left;
30             position: absolute;
31             right: 0;
32             top: 0;
33         }

方法二:使用dispaly:table;作为块级表格来显示(类似 <table>,根据内容来自适应)

1、设置父级元素dispaly:table;

2、左右两边给定固定宽度或用内容自动撑开;

3、左右两边设置dispaly:table-cell;

CSS代码如下:

 1 * {
 2             margin: 0;
 3             padding: 0;
 4         }
 5         .main {
 6             display: table;
 7         }
 8         .div1,.div3{
 9             width: 100px;
10             height: 300px;
11             display: table-cell;
12         }
13         .div1 {
14             background: red;
15         }
16         .div2 {
17             background: blue;
18             height: 300px;
19
20         }
21         .div3 {
22             background: black;
23         }

方法二:使用dispaly:flex;

1、设置父级元素dispaly:table;

2、左右两边给定固定宽度;

3、需要自适应的中间部分设置flex=1;

 1 * {
 2             margin: 0;
 3             padding: 0;
 4         }
 5         .main {
 6             display: flex;
 7         }
 8         .div1,.div3{
 9             width: 100px;
10             height: 300px;
11         }
12         .div1 {
13             background: red;
14         }
15         .div2 {
16             background: blue;
17             height: 300px;
18             flex: 1;
19         }
20         .div3 {
21             background: black;
22         }

备注:

1、对于方法三,如果需要多列都自适应,可以分别设置flex,将按按比例进行自适应;如

.div1,.div3{
flex: 1;
height: 300px;
}

.div1,.div3 均设置flex: 1;三个div将各占父元素的三分之一的宽度,如果需要设置竖向自适应,父元设置flex-flow:clumn;

2、对于方法三,可以父元素使用display:box;或者父元素使用display:flexbox;但不同浏览器需要加上不同的前缀来进行兼容;display:box为最老版本,display:flexbox为过渡版本,dispaly:flex为最新版本,最新的主流浏览器基本上都支持

时间: 2024-12-25 19:53:20

多种方法实现自适应布局的相关文章

css教程:css自适应布局方法

在进行web前端项目开发(http://www.maiziedu.com/course/web-px/)时,通常情况下会对浏览器进行自适应布局,自适应布局分两类:高度和宽度,方法有很多,我用三列布局举例,我就列几个通俗易懂的例子呗,懂了三列的,两列的原理一样,呵呵哒. 效果图如下:高度自适应--宽度自适应 1,高度自适应布局 原理就是把每个模块设置为绝对定位,然后设置中间自适应的模块的top和bottom属性的值分别为头部模块和底部模块的高,然后中间模块的高度就自适应了.代码如下: html代码

3列、2列自适应布局,中部内容优先显示3列布局等方法

1. 固定宽度,中部DIV内容优先显示布局 说明:这种布局一般常见与社交网站,例如QQ空间,朋友网等等,特点是把中部信息的内容放在前面显示,左侧菜单内容最后显示.实现方法:重点在于使用了margin-left:-960px;这样样式,如果能深入了解一下margin的负值和浮动原理就可以很好的理解此方法了.下面是demo: <!DOCTYPE><html><head>    <meta charset="utf-8">    <tit

中间定宽,两边自适应布局的三种实现方法

中间定宽,两边自适应布局的三种实现方法 1. 浮动加定位 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>中间定宽,两边自适应</title> <style type="text/css"> html,body,div{ height: 100%; } .parent{ p

我熟知的三种三栏网页宽度自适应布局方法

一.前言在如今各个分辨率显示器N足鼎立的时期,页面采用流动性布局(亦可称自适应布局)不失为一个好选择.当然,具体实现不是那么容易,需要一定的css功力和实践经验.本文不讲细节,只讲外部的自适应架构,这也是实现整个页面自适应的前提.目前为止,我所熟知的左中右三栏宽度自适应于浏览器的方法有三个:绝对定位法,margin负值法以及自身浮动法.这些方法简洁实用,且无兼容性问题.如果您想在您的页面上使用流动性布局,相信本文给您一些启示的. 二.三种方法为了演示的需要,首先限定下示例的布局结构:左中右三栏布

处理移动端自适应布局的方法- calc()与vw

在处理移动端自适应布局时,目前前端最流行的方法应该就是使用媒体查询,来设置HTML的字体大小,然后用rem为单位对Dom的宽高进行设置,这个方法的优势在于兼容性方面很好,劣势则在于当前市场上不同的机型太多,尺寸种类比较杂,所以要想做到所以尺寸机型都能适应,工作量相对比较大.目前也有人会选择用百分比进行布局,这个布局方法在仅仅处理元素的宽高上面非常好用,但是当js中要对dom元素的尺寸进行设置时,百分比的局限性就出来了,还有就是dom元素的font-size没办法用页面宽度百分比对他进行大小设置,

css3 calc()属性介绍以及自适应布局使用方法

前端知识 Calc()介绍 calc的英文是calculate的缩写,中文为计算的意思,是css3的一个新增的功能,用来只当元素的长度.比如说:你可以用calc()给元素margin.padding.border.font-size和width等属性设置动态值.为什么说是动态值呢?因为我们是使用来表示得到的值.不过calc()最大的好处就是用在流体布局上,可以通过calc()计算得到元素的宽度. Calc()的用处 calc()能让你给元素的做计算,你可以给一个div元素,使用百分比.em.px

关于页面的多种自适应布局——三列布局

简单结构1,列表在前,更多列表在中间,内容在后 1 <style type="text/css"> 2 .layout{background-color:gray; padding:10px; border:10px solid orange; margin:10px 0; zoom:1;} 3 .layout:after{content:"";clear:both; display:block; height:0px; overflow:hidden;

微信小程序新单位rpx与自适应布局

rpx是微信小程序新推出的一个单位,按官方的定义,rpx可以根据屏幕宽度进行自适应,在rpx出现之前,web页面的自适应布局已经有了多种解决方案,为什么微信还捣鼓出新的rpx单位?在解释这个单位前,我们先简单了解一下目前的主流的自适应布局解决方案: 响应式(Responsive web design) rem 流式布局 scale伸缩布局 响应式 响应式布局的问题在于需要维护多个样式文件,维护成本太大,一般的移动H5页面都不会优先考虑. rem rem是近几年比较流行的方案,淘宝移动web端就是

响应式布局和自适应布局的不同

学了前端一段时间了,发现大家都搅浑了自适应布局和响应式布局的差别.现在我来和大家说下它们的不同: 自适应的体验   http://m.ctrip.com/html5/响应式的体验   http://segmentfault.com/ 整理了自己查阅的知识点,给各位一些提示. 起初,网页设计者都会涉及固定宽度的页面,最开始的电脑显示器分辨率种类不多,因为当时本来电脑就少,即使有变化也是800,850,870,880,比如开源中国的网页就是固定宽度为998来定制的,至于为啥是998,我也不知道...