bootstrap 右自适应 左_css能不能实现左边div固定宽度,右边div自适应撑满剩下的宽度?...

一共5种: [1]float [2]inline-block [3]table [4]absolute [5]flex

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

思路一: float

说起两列布局,最常见的就是使用float来实现。float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动。如果各浮动元素的高度不同时,可能会出犬牙交错的效果

【1】float + margin

将定宽的一列使用float,而自适应的一列使用计算后的margin

p{margin: 0;}

.parent{overflow: hidden;zoom: 1;}

.left{float: left;width: 100px;}

.right{margin-left: 120px;}

left

right

right

[缺点1]IE6-浏览器下3像素bug,具体表现在右侧首行文字会向右偏移3px。解决办法是在left元素上设置margin-right: -100px

[缺点2]当右侧容器中有元素清除浮动时,会使该元素不与左侧浮动元素同行,从而出现文字下沉现象

【2】float + margin + (fix)

(fix)代表增加结构,为了解决上述方法中的两个缺点,可以通过增加结构来实现。自适应的一列外侧增加一层结构.rightWrap并设置浮动。要实现自适应效果,.rightWrap宽度必须设置为100%。若不设置,float后的元素宽度将由内容撑开。同时再配合盒模型属性的计算,设置计算后的负margin值,使两列元素在同一行显示。同时两列之间的间距由.right的margin值确定。由于右侧元素会层叠在左侧元素之上,.left需要使用relative来提升层级

p{margin: 0;}

.parent{overflow: hidden;zoom: 1;}

.left{position: relative;float: left;width: 100px;}

.rightWrap{float: left;width: 100%;margin-left: -100px;}

.right{margin-left: 120px;}

left

right

right

【3】float + margin + calc

除了增加结构的方法外,还可以使用calc()

[注意]IE8-、android4.3-、IOS5.1-不支持,android4.4+只支持加减运算

p{margin: 0;}

.parent{overflow: hidden;zoom: 1;}

.left{float: left;width: 100px;margin-right: 20px;}

.right{float: left;width: calc(100% - 120px);}

left

right

right

【4】float + overflow

还可以使用overflow属性来触发bfc,来阻止浮动造成的文字环绕效果。由于使用overflow不会改变元素的宽度属性,所以不需要重新设置宽度。由于设置overflow:hidden并不会触发IE6-浏览器的haslayout属性,所以需要设置zoom:1来兼容IE6-浏览器

p{margin: 0;}

.parent{overflow: hidden;zoom: 1;}

.left{ float: left;width: 100px;margin-right: 20px;}

.right{overflow: hidden;zoom: 1;}

left

right

right

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

思路2: inline-block

inline-block内联块布局的主要缺点是需要设置垂直对齐方式vertical-align,则需要处理换行符解析成空格的间隙问题。IE7-浏览器不支持给块级元素设置inline-block属性,兼容代码是display:inline;zoom:1;

【1】inline-block + margin + calc

一般来说,要解决inline-block元素之间的间隙问题,要在父级设置font-size为0,然后在子元素中将font-size设置为默认大小

[注意]IE8-、android4.3-、IOS5.1-不支持,android4.4+只支持加减运算

p{margin: 0;}

.parent{font-size: 0;}

.left{display:inline-block;vertical-align:top;width:100px;margin-right:20px;font-size:16px;}

.right{display:inline-block;vertical-align:top;width:calc(100% - 120px);font-size:16px;}

left

right

right

【2】inline-block + margin + (fix)

p{margin: 0;}

.parent{font-size: 0;}

.left{position:relative;display:inline-block;vertical-align:top;width:100px;font-size:16px;}

.rightWrap{display:inline-block;vertical-align:top;width:100%;margin-left: -100px;font-size:16px;}

.right{margin-left: 120px;}

left

right

right

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

思路3: table

使用table布局的缺点是元素被设置为table后,内容撑开宽度,所以需要设置width:100%。若要兼容IE7-浏览器,需要改为

p{margin: 0;}

.parent{display:table;width: 100%;table-layout: fixed;}

.left,.rightWrap{display:table-cell;}

.left{width: 100px;}

.right{margin-left: 20px;}

left

right

right

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

思路4: absolute

absolute布局的缺点是由于父元素需要设置为relative,且子元素设置为absolute,所以父元素的高度并不是由子元素撑开的,需要单独设置。

[注意]IE6-不支持相对的偏移属性同时设置

p{margin: 0;}

.parent{position: relative;width:100%;height:40px;}

.left{position: absolute;left:0;width:100px;}

.right{position: absolute;left:120px;right:0;}

left

right

right

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

思路5: flex

flex弹性盒模型是非常强大的布局方式。但由于其性能消耗较大,适合于局部小范围的布局

[注意]IE9-不支持

p{margin: 0;}

.parent{display: flex;}

.left{width:100px;margin-right: 20px;}

.right{flex:1;}

left

right

right

两列布局中单列定宽单列自适应布局的5种思路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现自适应导航栏,可以使用Bootstrap框架提供的组件和CSS类。以下是一个简单的示例代码,可以根据屏幕尺寸自动调整导航栏的样式和布局: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap Navigation Bar</title> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script> </head> <body> <nav class="navbar navbar-expand-md navbar-light bg-light"> <a class="navbar-brand" href="#">Brand</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">About</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Contact</a> </li> </ul> </div> </nav> </body> </html> ``` 在以上示例代码中,我们使用了`navbar-expand-md`类来指定导航栏的响应式行为,即在屏幕尺寸大于等于中等屏幕(md)时,导航栏将展开。另外,我们也使用了`navbar-light`和`bg-light`类来指定导航栏的颜色和背景。通过以上方法,可以实现一个简单的自适应导航栏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值