- From: Alan Gresley <alan@css-class.com>
- Date: Fri, 30 Sep 2011 10:40:35 +1000
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- CC: Sylvain Galineau <sylvaing@microsoft.com>, "www-style@w3.org" <www-style@w3.org>, Jennifer Yu <Jennifer.Yu@microsoft.com>
On 30/09/2011 7:12 AM, Tab Atkins Jr. wrote: > On Thu, Sep 29, 2011 at 2:04 PM, Sylvain Galineau > <sylvaing@microsoft.com> wrote: >> This follows up on a thread this past July [1] that never reached a >> clear conclusion as we ended up discussing ways of synchronizing >> multiple animations since display:none can be used for that purpose >> in Webkit. >> >> One could say that display and animation properties are orthogonal >> to one another i.e. the latter animates properties, the latter what >> kind of box an element generates. So animations on a display:none >> element are run so that querying the animated properties along the >> way will return the expected values; and the visual result of >> turning the element back to display != none would reflect the >> current state of the animation. Correct, see below. >> This would be true for the animated >> children of a display:none parent, as well as for visibility:hidden >> elements and their children. >> >> This would also be consistent with what would happen if your >> animation was entirely script-based with no use of CSS3 >> Animations. >> >> Besides the implementation/runtime cost of managing invisible >> animations, what are the issues with this model ? >> >> [1] >> http://lists.w3.org/Archives/Public/www-style/2011Jul/0267.html > > I don't believe there are any issues. This is clearly the correct > model. There is no reason whatsoever for 'display' to have an > effect on what animations run. > > ~TJ With the below code: - WebKit (Chrome and Safari) will begin the animation again after selecting display: block (I will take it from Silvain's comment that the animation would stop after selecting display none). - Gecko runs the animation without stop and selecting display: none and display: block alternately will clearly show this. - Sylvain, how does IE10 preview 3 handle the below test? So it seems that display does have an effect. I can not speak of child elements of display: none (either by CSS or script) parent. Removing the CSS comment away from display: none and restesting in Gecko shows that the animation begins when a page is loaded (or refreshed) and selecting display: block will show it at some point in the animation run. Alan <!doctype html> <style> body { padding: 50px; } .outer { border: 5px solid teal; width: 800px; height: 100px; margin-top: 50px; background: -webkit-repeating-linear-gradient(left, white, white 100px, #ddd 100px, #ddd 200px); background: -moz-repeating-linear-gradient(left, white, white 100px, #ddd 100px, #ddd 200px); background: -ms-repeating-linear-gradient(left, white, white 100px, #ddd 100px, #ddd 200px); } #element { width: 100px; height: 100px; /*display:none; makes no difference */ background: yellowgreen; -webkit-animation: move 10s infinite linear; -moz-animation: move 10s infinite linear; -ms-animation: move 10s infinite linear; } @-webkit-keyframes move { 0% { margin-left: 0px; } 100% { margin-left: 700px; } } @-moz-keyframes move { 0% { margin-left: 0px; } 100% { margin-left: 700px; } } @-ms-keyframes move { 0% { margin-left: 0px; } 100% { margin-left: 700px; } } </style> <button onclick="document.getElementById('element').style.display = 'none';">display none</button> <button onclick="document.getElementById('element').style.display = 'block';">display block</button> <div class="outer"> <div id="element"></div> </div> -- Alan Gresley http://css-3d.org/ http://css-class.com/
Received on Friday, 30 September 2011 00:41:08 UTC