【问题标题】:Strange behavior for Google Chrome height animationGoogle Chrome 高度动画的奇怪行为
【发布时间】:2013-03-13 09:38:27
【问题描述】:

我正在尝试使用 CSS 在我的网站上为“div”的高度设置动画。

它在 FF 和 Safari 上完美运行,但在 Chrome 上它有一个奇怪的行为。

我有 4 个 'div',单击它们时它们会拉伸以显示整个包含的文本,然后再次单击它们时它们会收缩并隐藏。在 Chrome 上,一旦我单击其中一个,它们就会全部展开到全高,然后,当动画结束时,返回到它们最初应该处于的高度。

您可以在以下位置看到:http://www.wefind-tech.com/WhatIsIt_ChromeV.html

有解决办法吗?

谢谢

埃雷兹

CSS 是:

.WeFind_Div_PunchLine::first-letter{
        font-weight: bold;
        font-size: 20px;
    }

    .WeFind_Div_PunchLine{
        width: 95%;
        line-height: 40px;
        margin-top: 20px;
        margin-bottom: 20px;
        padding-left: 10px;

        border: 1px solid #CCCCCC;
        border-radius:10px;
        -webkit-border-radius: 10px;
        -moz-border-radius: 10px;
        -o-border-radius: 10px;

        box-shadow: 10px 10px 5px #CCCCCC;
        -webkit-box-shadow: 10px 10px 5px #CCCCCC;
        -moz-box-shadow: 10px 10px 5px #CCCCCC;
        -o-box-shadow: 10px 10px 5px #CCCCCC;
    }

    .WeFind_Div_Contructed{
        height: 0px;
        overflow: hidden;
    }

    /*VERTICAL EXPAND element animation*/
    @keyframes WeFimd_Anim_Expand{
        from {height: 0px;}
        to {height: 150px;}
    }

    @-moz-keyframes WeFimd_Anim_Expand /* Firefox */{
        from {height: 0px;}
        to {height: 150px;}
    }

    @-webkit-keyframes WeFimd_Anim_Expand /* Safari and Chrome */{
        from {height: 0px;}
        to {height: 150px;}
    }

    @-o-keyframes WeFimd_Anim_Expand /* Opera */{
        from {height: 0px;}
        to {height: 150px;}
    } 

    /*VERTICAL CONTRUCT element animation*/
    @keyframes WeFimd_Anim_Contruct{
        from {height: 150px;}
        to {height: 0px;}
    }

    @-moz-keyframes WeFimd_Anim_Contruct /* Firefox */{
        from {height: 150px;}
        to {height: 0px;}
    }

    @-webkit-keyframes WeFimd_Anim_Contruct /* Safari and Chrome */{
        from {height: 150px;}
        to {height: 0px;}
    }

    @-o-keyframes WeFimd_Anim_Contruct /* Opera */{
        from {height: 150px;}
        to {height: 0px;}
    } 

    .WeFind_Div_Expand{
        overflow: hidden;

        animation-fill-mode: both;
        animation: WeFimd_Anim_Expand 1s;

        -moz-animation: WeFimd_Anim_Expand 1s; /* Firefox */
        -moz-animation-fill-mode: both;
        -webkit-animation: WeFimd_Anim_Expand 1s; /* Safari and Chrome */
        -webkit-animation-fill-mode: both;
        -o-animation: WeFimd_Anim_Expand 1s; /* Opera */
        -o-animation-fill-mode: both;
    }

    .WeFind_Div_Contruct{
        overflow: hidden;

        animation-fill-mode: both;
        animation: WeFimd_Anim_Contruct 1s;

        -moz-animation: WeFimd_Anim_Contruct 1s; /* Firefox */
        -moz-animation-fill-mode: both;
        -webkit-animation: WeFimd_Anim_Contruct 1s; /* Safari and Chrome */
        -webkit-animation-fill-mode: both;
        -o-animation: WeFimd_Anim_Contruct 1s; /* Opera */
        -o-animation-fill-mode: both;
    }

HTML 是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>WeFind web site, What is WeFind</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="./CSS/WeFindAnimations.css">
    <link rel="stylesheet" type="text/css" href="./CSS/WeFind.css">

    <script>
        if (navigator.appName == 'Microsoft Internet Explorer') window.location = "./WhatIsIt_IEVer.html";

        function ResetAllElement(ElementName){
            var CurentElement = ElementName.substring(0,1);

            for (var Index = 1; Index < 5; Index++){
                if (Index != CurentElement && document.getElementById(Index + '_DivContent').getAttribute('class').indexOf('WeFind_Div_Expand') > 0){
                    document.getElementById(Index + '_DivContent').setAttribute('class', 'WeFind_Text_Body WeFind_Div_Contruct');
                    document.getElementById(Index + '_DivContentLineExpander').src = "./Images/ArrowDown.png";
                }
            }
        }

        function ToggleExpandContruct(ElementName){
            if (document.getElementById(ElementName).getAttribute('class').indexOf('WeFind_Div_Expand') > 0){
                document.getElementById(ElementName + 'LineExpander').src = "./Images/ArrowDown.png";
                return('WeFind_Text_Body WeFind_Div_Contruct');
            }
            else{
                document.getElementById(ElementName + 'LineExpander').src = "./Images/ArrowUp.png";
                return('WeFind_Text_Body WeFind_Div_Expand');
            }
        }
    </script>
</head>
<body>
    <table class="WeFind_Table_Stretched">
        <tr>
            <td class="WeFind_Table_CellHorizontalSpacer170px">&nbsp;</td>
            <td class="WeFind_Table_Cell_PortrateText">
                <div class="WeFind_Div_PunchLine" onclick="ResetAllElement('0_DivContent');">WeFind, A community obligated to create a safe living environment for all.</div>
                <div id="0_DivContent" class="WeFind_Text_Body WeFind_Div_Contructed" height="0px">
                    &nbsp;
                </div>

                <div class="WeFind_Div_PunchLine" onclick="ResetAllElement('1_DivContent'); document.getElementById('1_DivContent').setAttribute('class', ToggleExpandContruct('1_DivContent'));">
                    The power of "community bond" and "community commitment"
                    <img id="1_DivContentLineExpander" class="WeFind_Img_LineExpander" src="./Images/ArrowDown.png" />
                </div>
                <div id="1_DivContent" class="WeFind_Text_Body WeFind_Div_Contructed" height="0px">
                    The WeFind community utilizes the power of "community bond" and "community commitment" to create a safe living environment for loved ones, the elderly and the challenged, a safe environment for everyone.
                </div>

                <div class="WeFind_Div_PunchLine" onclick="ResetAllElement('2_DivContent'); document.getElementById('2_DivContent').setAttribute('class', ToggleExpandContruct('2_DivContent'));">
                    The power of the masses
                    <img id="2_DivContentLineExpander" class="WeFind_Img_LineExpander" src="./Images/ArrowDown.png" />
                </div>
                <div id="2_DivContent" class="WeFind_Text_Body WeFind_Div_Contructed" height="0px">
                    WeFind uses the power of the masses to create a safety net, continuously alert and ready to provide both passive and active assistance to anyone in need. That net is widely spread and instantaneously available. The ability to be where help is needed fast, and the ability to spread  a "Call For Help", enables the WeFind community to provide immediate aid, prevent harm, providing support effectively and instantaneously.
                </div>

                <div class="WeFind_Div_PunchLine" onclick="ResetAllElement('3_DivContent'); document.getElementById('3_DivContent').setAttribute('class', ToggleExpandContruct('3_DivContent'));">
                    Created by a cheap, wearable location sensitive device.
                    <img id="3_DivContentLineExpander" class="WeFind_Img_LineExpander" src="./Images/ArrowDown.png" />
                </div>
                <div id="3_DivContent" class="WeFind_Text_Body WeFind_Div_Contructed" height="0px">
                    The WeFind community safety net is created by a cheap, wearable location sensitive device and a mobile phone application. That device is attached to a kid, an elderly person, a challenged child or just anyone you. The device is sending location and status information to the WeFind community datacenter. Based on that location the community is able to receive alerts, when the one wearing the device needs assistance or is lost, and display messages which enable the community to monitor the whereabouts of that someone.
                </div>

                <div class="WeFind_Div_PunchLine" onclick="ResetAllElement('4_DivContent'); document.getElementById('4_DivContent').setAttribute('class', ToggleExpandContruct('4_DivContent'));">
                    There is no safety witout privacy !
                    <img id="4_DivContentLineExpander" class="WeFind_Img_LineExpander" src="./Images/ArrowDown.png" />
                </div>
                <div id="4_DivContent" class="WeFind_Text_Body WeFind_Div_Contructed" height="0px">
                    Data regarding each device is distributed based on the relations between the one wearing the device and the one receiving the information. Close relatives (Father, Mother, etc.' ...) receive detailed information while other people are filtered out. <span class="WeFind_Text_Body WeFind_Text_BodyUnderlined">Privacy is a key element in the WeFind community</span>; it is one of <span class="WeFind_Text_Body WeFind_Text_BodyUnderlined">the main building blocks of maintaining a safe environment</span>.
                </div>

                <p class="WeFind_Text_Body">
                    <center><img src="./Images/WeFind_CommunityHelp.png" width="600px"/><center>
                </p>
            </td>
        </tr>
    </table>
</body>
</html>

【问题讨论】:

    标签: google-chrome css animation


    【解决方案1】:

    好吧,我设法解决了这个问题。

    问题的原因是包含“div”的“表”的 CSS 部分。

    该表有一个类:

    .WeFind_Table_Stretched{
        height: 100%;
        width: 100%;
    }
    

    高度 : 100% 导致 Chrome 出现问题。 恕我直言,Chrome 中的一个错误,但我没有设法得到 Google 的回复。

    我删除了高度 100% 部分,整个事情就像一个魅力。

    埃雷兹

    【讨论】:

      【解决方案2】:

      您似乎有很多代码来实现最终结果。您可能想查看 jQuery 的滑动切换功能。 http://api.jquery.com/slideToggle/ 这应该消除对所有 css 动画和您拥有的 javascript 的需要。

      在 jQuery 中你可以这样做:

      $('h3').click(function(){
          $('p').slideToggle();
      });
      

      在这里你点击标题,p就会显示出来。

      如果您继续使用 CSS,则不需要动画,只需简单的过渡,您可以打开和关闭一个类来为高度设置动画。 W3 Schools 有一个演示,我认为这会有所帮助。 http://www.w3schools.com/css3/css3_transitions.asp

      这是一个使用 jQuery 和 slideToggle 的简单小提琴。 http://jsfiddle.net/markgtoce/HTyXm/

      【讨论】:

      • 我尝试了这两个选项。 FF 仍然显示流畅的动画,但 Chrome 正在扩展所有 div 元素,而不是平滑过渡。你可以在页面的修改版本上看到效果:http://www.wefind-tech.com/WhatIsIt_ChromeV.html所有代码都是内联的(CSS和JQ)所以你可以看到我做了什么。
      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 2018-04-14
      • 1970-01-01
      • 2011-03-19
      • 2023-03-11
      • 2019-10-09
      • 2016-08-29
      • 1970-01-01
      相关资源
      最近更新 更多