Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS Safari 13.5 flickering on fixed element with long content

Hi there and thanks in advance for your time.

I've created a reproducible error in safari that I've heard is very common, and I've tried the hacks for Safari to fix it but sadly no luck.

The problem is simple:

I have a floating card with an initial position to fixed at the bottom of the content, that has the click event listener and all it does is to toggle the position of the card with a transition.

On the other side, I have the container which wraps the card in a position fixed element that modifies when the position of the card is transitioned and becomes static.

I'm putting the article to fixed so the card can use the main scroll of the page and not have another scrolling context.

Here is the link for the preview on mobile: https://qiisu.csb.app/

Here is the code sandbox with the code: https://codesandbox.io/s/quirky-surf-qiisu?file=/index.html

Also the Snippet if you would like to see it here:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, user-scalable=no" />
        <style>
            * {
                box-sizing: border-box;
            }

            body {
                margin: 0;
            }

            #content {
                width: 100%;
                display: block;
                background-color: rgb(255, 255, 255);
                border-radius: 15px 15px 0px 0px;
                transform: none;
                padding: 15px;
                margin-top: -18px;
            }

            .media {
                height: 230px;
                background-image: url(https://icdn2.digitaltrends.com/image/digitaltrends/kostenlose_programme_bildbearbeitung_1.jpg);
                background-size: 100%;
                background-position: top center;
                background-repeat: no-repeat;
            }

            .common-text {
                tab-size: 4;
                font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
                    Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans",
                    "Helvetica Neue", sans-serif, serif;
                -webkit-text-fill-color: rgb(35, 35, 35);
                font-size: 18px;
                letter-spacing: 0px;
                line-height: 1.25;
            }
        </style>
    </head>

    <body>
        <article id="prev-content">
            <div class="media"></div>
            <section id="content">
                <div>
                    <span
                        style="
                            font-family: 'system-ui', '-apple-system',
                                'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen',
                                'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',
                                'Helvetica Neue', 'sans-serif', 'System Default', serif;
                            -webkit-text-fill-color: var(
                                    --token-710882bd-9491-4cf6-bdf9-261847fdf8c6,
                                    rgb(0, 255, 255)
                                );
                            font-size: 15px;
                            line-height: 1.2;
                            font-weight: 600;
                        "
                        >TECNOLOGÍA Y TENDENCIAS</span
                    >
                </div>
                <div>
                    <span
                        style="
                            font-family: 'Roboto Condensed', sans-serif;
                            -webkit-text-fill-color: hsl(0, 0%, 0%);
                            font-size: 26px;
                            line-height: 1.15;
                            font-weight: 700;
                            font-style: normal;
                        "
                        >Las ciberamenazas escalan entre las inquietudes de los CEO
                        españoles</span
                    >
                </div>
                <div>
                    <span
                        style="
                            font-family: 'system-ui', '-apple-system',
                                'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen',
                                'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',
                                'Helvetica Neue', 'sans-serif', 'System Default', serif;
                            -webkit-text-fill-color: hsl(0, 0%, 78%);
                            font-size: 14px;
                            line-height: 1.2;
                            font-weight: 500;
                        "
                        >Por Jean Francoise</span
                    >
                </div>
                <div
                    style="
                    width: 100%;
                    margin: 3px 0;
                "
                >
                    <svg
                        width="100%"
                        height="100%"
                        xmlns="http://www.w3.org/2000/svg"
                        style="width: 100%;  height: 3px;"
                    >
                        <path
                            d="M 0 0 L 300 0 L 300 3 L 0 3 Z"
                            fill="rgb(0, 255, 255)"
                            name="Rectangle"
                        />
                    </svg>
                </div>
                <div>
                    <span
                        style="
                            font-family: 'system-ui', '-apple-system',
                                'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen',
                                'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',
                                'Helvetica Neue', 'sans-serif', serif;
                            -webkit-text-fill-color: #555555;
                            font-size: 18px;
                            line-height: 1.2;
                        "
                        >La encuesta anual que elabora la firma de consultoría PWC señala
                        que el 61% de los consejeros españoles ve en el cibercrimen una
                        amenaza para su empresa</span
                    >
                </div>
                <div
                    style="
                    width: 100%;
                    margin: 3px 0;
                "
                >
                    <svg
                        width="100%"
                        height="100%"
                        xmlns="http://www.w3.org/2000/svg"
                        style="width: 100%;  height: 3px;"
                    >
                        <path
                            d="M 0 0 L 300 0 L 300 3 L 0 3 Z"
                            fill="rgb(0, 255, 255)"
                            name="Rectangle"
                        />
                    </svg>
                </div>
                <div>
                    <span
                        style="
                            font-family: system-ui, -apple-system,
                                BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
                                Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans',
                                'Helvetica Neue', sans-serif, serif;
                            -webkit-text-fill-color: rgb(0, 0, 0);
                            font-size: 18px;
                            line-height: 1.25;
                        "
                        ><span
                            >La compañía norteamericana realiza desde hace más de 20 años un
                            análisis con las inquietudes de los empresarios de 42 territorios
                            distintos y permite establecer una comparativa seleccionando algún
                            país en concreto.</span
                        ></span
                    >
                </div>
                <div>
                    <br />
                    <span
                        style="
                            font-family: system-ui, -apple-system,
                                BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
                                Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans',
                                'Helvetica Neue', sans-serif, serif;
                            -webkit-text-fill-color: rgb(0, 0, 0);
                            font-size: 18px;
                            line-height: 1.25;
                        "
                    >
                        En este sentido, las ciberamenazas han escalado posiciones en el
                        ránking de las preocupaciones para los consejeros delegados de
                        España. Los delitos cibernéticos ya son su segunda inquietud, por
                        delante incluso de la incertidumbre política y la velocidad con la
                        que se producen los cambios tecnológicos que cada vez más empresas
                        implementan.</span
                    >
                </div>
                <div
                    style="
                        height: 263px;
                        background-image: url('https://icdn2.digitaltrends.com/image/digitaltrends/kostenlose_programme_bildbearbeitung_1.jpg');
                        background-size: cover;
                        background-repeat: no-repeat;
                        background-position: center center;
                "
                ></div>
                <div>
                    <br />
                    <span class="common-text">
                        En este sentido, las ciberamenazas han escalado posiciones en el
                        ránking de las preocupaciones para los consejeros delegados de
                        España. Los delitos cibernéticos ya son su segunda inquietud, por
                        delante incluso de la incertidumbre política y la velocidad con la
                        que se producen los cambios tecnológicos que cada vez más empresas
                        implementan.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        A nivel global, los ciberdelitos no alcanzan ni comparte el primer
                        puesto la sobrerregulación, con un 36% de los encuestados situándo a
                        este indicador por delante de otros como los conflictos comerciales
                        (35% de los directivos) o la incertidumbre sobre el crecimiento
                        económico mundial (34%).
                    </span>
                </div>
                <div>
                    <span
                        style="
                            font-family: 'Roboto Condensed', sans-serif;
                            -webkit-text-fill-color: hsl(0, 0%, 0%);
                            font-size: 22px;
                            line-height: 1.2;
                            font-weight: 700;
                            font-style: normal;
                        "
                    >
                        El temor al cambio climático pasa del 3% al 20% en un año
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        En este sentido, las ciberamenazas han escalado posiciones en el
                        ránking de las preocupaciones para los consejeros delegados de
                        España. Los delitos cibernéticos ya son su segunda inquietud, por
                        delante incluso de la incertidumbre política y la velocidad con la
                        que se producen los cambios tecnológicos que cada vez más empresas
                        implementan.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        A nivel global, los ciberdelitos no alcanzan ni comparte el primer
                        puesto la sobrerregulación, con un 36% de los encuestados situándo a
                        este indicador por delante de otros como los conflictos comerciales
                        (35% de los directivos) o la incertidumbre sobre el crecimiento
                        económico mundial (34%).
                    </span>
                </div>
                <div
                    style="
                    height: 138px;
                    background-image: url('https://icdn2.digitaltrends.com/image/digitaltrends/kostenlose_programme_bildbearbeitung_1.jpg');
                    background-size: cover;
                    background-repeat: no-repeat;
                    background-position: center center;
                    image-rendering: pixelated;
                "
                ></div>
                <div
                    style="
                    height: 230px;
                    background-image: url('https://icdn2.digitaltrends.com/image/digitaltrends/kostenlose_programme_bildbearbeitung_1.jpg');
                    background-size: cover;
                    background-repeat: no-repeat;
                    background-position: center center;
                    image-rendering: auto;
                "
                ></div>
                <div>
                    <span class="common-text">
                        En este sentido, las ciberamenazas han escalado posiciones en el
                        ránking de las preocupaciones para los consejeros delegados de
                        España. Los delitos cibernéticos ya son su segunda inquietud, por
                        delante incluso de la incertidumbre política y la velocidad con la
                        que se producen los cambios tecnológicos que cada vez más empresas
                        implementan.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        A nivel global, los ciberdelitos no alcanzan ni comparte el primer
                        puesto la sobrerregulación, con un 36% de los encuestados situándo a
                        este indicador por delante de otros como los conflictos comerciales
                        (35% de los directivos) o la incertidumbre sobre el crecimiento
                        económico mundial (34%).
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        De esta manera, en consejo de los expertos consultados, hay que
                        empezar por material para los estiramientos: en este caso
                        colchonetas o esterillas. Se debe empezar por una sesión de carrera
                        suave, para ello es clave la cinta de correr. O la incertidumbre
                        sobre el crecimiento económico mundial (34%) con la que se producen
                        los cambios tecnológicos.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        De esta manera, en consejo de los expertos consultados, hay que
                        empezar por material para los estiramientos: en este caso
                        colchonetas o esterillas. Se debe empezar por una sesión de carrera
                        suave, para ello es clave la cinta de correr. O la incertidumbre
                        sobre el crecimiento económico mundial (34%) con la que se producen
                        los cambios tecnológicos.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="mrf-lazyDetails--extras" class="common-text">
                        De esta manera, en consejo de los expertos consultados, hay que
                        empezar por material para los estiramientos: en este caso
                        colchonetas o esterillas. Se debe empezar por una sesión de carrera
                        suave, para ello es clave la cinta de correr. O la incertidumbre
                        sobre el crecimiento económico mundial (34%) con la que se producen
                        los cambios tecnológicos.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        De esta manera, en consejo de los expertos consultados, hay que
                        empezar por material para los estiramientos: en este caso
                        colchonetas o esterillas. Se debe empezar por una sesión de carrera
                        suave, para ello es clave la cinta de correr. O la incertidumbre
                        sobre el crecimiento económico mundial (34%) con la que se producen
                        los cambios tecnológicos.
                    </span>
                </div>
                <div>
                    <br />
                    <span class="common-text">
                        De esta manera, en consejo de los expertos consultados, hay que
                        empezar por material para los estiramientos: en este caso
                        colchonetas o esterillas. Se debe empezar por una sesión de carrera
                        suave, para ello es clave la cinta de correr. O la incertidumbre
                        sobre el crecimiento económico mundial (34%) con la que se producen
                        los cambios tecnológicos.
                    </span>
                </div>
            </section>
        </article>
        <style>
            .container {
                position: fixed;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                -webkit-transform: translate3d(0, 0, 0);
                -ms-transform: translate3d(0, 0, 0);
                transform: translate3d(0, 0, 0);
                -webkit-backface-visibility: hidden;
                backface-visibility: hidden;
                z-index: 10;
            }

            .card {
                will-change: transform;
                transform: translate3d(0px, 380px, 0px);
                opacity: 1;
                transition: transform 350ms cubic-bezier(0, 0.35, 0.4, 1) 0s;
                width: 100%;
                min-height: 100vh;
                background: white;
                overflow: hidden;
                border-radius: 15px 15px 0 0;
                box-shadow: rgba(0, 0, 0, 0.3) 0px -2px 10px 3px;
            }
        </style>
        <div class="container">
            <div class="card">
                <article>
                    <div>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquid
                            et molestias placeat culpa? Fugiat ut magnam nemo a nihil.
                            Recusandae nesciunt aspernatur quos. Odit aperiam fugit ducimus
                            consequuntur. Adipisci, animi!
                        </p>
                    </div>
                </article>
            </div>
        </div>
        <script>
            const card = document.querySelector('.card');
            const container = document.querySelector('.container');
            const prevContent = document.querySelector('#prev-content');
            const positionTop = 'translate3d(0px, 30px, 0px)';
            const positionBottom = 'translate3d(0px, 380px, 0px)';
            let currentPrevContentPosition;

            card.addEventListener('transitionend', (e) => {
                console.log('e.propertyName', window.scrollY);

                if (card.style.transform === positionTop) {
                    container.style.position = 'relative';
                    currentPrevContentPosition = window.scrollY;
                    prevContent.style.transform = 'translate3d(0px, -' + currentPrevContentPosition + 'px, 0px)';
                    prevContent.style.position = 'fixed';
                    window.scrollTo(0, 0);
                } else {
                    container.style.position = 'fixed';
                    prevContent.style.transform = '';
                    prevContent.style.position = '';
                    window.scrollTo(0, currentPrevContentPosition);
                }
            });

            card.addEventListener('click', function () {
                if (card.style.transform === positionTop) {
                    card.style.transform = positionBottom;
                } else {
                    card.style.transform = positionTop;
                }
            });
        </script>
    </body>
</html>

Very simple Code, but I can't get it work without it flickering. Whe you toggle the position you will be able to see that the card flikers. I've tried the backface-visibility: hidden; along with transform: translate3d(0, 0, 0); but it doesn't work (you can see it in the code), but this is happening when the content inside the card is long if you reduce the lorem ipsum to 10 for example the flicker doesn't happen.

like image 686
Jose Paredes Avatar asked Jul 07 '20 16:07

Jose Paredes


1 Answers

As we know Position fixed not working well with Safari.

And when you try all togather - safari will give you really hard time.

Position:Fixed === to parent
transform: translate3d(0px, 380px, 0px);
transition: transform 350ms cubic-bezier(0, 0.35, 0.4, 1) 0s; 

To remove the flicker you have to remove transform animation for safari only. so for that i have added specific css for safari.

@media screen and (-webkit-min-device-pixel-ratio: 0) {
    .card {
        transition: none !important;
    }
}

For all other browser your animation will work as needed but for safari it want slide but behavior will work as you needed.

Check this snadbox

like image 96
Sumit Patel Avatar answered Oct 30 '22 14:10

Sumit Patel