mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
did and experiment with CSS-only structure and animations -- partial fail, but close and fun to watch with animations on.
will still try again. Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
f6b62ad114
commit
8b96454530
164
ui/experiment-css-only-structure.html
Executable file
164
ui/experiment-css-only-structure.html
Executable file
@ -0,0 +1,164 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Goals:
|
||||||
|
- investigate the posiblity to place the .current element at a
|
||||||
|
predefined location.
|
||||||
|
- position all other elements relative to .current
|
||||||
|
- do the above two cleanly via CSS only - i.e. changing the .current
|
||||||
|
class to another element will reposition the whole group.
|
||||||
|
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<script src="jquery.js"></script>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('.square').click(function(e){
|
||||||
|
$('.square').removeClass('current')
|
||||||
|
$(this).addClass('current')
|
||||||
|
|
||||||
|
// XXX at this poit of afairs, to fix things will need
|
||||||
|
// to reverse the blue squares...
|
||||||
|
|
||||||
|
e.preventDefault()
|
||||||
|
})
|
||||||
|
$('.toggle-animation-button').click(function(e){
|
||||||
|
if($('.animated').length > 0){
|
||||||
|
$('.animated').removeClass('animated')
|
||||||
|
} else {
|
||||||
|
$('.square').addClass('animated')
|
||||||
|
}
|
||||||
|
e.preventDefault()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
.toggle-animation-button {
|
||||||
|
border: solid 2px silver;
|
||||||
|
display: inline;
|
||||||
|
padding: 5px;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
.meta-container {
|
||||||
|
border: solid 3px black;
|
||||||
|
overflow: visible;
|
||||||
|
height: 66px;
|
||||||
|
width: 100px;
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
top: 100px;
|
||||||
|
left: 450px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this has to be of with = N * square.width + C where N is number of
|
||||||
|
sqares and C is to compensate for margins and borders
|
||||||
|
|
||||||
|
margin-left = -(n*square.width + C) where n is the number of squares
|
||||||
|
left of .current */
|
||||||
|
.container {
|
||||||
|
border: solid 3px gray;
|
||||||
|
overflow: visible;
|
||||||
|
height: 50px;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
width: 1000px;
|
||||||
|
|
||||||
|
/* one way to go is to move the ribbon with this... */
|
||||||
|
/* NOTE: this needs to account for all the margins and borders
|
||||||
|
in the stack, in this case:
|
||||||
|
-(2*50-3*5)
|
||||||
|
|
||||||
|
.meta-container.width/2 - .square.width/2 (+/- margins and borders)
|
||||||
|
*/
|
||||||
|
margin-left: -475px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX figure out a way to place these relative to the last one, PASIVELY!!
|
||||||
|
- one obvious way is to float them right and margin-right but
|
||||||
|
this will reverse the order of the elements...
|
||||||
|
...cen they be re-ordered back?
|
||||||
|
- bruteforce: calc left of the first-child (not CSS)...
|
||||||
|
*/
|
||||||
|
/* squares before the current */
|
||||||
|
.square {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
background: blue;
|
||||||
|
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animated {
|
||||||
|
/* animate */
|
||||||
|
-webkit-transition: all 0.5s ease;
|
||||||
|
-moz-transition: all 0.5s ease;
|
||||||
|
-o-transition: all 0.5s ease;
|
||||||
|
-ms-transition: all 0.5s ease;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current {
|
||||||
|
background: silver;
|
||||||
|
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
clear: left;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
top: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* squares after the current */
|
||||||
|
.current~.square {
|
||||||
|
background: red;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
/* puts thisngs back into the ribbon */
|
||||||
|
top: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container .square:first-child {
|
||||||
|
border-left: solid 5px gray;
|
||||||
|
|
||||||
|
margin-right: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container .square:last-child {
|
||||||
|
border-right: solid 5px gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="toggle-animation-button">toggle animation</div>
|
||||||
|
|
||||||
|
<div class="meta-container">
|
||||||
|
<div class="container">
|
||||||
|
<!-- BUG: when current is first hell breaks lose... -->
|
||||||
|
<div class="square">1</div>
|
||||||
|
<div class="square current">2</div>
|
||||||
|
<div class="square">3</div>
|
||||||
|
<div class="square">4</div>
|
||||||
|
<div class="square">5</div>
|
||||||
|
<div class="square">6</div>
|
||||||
|
<div class="square">7</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- this is oddly aligned to the .squares -->
|
||||||
|
<!--div class="toggle-animation-button">toggle animation</div-->
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
x
Reference in New Issue
Block a user