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

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>左边定宽,右边自适应</title>
    <style>
        /* 基本样式 */

        .wrapper {
            padding: 15px 20px;
            border: 1px dashed #ff6c60;
        }

        .left {
            width: 120px;
            border: 5px solid #ddd;
        }

        .right {
            margin-left: 20px;
            border: 5px solid #ddd;
        }

        /******************** 左侧 float, 右侧 margin-left ***********************/

        .wrapper-float .left {
            float: left;
        }

        .wrapper-float .right {
            margin-left: 150px;
        }

        /******************** 左侧 float, 右侧 BFC ***********************/

        .wrapper-float-bfc .left {
            float: left;
        }

        .wrapper-float-bfc .right {
            overflow: hidden;
        }

        /******************** 左侧 绝对定位, 右侧 margin-left ***********************/

        .wrapper-absolute .left {
            position: absolute;
        }

        .wrapper-absolute .right {
            margin-left: 150px;
        }

        /******************** flex布局 ***********************/

        .wrapper-flex {
            display: flex;
        }

        .wrapper-flex .left {
            flex: none;
        }

        .wrapper-flex .right {
            flex: auto;
        }

        /******************** grid布局 ***********************/

        .wrapper-grid {
            display: grid;
            grid-template-columns: 120px 1fr;
        }

        /*********** 左右 inline-block, 然后右侧 calc 计算宽度 ******************/

        .wrapper-inline-block {
            font-size: 0;
        }

        .wrapper-inline-block .left,
        .wrapper-inline-block .right {
            display: inline-block;
            vertical-align: top;
            font-size: 14px;
            box-sizing: border-box;
        }

        .wrapper-inline-block .right {
            width: calc(100% - 140px);
        }

        /******************** 左右 float, 然后右侧 calc 计算宽度 ***********************/

        .wrapper-double-float .left,
        .wrapper-double-float .right {
            float: left;
            box-sizing: border-box;
        }

        .wrapper-double-float .right {
            width: calc(100% - 140px);
        }
    </style>
</head>

<body>
    <div style="padding: 20px 20px;">
        <span style="color: #ff6c60;">选择不同的方案查看效果:</span>
        <select id="select">
            <option value="0">双 inline-block 方案</option>
            <option value="1">双 float 方案</option>
            <option value="2">float + margin-left方案</option>
            <option value="3">float + BFC方案</option>
            <option value="4">absolute + margin-left方案</option>
            <option value="5">flex 方案</option>
            <option value="6">grid 方案</option>
        </select>
    </div>
    <div style="padding: 20px;">
        <span style="color: #ff6c60;">选择右侧不同的高度:</span>
        <select name="" id="changeHeight">
            <option value="1">右侧很低</option>
            <option value="0">右侧很高</option>

        </select>
    </div>
    <div class="wrapper wrapper-inline-block" id="wrapper">
        <div class="left">
            左边固定宽度,高度不固定,</br>
            </br>
            </br>
            </br>
            高度有可能会很小,也可能很大。
        </div>
        <div class="right">
            这里的内容可能比左侧高,也可能比左侧低。宽度需要自适应。</br>
            基本的样式是,两个div相距20px, 左侧div宽 120px
        </div>
    </div>
    <script>
        var wrapper = document.querySelector(‘#wrapper‘)
        document.querySelector(‘#select‘).addEventListener(‘change‘, function (event) {
            var value = event.target.value
            switch (+value) {
                case 0: wrapper.className = ‘wrapper wrapper-inline-block‘;
                    break;
                case 1: wrapper.className = ‘wrapper wrapper-double-float‘;
                    break;
                case 2: wrapper.className = ‘wrapper wrapper-float‘;
                    break;
                case 3: wrapper.className = ‘wrapper wrapper-float-bfc ‘;
                    break;
                case 4: wrapper.className = ‘wrapper wrapper-absolute‘;
                    break;
                case 5: wrapper.className = ‘wrapper wrapper-flex‘;
                    break;
                case 6: wrapper.className = ‘wrapper wrapper-grid‘;
                    break;
            }
        })
        var rightDiv = document.querySelector(‘.right‘)
        document.querySelector(‘#changeHeight‘).addEventListener(‘change‘, function (event) {
            var value = event.target.value
            switch (+value) {
                case 0: rightDiv.style.height = "700px";
                    break;
                case 1: rightDiv.style.height = "auto";
                    break;
            }
        })
    </script>
</body>

</html>

  

原文:https://zhuqingguang.github.io/2017/08/16/adapting-two-layout/

原文地址:https://www.cnblogs.com/shen076/p/12643818.html

时间: 2024-09-28 17:50:16

左侧固定,右侧自适应布局的相关文章

左侧固定 右侧自适应 布局

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type="text/css"> * {margin:0; padding:0; list-style:none; }

实现左侧固定右侧自适应的两列布局显示效果

实现该方法有很多种,我来介绍一下几种比较常见的实现效果: 第一种方案(利用固定定位的方式显示效果): <style> *{ padding:0; margin:0; } .left-menu, .content{ position:fixed; top:0; left:200px; width:100%; height:100%; background:red; color:#fff; } .left-menu{ width:200px; left:0; background:green; }

css中左侧固定,右侧自适应

谈谈我开始出来工作时候的一道面试题吧 当初我记得在太平洋网络面试的时候,面试官给我出了这么一道题: 有一个外层的div 中间有左右两个div 要求左侧的div 1.只告诉你宽度;       2.只告诉你高度;       3.宽度和高度告诉你;(我总结了可能的3种方式) HTML: <div class="container"> <div class="left">左侧固定宽度200px</div> <div class=

CSS左侧固定右侧自适应

方法一: float + margin.left{ float: left; width: 100px; }.right {margin-left:100px; } /*清除浮动*/ .container1:after{ content: ""; height: 0; line-height: 0; display: block; visibility: hidden; clear: both; } 方法二: 父容器设置 display:flex:Right部分设置 flex:1  b

css之两栏布局左侧固定右侧高度自适应

css两栏布局之左侧固定右侧高度自适应 先看这样的html+css结构: .main { width: 900px; overflow:hidden; margin: 0 auto; border:1px solid #000; } .left { width: 600px; float:left; background: #ccb; } .right { float:left; width: 300px; background: #acf; } <div class="main"

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

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

两列右侧自适应布局

<div class="g-bd1 f-cb"> <div class="g-sd1"> <p>左侧定宽</p> </div> <div class="g-mn1"> <div class="g-mn1c"> <p>右侧自适应</p> </div> </div> </div> /* 两

上面固定下边自适应布局

<!DOCTYPE HTML><html><head><meta charset="gb2312"><title>头尾固定中间高度自适应布局</title><style>html, body { height:100%; margin:0; padding:0}#dHead { height:100px; line-height:100px; background:#690; width:100%; p

左侧固定宽度 右侧自适应

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-