`
agevs
  • 浏览: 70771 次
  • 来自: 北京
博客专栏
924aba1e-229a-352e-b6d4-f15f3159a438
各种Web前端技巧经验分享...
浏览量:0
文章分类
社区版块
存档分类
最新评论

负边距(negative margin)实现自适应的div左右排版

阅读更多

 左右排版本来是可以这样实现的:两边都使用百分比,然后左右浮动。但是这样做满足不了下面这样的场景:

   在一个文章页面里面,分为左边的正文区域和右边的与文章关联的其他信息区域,我想让正文区域能随着用户的显示屏宽度变化而变化,这似乎百分比就能做到,但是如果使用百分比,左右两边都必须有一个固定的比值,那样右边也会随着用户显示屏的宽度变化,如果用户的显示屏很宽,那这右边就显得似乎国语宽了,正文无论多款是无所谓的,但是侧边最好是一个固定值。

   就像这种右图所示效果:    

   也就是说我需要一个左边自适应,而右边固定的左右布局,或者说某一边固定,另一边占据剩余部分,该如何做呢?

   我找到的最好的答案是使用负margin(配合浮动),下面概括一下原理:可以500%提高开发效率的前端UI框架!

   使用负margin可以使当前的div左边能容纳下面的div浮动上来,因此把右边的div摆在前面,左边的摆后面,右边的使用负margin就能让左边的浮上来,这样就遮住了右边的左半部分,只要右边再内部使用一个div,外左边距为左边的宽度就实现了左右的排版。


1、左边固定,右边自适应

   (1)右边使用margin-left值为200(刚好是左边的宽度)的宽度,那么左边就刚好能浮动上来。为什么说浮动上来呢,因为如果没有这个margin: 0 0 0 -200px;由于右边的宽度是100%,因此左边肯定是排在下面的。

   (2)左边虽然能浮动上来,但是右边和左边的内容是有重叠的

所以你还需要绿色部分的代码,右边再内部使用一个div,外左边距为左边的宽度


<div>
   <div style="float: right; margin: 0 0 0 -200pxwidth: 100%;">
       <div style="margin: 0 0 0 200px; background: #e4e4e4;">
           这是右边部分
       </div>

   </div>
   <div style="float: left; width: 200px; background: #669999">
           这是左边部分
   </div>
</div>

   这个产生的效果如下图:(图片区域宽度固定的,但是文字是占据这个div的剩余部分,这里右边没有紧贴边框是因为父div有较大padding的原因没能挤满,不要受误导)。可以500%提高开发效率的前端UI框架!

   提示:真正在实现的时候好像没必要左边必须写在后面,我试过,即使按从左到右书写也是可以的,但是很多大型网站都是反着写,我就按正规的来讲了。

 

 

2、右边固定,左边自适应

跟上一个最大的不同点就是,左右两个div容器的代码的前后位置换了,原因就是"float:rihgt"一定要在"float:left"前面。

<div>
<div style="float: right; width: 200px; background: #669999">
            这是右边部分
</div>
<div style="float: left; margin: 0 -200px 0 0; width: 100%;">
<div style="margin: 0 200px 0 0; background: #e4e4e4;">
                这是左边部分
</div>
</div>
</div>

 

 


3、左右各占一定百分比,这就简单了,把上面任意一种将200px改成比例值20%就实现了。

<div>
<div style="float: right; margin: 0 0 0 -20%; width: 100%;">
<div style="margin: 0 0 0 20%; background: #e4e4e4;">
                这是右边部分
</div>
</div>
<div style="float: left; width: 20%; background: #669999">
            这是左边部分
</div>
</div>

 

 


4、再加一栏,实现左中右三栏布局。这只要再加一栏,float为right的多空一些位置就行了。这里以按比例为例

<div>
<div style="float: right; margin: 0 0 0 -40%; width: 100%;">
<div style="margin: 0 0 0 40%; background: #e4e4e4;">
                这是右边部分
</div>
</div>
<div style="float: left; width: 20%; background: #669999">
            这是左边部分
</div>
<div style="float: left; width: 20%; background: #663333">
            这是中间部分
</div>
</div>

 

 


5、实现框架页的效果(左右可分别出现滚动条,页面无滚动条):只要左右div各加position: absolute; overflow: scroll; height: 100%;左边再加left: 200px;即实现了,这里用了绝对定位,因此float属性可以干掉了。 可以500%提高开发效率的前端UI框架!

<div>
<div style="margin: 0 0 0 -200px; width: 100%; position: absolute; overflow: scroll;
            height: 100%; left: 200px;">
<div style="margin: 0 0 0 200px; background: #e4e4e4;">
                这里是右边部分
</div>
</div>
<div style="width: 200px; background: #669999; position: absolute; overflow: scroll;
            height: 100%;">
            这是左边部分
</div>
</div>

 

 

0
0
分享到:
评论

相关推荐

    css+div自适应窗口宽度

    `.wrap_inner_l`和`.wrap_inner_m`进一步细化了内部的布局,同样利用浮动和负边距来实现内容的对齐。 总的来说,CSS+div自适应窗口宽度主要依靠`min-width`, `width`, `float`和百分比单位等属性来实现。通过合理的...

    html上下固定中间自适应div+css布局

    本文将详细探讨如何使用这些标签以及CSS来实现一个上下固定、中间自适应的布局。 首先,`&lt;header&gt;`标签用于定义页面的头部,通常包含网站的logo、导航链接等元素。例如: ```html 网站标题 &lt;li&gt;&lt;a href="#...

    IE6的双倍边距和火狐自适应高度

    3. **Hack技巧:** 使用特定于IE6的CSS Hack技巧来实现自适应高度。例如: ```css #demoDiv { height: auto !important; height: 300px; /* 用于其他浏览器 */ min-height: 300px; /* 现代浏览器 */ } /* 特定...

    div宽度自适应布局(右边自适应)

    在网页设计中,"div宽度自适应布局(右边自适应)"是一种常见的网页布局技术,它主要涉及CSS(层叠样式表)的运用,使网页内容能够根据不同的屏幕尺寸和设备进行适配,尤其是针对响应式设计。在这个布局模式下,通常...

    margin负边距的九宫格

    此demo运用margin负边距解决一些边框、间距问题

    关于自适应布局的处理(利用浮动和margin负边距实现)

    双飞翼布局是圣杯布局的变体,它们在布局结构上很相似,都是为了实现左右固定宽度、中间自适应宽度的三栏布局。不过在双飞翼布局中,中间内容区域的两侧会使用额外的div包裹层,这样做是为了防止内容部分被左右两边...

    js鼠标悬停提示,支持边距自适应

    在网页设计中,"js鼠标悬停提示,支持边距自适应" 是一种常见的交互功能,它能够增强用户的浏览体验,使用户更容易理解页面上的元素信息。这种功能通常通过JavaScript实现,结合HTML和CSS来创建动态的效果。接下来,...

    Java继承JPanel实现自适应布局的面板

    在`AutojustChildPanel`中,可能会使用`GridBagLayout`,这是一个复杂的布局管理器,允许更灵活的自适应布局,因为它考虑到了每个组件的权重、边距以及填充。 此外,源码注释可能包含如何在程序中实例化并使用`...

    js解决div内图片自适应大小

    本文将深入探讨如何利用纯JavaScript实现img图片在大小未知的div内自适应显示,并兼容不同浏览器,包括火狐、谷歌和IE6/7/8。 首先,我们来看一下基本的HTML结构,它包含一个div容器和一个img元素: ```html &lt;div ...

    三栏布局--左右宽度固定,中间自适应宽度

    1. **负边距**:`#id1` 和 `#id2` 使用负边距 `margin-left` 来实现位置的偏移,同时配合 `position: relative` 确保不会影响其他元素。 2. **包裹层**:`&lt;div class="warp"&gt;` 用于包含中间栏 `#id3`,保证其宽度...

    DIV排版

    总结,DIV排版是网页设计的核心技能之一,结合源码管理和开发工具,可以实现高效、灵活且易于维护的网页布局。通过不断学习和实践,开发者能够更好地应对各种网页设计挑战,创造出色用户体验的网站。

    CSS多种方法实现div两列等高

    CSS 多种方法实现 div 两列等高 CSS 实现 div 两列等高是一种常见的布局方法,前端工程师们经常会...这些方法包括背景模拟、负边距实现和使用 border 实现等高。这些方法可以帮助我们更好地实现 div 两列等高布局。

    div+css菜单导航布局自适应宽度

    本主题聚焦于"div+css菜单导航布局自适应宽度",这是一种确保导航栏在不同屏幕尺寸下都能良好展示的技术。这种技术在响应式网页设计中尤为重要,因为现代网站需要在手机、平板电脑和桌面电脑等不同设备上提供一致的...

    基于jQuery实现左右div自适应高度完全相同的代码

    总结来说,要实现左右div自适应高度,首先需要理解不同属性如 `clientHeight` 和 `offsetHeight` 的定义和作用。然后,通过合理的JavaScript代码,结合jQuery库,根据元素的当前高度来动态调整,确保两者的高度同步...

    左右两栏布局右侧自适应+左右拖动改变两栏宽度

    总结起来,这个例子展示了如何通过HTML、CSS和JavaScript实现一个具有自适应和拖动功能的左右两栏布局。它结合了基本的网页元素布局技巧和动态响应用户交互的JavaScript编程,对于想要学习网页布局和交互设计的...

Global site tag (gtag.js) - Google Analytics