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>

Reply via email to