[whatwg] classList.toggle()

On May 1, 2007, at 12:05 AM, Martin Atkins wrote:

> Maciej Stachowiak wrote:
>> How about about adding a toggle() operation to classList? Adds the  
>> token if not present, removes it if present. This would be useful  
>> for script code that dynamically manipulates classes to cause  
>> style changes.
>
> It's been my experience that toggles are troublesome. In order for  
> a call to toggle() to be successful -- where by successful I mean  
> that it makes the change you intended -- you need to know the state  
> ahead of time. If you have two distinct scripts "toggling" the same  
> value, they're going to get out of step and think they're turning  
> on when they're turning off.
>
> Or did you have a use-case in mind where it doesn't matter what the  
> end result is as long as it's not what it was before?

Yes, cases where you have a UI action that is supposed to always  
toggle the current state, and the class is used for styling so  
appearance can't be out of sync with the state. Here's a simple  
example. The images would zoom out and fade when you click on them,  
and return to their normal state when clicked again.

<style>
.container {
    margin: 75px;
}
.picture {
    width: 50px;
    height: 50px;
    display: inline-block;
}
.picture img {
     width: 50px;
     height: 50px;
}
.picture.zoomed img {
    width: 200px;
    height: 200px;
    position: relative;
    left: -75px;
    top: -75px;
    opacity: 0.8;
}
</style>

<section class="container">
<h1>Bridge Gallery</h1>

   <div class="picture" onclick="classList.toggle('zoomed')">
     <img src="goden-gate-bridge.jpg">
   </div>

   <div class="picture" onclick="classList.toggle('zoomed')">
     <img src="bay-bridge.jpg">
   </div>

   <div class="picture" onclick="classList.toggle('zoomed')">
     <img src="san-mateo-bridge.jpg">
   </div>

   <div class="picture" onclick="classList.toggle('zoomed')">
     <img src="benicia-bridge.jpg">
   </div>

   <div class="picture" onclick="classList.toggle('zoomed')">
     <img src="dumbarton-bridge.jpg">
   </div>

</section>

Received on Tuesday, 1 May 2007 08:08:27 UTC