mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 10:20:08 +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