css宽度自适应怎么实现

发布时间:2022-03-05 09:59:53 作者:小新
来源:亿速云 阅读:449

这篇文章将为大家详细讲解有关css宽度自适应怎么实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  我们经常会看到这样的页面,左侧(或者右侧)为固定的导航或者菜单栏,另一侧将会随着浏览器的缩放而自适应改变其大小,这其实就是宽度自适应的实现。

  css宽度自适应中最常见的实现方法有两种,一种是两列布局,另一种是三列布局

  下面我们就来对这两种方法分别简单介绍一下。

  一.css宽度自适应之两列布局:

  我们以右侧宽度固定,左侧宽度自适应为例:

  1、固定宽度区浮动,自适应区不设宽度而设置margin

  <divid="wrap">

  <divid="sidebar"style="height:500px;background:red;color:#fff;">固定宽度区</div>

  <divid="content"style="height:500px;background:#000;color:#fff;">自适应区</div>

  </div>

  #sidebar{

  float:right;width:300px;

  }#content{

  margin-right:300px;

  }

  注意:

  右侧一直固定不动,左侧根据屏幕的剩余大小自适应。

  但实际上这个方法是有局限性的,那就是html结构中sidebar必须在content之前才行。

  2、float与margin配合使用

  <divid="wrap">

  <divid="content"style="height:500px;background:#000;color:#fff;">

  <divclass="contentInner">

  自适应区</div>

  </div>

  <divid="sidebar"style="height:500px;background:red;color:#fff;">固定宽度区</div>

  </div>

  #content{

  margin-left:-300px;float:left;width:100%;

  }#content.contentInner{

  margin-left:300px;

  }#sidebar{

  float:right;width:300px;

  }

  说明:这样实现,contentInner的实际宽度就是屏幕宽度-300px。

  3、固定宽度区使用绝对定位,自适应区设置margin

  <divid="wrap">

  <divid="content"style="height:500px;background:#000;color:#fff;">我现在的结构是在前面</div>

  <divid="sidebar"style="height:500px;background:red;color:#fff;">固定宽度区</div>

  </div>

  #wrap{

  position:relative;

  }#content{

  margin-right:300px;

  }#sidebar{

  position:absolute;

  width:300px;

  right:0;

  top:0;

  }

  4、使用display:table实现

  <divid="wrap">

  <divid="content"style="height:500px;background:#000;color:#fff;">我现在的结构是在前面</div>

  <divid="sidebar"style="height:500px;background:red;color:#fff;">固定宽度区</div>

  </div>

  #wrap{

  display:table;

  width:100%;

  }#content{

  display:table-cell;

  }#sidebar{

  width:300px;

  display:table-cell;

  }

  注意:这一种方法在IE7以及以下浏览器不兼容,因为IE7设置display为table不识别。

  二.css宽度自适应之三列布局:

  1、固定宽度三列布局

  <divclass="div0">

  <divclass="left">left</div>

  <divclass="middle">middle</div>

  <divclass="right">right</div>

  </div>

  *{

  padding:0;

  margin:0;

  }

  .div0{

  width:800px;

  height:500px;/*设置高度只为结果更直观,高度可根据内容自适应*/

  margin:50pxauto;

  border:2pxsolid#E51414;/*添加边框只为结果更直观*/

  }

  .left{

  width:200px;

  height:500px;/*设置高度只为结果更直观,高度可根据内容自适应*/

  background:#6E6C8A;

  float:left;/*设为左浮动*/

  text-align:center;

  }

  .middle{

  width:430px;

  height:500px;/*设置高度只为结果更直观,高度可根据内容自适应*/

  background:#806155;

  float:left;/*设为左浮动*/

  margin:010px010px;/*左右各加10px使得三列之间有间隙*/

  text-align:center;

  }

  .right{

  width:150px;

  height:500px;/*设置高度只为结果更直观,高度可根据内容自适应*/

  background:#8F9068;

  float:right;/*设为右浮动*/

  text-align:center;

  }

  2、左右固定宽度、中间自适应宽度的三列布局

  <!--<divclass="div0">-->

  <divclass="left">left</div>

  <divclass="middle">middle</div>

  <divclass="right">right</div>

  <!--</div>-->

  *{

  padding:0;

  margin:0;}

  /*.div0{

  width:800px;

  height:500px;

  margin:50pxauto;

  position:relative;

  border:2pxsolid#E51414;

  }

  可以不要这个父元素div0(即默认父元素为body),如果有,需将这个父元素设置为相对定位*/

  .left{

  width:200px;

  height:500px;

  background:#6E6C8A;

  position:absolute;

  top:0;l

  eft:0;

  /*设为绝对定位并且与其父元素的top、left距离都为0*/

  text-align:center;

  }

  .middle{

  height:500px;

  background:#806155;

  margin:0160px0210px;

  /*左右各加10px使得三列之间有间隙*/

  text-align:center;

  }

  .right{

  width:150px;

  height:500px;

  background:#8F9068;

  position:absolute;

  top:0;

  right:0;

  /*设为绝对定位并且与其父元素的top、right距离都为0*/

  text-align:center;

  }

  说明:当左右两个div宽度固定,中间的div宽度未知时,使用浮动不能实现三列布局。使用绝对定位才能实现三列布局:需要将左边和右边的元素设置为绝对定位,将中间的元素margin值的左右分别设置为右边元素和左边元素的宽度。不需要父元素的包裹,即可实现三列布局,如果有父元素,需要将父元素设置为相对定位。

关于“css宽度自适应怎么实现”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. CSS如何实现自适应宽度的菜单
  2. css实现宽度自适应的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

css

上一篇:jQuery报错Uncaught ReferenceError: $ is not defined怎么解决

下一篇:css如何实现元素水平排列

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》