zoukankan      html  css  js  c++  java
  • CSS布局--左侧自适应母元素高度

    平常项目中经常会遇到有左侧导航菜单的高度不固定,需要与母元素或右侧元素等高的情况,以前就自以为是的使用js来设置,不仅不方便还会出现各种bug,后来就突然想到了一个好方法。有可能这方法已经被其他人用烂了,但还是在这里献丑分享出来,希望和大家一起探讨学习。

    先请看示例:

    • 菜单1
    • 菜单2
    • 菜单3
    • 菜单4
    • 菜单5
    • 菜单6
     
                
                    <div class="parent">
                        <div class="left">
                            <ul>
                                <li>菜单1</li>
                                <li>菜单2</li>
                                <li>菜单3</li>
                                <li>菜单4</li>
                                <li>菜单5</li>
                                <li>菜单6</li>
                            </ul>
                        </div>
                        <div class="right">
                            <textarea></textarea>
                        </div>
                    </div>
                
            

    这个示例看起来是一个简单的左右布局,但因为左侧有一个背景色,需要与母元素等高,所以有些不同。这里的textarea只是利用它resize来使容器高度发生变化,没有其他用途。

    以前可能会这样写,将母元素背景设置为淡灰色,子元素左右浮动,右侧元素背景为白色。但这样因为左右元素没有间距,在某些浏览器下缩放可能会换行。

    我这里的方法是将左侧元素left绝对定位(position:absolute),母元素parent相对定位(position:relative),并为母元素设置padding-left:left的宽度,然后让left高度height:100%,这样左侧元素left的高度就会跟着母元素变化。最好再为右侧元素或母元素设置一个min-height,因为左侧绝对定位不会撑开母元素。

    当然这方法也是有缺点的,如果左侧元素高度会发生很大变化,比如有可展开隐藏的二级菜单,就可能超出母元素显示。希望大家视情况选择合适方法,也希望能提出改进建议。

  • 相关阅读:
    关于CSS单位:rem vh vw vmin vmax
    关于遍历一个数组的几种方法的比较
    关于ng的过滤器的详细解释angular-filter
    angular的路由跳转,的监听$rootScope.$on
    js经典校验之注册与登录校验
    CSS制作的32种图形效果[梯形|三角|椭圆|平行四边形|菱形|四分之一圆|旗帜]
    js的with语句使用方法
    js的DOM节点操作:创建 ,插入,删除,复制,查找节点
    js中的如何定位固定层的位置
    CommonJS、requirejs、ES6的对比
  • 原文地址:https://www.cnblogs.com/0liaoyi/p/6378644.html
Copyright © 2011-2022 走看看