css 布局:两边固定中间自适应

解析四种常用方法以及原理:浮动、浮动内嵌 div、定位、flex。

浮动

<style type="text/css">
    .wrap {background: #eee; padding: 20px; }
    p {margin: 0; }
    .left {width: 200px; height: 200px; float: left; background: coral; }
    .right {width: 200px; height: 200px; float: right; background: lightblue; }
    .middle {margin: 0 200px; background: lightpink; }
</style>

<div class="wrap">
    <p class="left">我在左边</p>
    <p class="right">我在右边</p>
    <p class="middle">我排最后,但是跑到中间来了</p>
</div>

原理:

  • 浮动元素和非浮动元素不在同一个立体空间,如果不清浮动,位置在它下面的元素将往上浮。
  • 浮动元素高度为0,浮动盒子层级比 block 块级水平盒子高,比 inline/inline-block 水平盒子低。

浮动内嵌 div

<style type="text/css">
    .wrap {background: #eee; padding: 20px; }
    p {margin: 0; }
    .left {width: 200px; height: 200px; float: left; background: coral; margin-left: -100%;}
    .right {width: 200px; height: 200px; float: left; background: lightblue; margin-left: -200px;}
    .middle {width: 100%; height: 200px;float: left; background: lightpink; }
    span{
        display: inline-block;
        margin: 0 200px;
    }
</style>

<div class="wrap">
    <p class="middle">
        <span class="inner">
            我在中间
        </span>
    </p>
    <p class="left">我在左边</p>
    <p class="right">我在右边</p>
</div>

原理:

  • 三个元素都浮动,其中主题元素沾满一行 100% ,利用负 margin 把左右两边的元素放好。
  • 主题元素里面再套一个子元素,子元素 margin: 0 200px ,防止内容跑到左右两块浮动元素下面被遮盖。

定位

<style type="text/css">
    .wrap {background: #eee; position: relative;}
    p {margin: 0; }
    .left {width: 200px; height: 200px; background: coral; position: absolute;left: 0; top: 0;}
    .right {width: 200px; height: 200px; background: lightblue; position: absolute;right: 0; top: 0;}
    .middle {height: 200px; background: lightpink; margin: 0 200px;}
</style>

<div class="wrap">
    <p class="middle">我在中间,我用 margin 抵消左右两块定位元素占据空间</p>
    <p class="left">我在左边,我是定位元素</p>
    <p class="right">我在右边,我是定位元素</p>
</div>

原理:

  • 左右两个元素定位,可放任意位置。
  • 中间元素用 margin: 0 200px,防止内容跑到左右两块定位元素下面被遮盖。

flex

<style type="text/css">
    .wrap {background: #eee; display: flex}
    p {margin: 0; }
    .left {width: 200px; height: 200px; background: coral; }
    .right {width: 200px; height: 200px; background: lightblue; }
    .middle {height: 200px; background: lightpink; flex: 1;}
</style>

<div class="wrap">
    <p class="left">我在左边</p>
    <p class="middle">我在中间,flex: 1 自动占据剩余空间</p>
    <p class="right">我在右边</p>
</div>

原理:

  • flex 布局,子元素默认水平排列。
  • flex: 0 1 auto -> 默认,占据空间不跟随父级放大,跟随变小,自身本来宽度
  • flex: 1 1 auto -> auto,占据空间跟随父级放大,同时跟随变小,自身本来宽度
  • flex: 0 0 auto -> none,占据空间不跟随父级放大,同时也不跟随变小,自身本来宽度
  • flex: 1 1 1 -> auto,占据空间跟随父级放大,同时跟随变小,并且自动占满剩余空间

原文地址:https://www.cnblogs.com/qianduanwriter/p/11829411.html

时间: 2024-11-07 22:23:39

css 布局:两边固定中间自适应的相关文章

css布局两边固定中间自适应的四种方法

第一种:左右侧采用浮动 中间采用margin-left 和 margin-right 方法. 代码如下: <div style="width:100%; margin:0 auto;"> <div style="width:200px; float:right; background-color:#960">这是右侧的内容 固定宽度</div> <div style="width:150px; float:left

CSS自适应布局(左右固定 中间自适应或者右侧固定 左侧自适应)

经常在工作中或者在面试中会碰到这样的问题,比如我想要个布局 右侧固定宽度 左侧自适应 或者 三列布局 左右固定 中间自适应的问题. 下面我们分别来学习下,当然我也是总结下而已,有如以下网站源码方法: 一: 右侧固定宽度 左侧自适应  第一种方法:左侧用margin-right,右侧float:right  就可以实现.     HTML代码可以如下写:    <div class="box-left">        <a href="" targ

CSS 右侧固定宽度 左侧自适应 或者 三列布局 左右固定 中间自适应的问题

一: 右侧固定宽度 左侧自适应  第一种方法:左侧用margin-right,右侧float:right  就可以实现.     HTML代码可以如下写:    <div>        <a href="" target="_blank">我是龙恩</a>    </div> <div>        <a href="" target="_blank">

html 两边固定中间自适应效果

很多时候会用到自适应的效果,现在我分享一个两边固定中间自适应的效果, 利用的是浮动特性来完成的,下面是代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>宽度自适应布局</title> <style> .mid{ height:400px; background:#c00; margin:0 100px;} .left{ he

flex左右布局 左边固定 右侧自适应

flex左右布局 左边固定 右侧自适应 想要保证自适应内容不超出容器怎么办. 通过为自适应的一侧设置width: 0;或者overflow: hidden;解决. 首先实现标题的布局,也很简单: <div class="item"> <div class="l">LEFT</div> <div class="r"> <div class="title">OMG OMG

DIV+CSS实现两边固定宽度,中间自适应宽度

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>DIV+CSS实现两边固定宽度,中间自适应宽度</title> <style type="text/css"> .left, .right{ width: 100px; height: 100px; background-colo

前端经典布局(两边固定中间自适应)

一.介绍 下边将介绍前端很流行的布局方式,要求两边固定,中间自适应.比较流行的布局方式有圣杯布局,双翼布局,flex布局.绝对定位布局. 二.圣杯布局 圣杯布局,顾名思义,他具有以下特点: 1.三列布局,中间自适应,两边定宽: 2.中间栏要求在浏览器中优先展示: 接下来我们看实现方式: div我们这样写: <div class="container"> <div class="main">main</div> <div cl

纯CSS实现三列布局(两边固定,中间自适应)

看了一些网上的案例,感觉较繁杂,于是,自己整理了一篇来说明这个东西. 也是给我自己复习吧,以前有人问道,我还没答上来呢.== 看代码: html: 1 <div class="top">this is top</div> 2 <div class="container"> 3 <div class="left">this is left</div> 4 <div class=&qu

两边固定中间自适应的页面布局

如上图所示对页面进行布局 左右两部分是固定宽度的,中间黄色的区域可以随页面宽度的不同而调整,且与两边div有个间距. 方法一:浮动 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> body,div{ margin:0;padding:0; } .box1{ f