How to flow text from DIV to DIV?

后端 未结 3 987
旧巷少年郎
旧巷少年郎 2021-01-05 07:21

I have two DIVs with absolute position on two sides of a HTML page such as (EXAMPLE)

相关标签:
3条回答
  • 2021-01-05 07:39

    so far (2012) It's not possible using CSS, CSS3 (with 2 separate elements)

    but using JS You can clone the content and use scrollTop on the right element :

    LIVE DEMO

    var d = document,
        $left  = d.getElementById('left'),
        $right = d.getElementById('right'),
        leftH  = $left.offsetHeight;
    
    $right.innerHTML = $left.innerHTML +'<p style="height:'+ leftH +'px;" />';
    $right.scrollTop = leftH;
    

    As you can see I'm appending also an empty paragraph, to fix the right element need to scrollTop some amount of px

    Note: add overflow:hidden; to your ID elements #left and #right

    0 讨论(0)
  • 2021-01-05 07:42

    Here is one for fixed-width approach. The gap between two columns will equal to width of main div.

    Fiddle

    <div class="container">
        <div class="sides">The big text here.<div>
        <div class="main"></div>
    </div>
    

    For variable width you need JS or jQuery.

    Update:

    I have used jQuery for this purpose as I have found pure JS difficult to find solution of this.

    function setGap() {
        var width = $(".main").width();
        $(".sides").css({
            "-moz-column-gap": width + "px",
                "-webkit-column-gap": width + "px",
                "column-gap": width + "px"
        });
    }
    $(window).resize(setGap);
    setGap();
    

    Fiddle

    Update 1:

    function setGap() {
        var width = document.getElementsByClassName("main")[0].offsetWidth;
        var elem = document.getElementsByClassName("sides")[0];
        var style = elem.getAttribute("style");
        if (typeof style != "null") {
            style =
                "-moz-column-gap:" + width + "px; -webkit-column-gap:" + width + "px; column-gap:" + width + "px";
            elem.setAttribute("style", style);
        }
        else {
            style +=
                "-moz-column-gap:" + width + "px; -webkit-column-gap:" + width + "px; column-gap:" + width + "px";
            elem.setAttribute("style", style);
        }
    }
    window.onresize = setGap;
    setGap();
    

    Fiddle

    0 讨论(0)
  • 2021-01-05 07:47

    CSS Regions (still a 'draft', but) is aiming to fix this problem:

    The CSS regions module allows content to flow across multiple areas called regions. The regions are not necessarily contiguous in the document order. The CSS regions module provides an advanced content flow mechanism, which can be combined with positioning schemes as defined by other CSS modules such as the Multi-Column Module [CSS3COL] or the Grid Layout Module [CSS3-GRID-LAYOUT] to position the regions where content flows.

    More info and tutorials at https://www.adobe.com/devnet/archive/html5/articles/css3-regions.html

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