一般的门户网站都采用了一种典型的960px的固定宽度布局,但现在的浏览器分辨率越来越大,有时候我们需要尽量利用屏幕的空间,特别是在做业务系统的时候。一种典型的场景是右边的导航栏固定宽度,而我们希望左边的宽度可以随着浏览器的宽度而自动适应。
我们可以用js轻易做到这一点,但是我们希望只用css,这样更简洁。下面就介绍一下如果通过css的负边距(negative margin)做到这一点。
首先看下面的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>一边固定宽度和另外一边自适应宽度的布局</title>
<style type="text/css">
body {
padding: 0;
margin: 0;
}
#wrapper {
width: 960px;
border: 1px solid #333;
margin: 0 auto;
}
#nav {
width: 200px;
float: right;
}
#content-wrapper {
margin-right: -200px;
float: left;
width: 100%;
}
#content {
margin-right: 200px;
padding: 0 10px;
}
.clearfix:after {
height: 0;
content: ".";
display: block;
clear: both;
visibility: hidden;
}
</style>
</head>
<body>
<div id="wrapper" class="clearfix">
<div id="content-wrapper">
<div id="content">
<p>
中新网1月12日电(记者贾靖峰)中国银监会有关负责人12日表示,将在风险可控、商业可持续前提下支持保障性住房建设,他并透露,2010年11月末经济适用房开发贷款同比劲增逾三成,经济适用房个人购房贷款则年劲增逾四成,但保障性住房贷款仍存在“风险缓释不足、还款保障难以落实”等问题。
</p>
</div>
</div>
<div id="nav">
<p>菜单1</p>
<p>菜单2</p>
<p>菜单3</p>
<p>菜单4</p>
</div>
</div>
</body>
</html>
以上代码的关键技术部分可以表述为:将一个宽度为100%的div的外边距(left-margin or right-margin)设置为某个负值,然后将其第一个子div的外边距(与父容器的边距同方向)设置为对应的正值,那么这个div就可以浮动并且自适应浏览器宽度。
这个例子还使用了一个css“hack”技术,那就是使用psuedo css清除浮动造成的父容器高度不会自动撑大的问题。
分享到:
相关推荐
主要介绍了css实现右侧固定宽度 左侧宽度自适应,这种布局比较常见,博客园很多默认主题就是这种。一般情况下,这种布局中宽度固定的区域是侧边栏,而自适应的区域是主体内容区——相信把侧边栏搞成自适应的人很少吧...
1、宽度自适应两列布局 两列布局可以使用浮动来完成,左列设置左浮动,右列设置右浮动,这样就省的再设置外边距了。 当元素使用了浮动之后,会对周围的元素造成影响,那么就需要清除浮动,通常使用两种方法。...
两列布局中,以主列(main)是自适应宽度,子列(sidebar)是固定宽度的情形最为常见。今天就来好好探讨一下如何实现这种定宽+自适应的两列布局。 1. absolute + margin 方式 首先想到的是利用 absolute + margin 的方式...
前面已经介绍过单列定宽单列自适应的两列布局,而两列自适应布局是指一列由内容撑开,另一列撑满剩余宽度的布局方式。本文将从float、table和flex来介绍两列自适应布局的3种思路。 思路一: float 在单列定宽单列...
HTML实现2列布局,左侧宽度固定,右侧自适应 实现一: <style> body, html{padding:0; margin:0;} // 根据CSS定位,利用浮动或绝对定位,使左侧的块元素脱离常规文档流,可以与右边块元素并列 div:nth-of-...
今天有位朋友一早转来一个有关于CSS布局的面试题,需要解决,花了点时间写...左边固定,右边自适应布局,这个第一点应该来说是非常的容易,实现的方法也是相当的多,那么就可以说第一条要求已不是什么要求了; 左右两列
CSS两列布局,右侧固定,左侧自适应宽度.
下面和大家一起探讨和学习了一种用div+css进行的三列(三栏)布局,而且是中间固定左右两边自适应宽度,听起来蛮有意思的。因为以前只是碰到过,左右两列固定而中间自适应的运用
主要介绍了CSS实现页面两列布局与三列布局的方法示例,包括宽度与高度的自适应的示例,需要的朋友可以参考下
三列布局的原理和两列布局的原理是一样的,只不过多了一列,只需给宽度自适应两列布局中间再加一列,然后重新计算三列的宽度,就实现了宽度自适应的三列布局。 同样的道理,更多列的布局,其实和两列、三列的...
zi-two-3.html ----6.8.4左右均能自适应的两列布局。 zi-three-1.html ----6.8.5三列布局中有两列内容固定。 zi-three-2.html ----6.8.6三列布局中有一列内容固定。 zi-three-3....
Form标签 layout属性设置为’inline’ 时 下拉组件宽度没有自适应: // 方法1:用Row + Col 定义自己需要的宽度,把layout属性设置为'horizontal', const formLayout = { labelCol: { span: 4 }, wrapperCol: { ...
本布局模式一共分为三列,其中两列宽度固定,一列宽度随内容宽度而改变。简易实现代码如下: 两列定宽加一列自适应 本案例中每一列高度为自适应,即高度和内容高度一致,左列和中列宽度为100px,右列宽度为自适应,...
在《CSS设计彻底研究》中对设计中常用的网页元素和布局方式都给出详细的分类和归纳,并讲解了完整的解决方法,主要包括各种导航菜单(水平的、竖直的、固定宽度的、自适应宽度的、下拉的等),Tab面板、伸缩面板和...
3.6 两列右列宽度自适应 3.7 二列固定宽度居中 3.8 三列浮动中间列宽度自适应 3.9 高度自适应 3.10 盒模型详解(.Box Model) 3.10.1 什么是盒模型 3.10.2 盒模型的细节 3.10.3 上下margin叠加问题 3.10.4 左右margin...
zi-two-3.html ----6.8.4左右均能自适应的两列布局。 zi-three-1.html ----6.8.5三列布局中有两列内容固定。 zi-three-2.html ----6.8.6三列布局中有一列内容固定。 zi-three-3....
瀑布流 – 小程序中数据列表或者图片展示难免高度不一,而我们一般固定宽度,让其高度自适应,并无缝对接。如下图: 瀑布流的两种做法: css: 在父元素上使用column-count: 2也可以做到两列排版。但column-count:...