How might I force a floating DIV to match the height of another floating DIV?

前端 未结 11 563
悲&欢浪女
悲&欢浪女 2020-12-02 04:59

My HTML code is just dividing the pages into two columns, 65%,35% respectively.

相关标签:
11条回答
  • 2020-12-02 05:40

    Flex does this by default.

    <div id="flex">
     <div id="response">
     </div> 
     <div id="note">
     </div>
    </div>   
    

    CSS:

    #flex{display:flex}
    #response{width:65%}
    #note{width:35%}
    

    https://jsfiddle.net/784pnojq/1/

    BONUS: multiple rows

    https://jsfiddle.net/784pnojq/2/

    0 讨论(0)
  • 2020-12-02 05:40

    You can always use a background image to do it too. I tend to vote for this option 100% of the time as the only other perfect solution is the Jquery option.

    As with using the outer div with a background color you'll end up having to have the content in both divs reaching the same height.

    0 讨论(0)
  • 2020-12-02 05:41

    If you are trying to force a floating div to match another to create a column effect, this is what I do. I like it because it's simple and clean.

    <div style="background-color: #CCC; width:300px; overflow:hidden; ">
        <!-- Padding-Bottom is equal to 100% of the container's size, Margin-bottom hides everything beyond
             the container equal to the container size. This allows the column to grow with the largest
             column. -->
        <div style="float: left;width: 100px; background:yellow; padding-bottom:100%; margin-bottom:-100%;">column a</div>
        <div style="float: left;width: 100px;  background:#09F;">column b<br />Line 2<br />Line 3<br />Line 4<br />Line 5</div>
        <div style="float:left; width:100px; background: yellow; padding-bottom:100%; margin-bottom:-100%;">Column C</div>
        <div style="clear: both;"></div>
    </div>
    

    I think this makes sense. It seems to work well even with dynamic content.

    0 讨论(0)
  • 2020-12-02 05:42

    You should wrap them in a div with no float.

    <div style="float:none;background:#FDD017;" class="clearfix">
        <div id="response" style="float:left; width:65%;">Response with two lines</div>
        <div id="note" style="float:left; width:35%;">single line note</div>
    </div>
    

    I also use the clearfix patch on here http://www.webtoolkit.info/css-clearfix.html

    0 讨论(0)
  • 2020-12-02 05:45

    Having had the same sort of problem as well, requiring three divs next to each other with different content, with right-borders to 'seperate' them, the only solution that worked was a slightly modified version of the jQuery option in another answer. Remember you also need the script found here.

    Below is my slightly modified version of the script, which just allows for a true min-height setting (as I needed my boxes to be at least a certain height).

    /*--------------------------------------------------------------------
     * JQuery Plugin: "EqualHeights"
     * by:    Scott Jehl, Todd Parker, Maggie Costello Wachs (http://www.filamentgroup.com)
     *
     * Copyright (c) 2008 Filament Group
     * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
     *
     * Description:   Compares the heights or widths of the top-level children of a provided element
                      and sets their min-height to the tallest height (or width to widest width). Sets in em units
                      by default if pxToEm() method is available.
     * Dependencies: jQuery library, pxToEm method    (article:
                      http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/)
     * Usage Example: $(element).equalHeights();
                      Optional: to set min-height in px, pass a true argument: $(element).equalHeights(true);
                      Optional: to specify an actual min-height (in px), pass an integer value, regardless of previous parameter: $(element).equalHeights(false,150);
     * Version: 2.0, 08.01.2008
    --------------------------------------------------------------------*/
    
    $.fn.equalHeights = function(px,minheightval) {
        $(this).each(function(){
            if (minheightval != undefined) { 
                var currentTallest = minheightval;    
            } 
            else { 
                var currentTallest = 0;
            }
            $(this).children().each(function(i){
                if ($(this).height() > currentTallest) { 
                    currentTallest = $(this).height();
                }
            });
            if (!px || !Number.prototype.pxToEm) 
                currentTallest = currentTallest.pxToEm(); //Use ems unless px is specified.
            // For Internet Explorer 6, set height since min-height isn't supported.
            if ($.browser.msie && $.browser.version == 6.0) { 
                $(this).children().css({'height': currentTallest});
            }
            $(this).children().css({'min-height': currentTallest});
        });
        return this;
    };
    

    It works like a charm and doesn't slow anything down :)

    0 讨论(0)
提交回复
热议问题