• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Absatz zusammenhalten

Ich verstehe das Problem von manya folgendermaßen:

Neben einem Bild steht ein Text, der bei breitem Browserfenster nicht über den unteren Bildrand herausragt:

manya01.jpg
Wenn das Browserfenster schmaler wird und der 3. Absatz nur teilweise über den unteren Bildrand hinausragt soll der überstehende Teil weder unter das Bild rutschen:

manya02.jpg

noch in der gleichen "Spalte" unterhalb des unteren Bildrandes weitergehen:

manya03.jpg

sondern komplett unterhalb des unteren Bildrandes weitergehen:

manya04.jpg

Das gleiche gilt entsprechend für den 2. Absatz, falls das Browserfenster noch schmaler ist.

Die letzte Info von manya ist, das er das Problem mit display: table-cell gelöst hat.
 
Hallo zusammen,

Mr Murphy, du hast mein Problem 100%ig exakt dargestellt !
Absolut super, jetzt ist es jedem klar!
Bilder sagen eben doch mehr als 1000 Worte!

Also "gelöst" ist das Problem jetzt nicht gerade. Es sieht nur jetzt etwas weniger schlimm aus.
Und ich habe mich damit abgefunden, dass es nicht geht.

Übrigens:
>>> Die letzte Info von manya ist, das er das Problem mit display: table-cell gelöst hat.

Ich bin eine Frau, und zwar eine richtige. :cool:
Nicht so eine, wie beim Boxen bei Olympia. :cool:

liebe Grüße an alle!
 
Und ich habe mich damit abgefunden, dass es nicht geht.
Die Aussage "Geht nicht gibt's nicht" kann problematisch sein aber in diesem Fall trifft sie zu.
Wenn alle Stricke reißen und man eine Aufgabe mit CSS nicht lösen kann, kann man die Dinge mit Javascript regeln:
Code:
<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Test</title>
    <style>
        div.float-alt {
            display: grid;
            grid-template-columns: 1fr 1fr;
        }

        div.float-alt>img {
            width: 100%;
            height: auto;
            min-width: 1px;
            grid-row: 1/999;
        }

        p {
            grid-column: 2/3;
            visibility: visible;
        }

        p.hide-it {
            visibility: hidden;
        }

        p.put-it-down {
            grid-column: 1/3;
        }
    </style>
</head>

<body>
    <h2>eine Überschrift </h2>
    <div class="float-alt">
        <img src="images/dia0.jpg">
        <p>Absatz-1: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut
            labore
            et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
        </p>

        <p>Absatz-2: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
        </p>

        <p>Absatz-3: Lorem ipsum dolor sit amet, consetetur
            sadipscing
            elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
            vero
            eos et accusam et justo duo dolores et ea rebum. <strong>Lorem ipsum dolor</strong> sit amet, consetetur
            sadipscing
            elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.At
            vero
            eos
            et accusam et justo duo dolores et ea rebum.
        </p>
        <p>Absatz-4: Lorem ipsum dolor sit amet, consetetur
            sadipscing
            elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
            vero
            eos et accusam et justo duo dolores et ea rebum. <strong>Lorem ipsum dolor</strong> sit amet, consetetur
            sadipscing
            elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.At
            vero
            eos
            et accusam et justo duo dolores et ea rebum.
        </p>
    </div>
    <script>
        let timer;
        function layoutIt() {
            // Wir zählen die Anzahl von Spalten, die das Bild
            // überspannen muss:
            let spanImg = 1;
            const pars = document.querySelectorAll('.float-alt>p');
            // Über alle Absätze:
            pars.forEach(p => {
                // Am Anfang müssen alle Absätze rechts liegen:
                p.classList.add('hide-it');
                p.classList.remove('put-it-down');
            });
            document.querySelector('.float-alt>img').style.gridRow = `1/999`;
            setTimeout(() => {
                pars.forEach(p => {
                    const
                        boxImg = document.querySelector('.float-alt>img').getBoundingClientRect(),
                        boxP = p.getBoundingClientRect();
                    // Liegt die untere Kante des Absatzes tiefer als die des Bildes?
                    if (boxP.bottom > boxImg.bottom) {
                        // Etwas von dem Absatz ist nach links geflossen,
                        // wir verschieben ihn nach unten:
                        p.classList.add('put-it-down');
                    } else {
                        // Das Bild muss diese Zeile überspannen:
                        spanImg++;
                    }
                    p.classList.remove('hide-it');
                });
                // Endgültig fest legen, welche Zeilen das Bild überspannen muss:
                document.querySelector('.float-alt>img').style.gridRow = `1/${spanImg}`;
            });
        }
        layoutIt();
        timer = setTimeout(layoutIt, 100);
        window.addEventListener('resize', event => {
            clearTimeout(timer);
            timer = setTimeout(layoutIt, 100);
        });
    </script>
</body>


</html>
Allerdings, was mich betrifft, finde ich das Verhalten, das der Text auch innerhalb eines Absatzes das Bild unten umfließt, gar nicht schlecht. Die Lösung mit den zusammen hängenden Absätzen hat den Nachteil, dass rechts eine mehr oder weniger große vertikale Lücke entsteht, was auch nicht unbedingt schön ist.
 
Wow! Das ist es !
Danke, danke, danke Sempervivum für deine viele Arbeit! :smile:

Ich werde wahrscheinlich Jahre brauchen, um Javascript so zu lernen, deswegen stecke ich mir erstmal ein überschaubares Ziel: CSS-3.

liebe Grüße

manya


PS: wie kann man denn diesen Thread als "gelöst" markieren?
 
Zurück
Oben