css经典布局之左侧固定大小右侧自动适应

最近学习了一种经典布局,固定左侧或右侧的宽度,另一侧自适应宽度,此种布局挺常用,尤其是像后台,大部分都是采用这种结构,还比如像订餐类的APP,进入商家的时候,会出现一堆饭的列表,左侧是饭的分类,右侧是饭的列表等等。反正挺实用,值得收藏!

先看HTML代码

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>左侧固定,右侧自适应</title>
    </head>
    <body>
        <h1>左侧固定,右侧自适应布局</h1>
        <div class="left-fixed_right-auto">
		    <div class="left">
		        左侧定宽左侧定宽左侧定宽左侧定宽左侧定宽左侧定宽
		    </div>
		    <div class="right">
		        <div class="right-content">
		            右侧自适应,这是会自动换行的换行的换行的发动发动发扥扥这是会自动换行的换行的换行的发动发动发扥扥这是会自动换行的换行的换行的发动发动发扥扥这是会自动换行的换行的换行的发动发动发扥扥
		        </div>
		    </div>
		</div>
    </body>
</html>

  

css代码

*{
	margin: 0;
	padding: 0;
	-webkit-box-sizing: border-box;
	   -moz-box-sizing: border-box;
	        box-sizing: border-box;
}
/* 两列右侧自适应布局 */
.left-fixed_right-auto{
	width: 100%;
	height: 200px;
	clear: both;
	display: inline-block;
	margin-top: 20px;
}
.left{
	position:relative;
	float:left;
	width:200px;/* 数值核心1 */
	height: 100%;
	margin-right:-200px;/* 数值核心2 */
	background: red;
}
.right{
	float:right;
	width:100%;
	height: 100%;
	background: pink;
}
.right-content{
	margin-left:200px;/* 数值核心3 */
	height: 100%;
	background: blue;
}

  

  点击查看效果

你可以尝试改变你的浏览器窗口,会发现,不管怎么改变大小,始终都是这种布局。有了这个规律,便可以实现一种动态效果,比如有一种场景:

左侧里面放一个按钮,通过点击这个按钮,来切换左侧的宽度大小。当左侧变窄时,右侧自动变宽;当左侧变宽时,右侧自动变窄,下面来实现一下:

js代码,在这之前,需要注释css中的以下三行代码

.left{
    position:relative;
    float:left;
    /* width:200px; */
    height: 100%;
    /* margin-right:-200px; */
    background: red;
}
.right-content{
    /* margin-left:200px; */
    height: 100%;
    background: blue;
}

  

其实这三行我已在注释中标明了,分别是数值核心1,2,3.

javascript(我没有写window.onload,请务必放到dom的下面执行)

var doc=document,

    /**
     * [flag 当前展示宽度状态,true:使用最大宽度;false:使用最小宽度。默认是使用最大宽度]
     * @type {Boolean}
     */
    flag=true,

    /**
     * [maxWidth,minWidth 分别是左侧的最大和最小宽度]
     * @type {String}
     */
    maxWidth="200px",
    minWidth="50px",

    //左侧按钮容器
    btnContainer=doc.querySelector(".toggle-btn"),

    //左侧容器和右侧容器,实际上就只需要操作这两个元素
    leftContainer=doc.querySelector(".left"),
    rightContent=doc.querySelector(".right-content"),

    /**
     * 切换宽度大小
     * @param {String}   width 左侧需要显示的宽度(带px)
     */
    setToggleLayout=function(width){
        leftContainer.style.width=width;
        leftContainer.style.marginRight="-"+width;

        rightContent.style.marginLeft=width;
    };

//初始化先调用一下,根据前面定义的规则,默认显示最大宽度
setToggleLayout(flag ? maxWidth : minWidth);

//点击按钮切换大小
btnContainer.onclick=function(){
    flag=!flag;
    setToggleLayout(flag ? maxWidth : minWidth);
    btnContainer.innerHTML=flag ? "收起" : "展开";
};

  

点击查看效果

点击查看完整代码

其实这只是简单的封装,你可以使用jQuery加入动画,还可以写成jQuery插件等。

个人官方博客:赛冷思个人博客

时间: 2025-01-05 18:10:42

css经典布局之左侧固定大小右侧自动适应的相关文章

CSS左侧固定宽 右侧自适应(兼容所有浏览器)

左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到效果其实也并不是太难,只是给人感觉像有点蛋疼的问题一样.但是你仔细看后你会觉得不是那么回事: 左边固定,右边自适应布局,这个第一点应该来说是非常的容易,实现的方法也是相当的多,那么就可以说第一条要求已不是什么要求了: 左右两列等高布局,这一点相对来说要复杂一些,不过你要是了解了怎么实现等高布局,那么

CSS左侧固定宽 右侧自适应(兼容所有浏览器)(转载)

左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到效果其实也并不是太难,只是给人感觉像有点蛋疼的问题一样.但是你仔细看后你会觉得不是那么回事: 左边固定,右边自适应布局,这个第一点应该来说是非常的容易,实现的方法也是相当的多,那么就可以说第一条要求已不是什么要求了: 左右两列等高布局,这一点相对来说要复杂一些,不过你要是了解了怎么实现等高布局,那么

网页布局-左侧固定,右侧自适应

在网页布局中,以前只考虑了两列.三列的布局方式,但是没有过多的去考虑在两列.三列布局的情况下实现某些自适应的情况:今天遇到这个问题,在这里mark一下: 方法一:左侧元素浮动或者绝对定位的方式脱离文档流,让两个块级元素能够在同一行显示.然后margin-left的值设置为左侧元素的宽度:在这里利用了div的一个默认规则,div没有设置宽度的情况下会继承父元素的宽度:如果用p等其他标签达不到此效果: <!doctype html> <html> <head> <me

七种实现左侧固定,右侧自适应两栏布局的方法

总结一下左边固定,右边自适应的两栏布局的七种方法.其中有老生常谈的float方法,BFC方法,也有CSS3的flex布局与grid布局.并非所有的布局都会在开发中使用,但是其中也会涉及一些知识点.关于最终的效果,可以查看这里 常用的宽度自适应的方法通常是利用了block水平的元素宽度能随父容器调节的流动特性.另外一种思路是利用CSS中的calc()方法来动态设定宽度.还有一种思路是,利用CSS中的新型布局flex layout与grid layout. 首先创建基本的HTML布局和最基本的样式.

css经典布局——头尾固定高度中间高度自适应布局

今天说说一个经典布局:头尾固定高度中间高度自适应布局! 转文请标明 --- 出处:穆乙 http://www.cnblogs.com/pigtail/ 相信做过后台管理界面的同学,都非常清楚这个布局.最直观的方式是框架这个我不想多写费话,因为我们的重心不在这里.如果有不了解的同学可以百度.google.这里我不得不吐下槽!! 百度实在让我这个“粉丝”失望.就目前情况来说,百度已经完全轮为“有钱人排行榜”!再也不顾及用户的搜索需求了,因为主导地位实在是:不可撼动! 不相信的同学,可以亲身对比下B

CSS经典布局

版心和布局流程 阅读报纸时容易发现,虽然报纸中的内容很多,但是经过合理地排版,版面依然清晰.易读.同样,在制作网页时,要想使页面结构清晰.有条理,也需要对网页进行“排版”. “版心”(可视区) 是指网页中主体内容所在的区域.一般在浏览器窗口中水平居中显示,常见的宽度值为960px.980px.1000px.1200px等. 1 布局流程 为了提高网页制作的效率,布局时通常需要遵守一定的布局流程,具体如下: 1.确定页面的版心(可视区). 2.分析页面中的行模块,以及每个行模块中的列模块. 3.制

HTML + CSS 经典布局

HTML 代码: <div class="i-box clearfix"> <div class="layout-l clearfix"> <div class="i-left"> <p>左侧定宽</p> </div> <div class="i-right"> <p>右侧自适应</p> </div> <

左侧固定,右侧自适应布局

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>左边定宽,右边自适应</title> <style>

css页面布局之左侧定宽,右侧自适应

左侧定宽,右侧自适应是一种常见的布局方式,比如好多后台和外卖点餐页面.常用的几种方案如下:方案1,使用flex布局:在线效果http://jsrun.net/FeYKp <div class="main" style="width: 100%;height: 400px;"> <div class="left" style="width: 200px;height: 200px;background: red;&quo