update css
This commit is contained in:
parent
76a88b0d0f
commit
bcf6a11694
5 changed files with 62 additions and 19 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.swp
|
34
icf.css
34
icf.css
|
@ -26,7 +26,7 @@ em, i {
|
||||||
}
|
}
|
||||||
|
|
||||||
#head {
|
#head {
|
||||||
background-color: rgb(255, 255, 255);
|
background-color: #1f618d;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
left: 0;
|
left: 0;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -34,6 +34,12 @@ em, i {
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
#icf_the {
|
||||||
|
height: 22px;
|
||||||
|
left: 9px;
|
||||||
|
position: absolute;
|
||||||
|
top: 49px;
|
||||||
|
}
|
||||||
#icf_icon {
|
#icf_icon {
|
||||||
height: 64px;
|
height: 64px;
|
||||||
left: 64px;
|
left: 64px;
|
||||||
|
@ -46,10 +52,20 @@ em, i {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 49px;
|
top: 49px;
|
||||||
}
|
}
|
||||||
|
#link {
|
||||||
|
display: none;
|
||||||
|
font-family: Source Serif Semibold;
|
||||||
|
font-size: 15px;
|
||||||
|
//font-weight: bold;
|
||||||
|
position: fixed;
|
||||||
|
right: 16px;
|
||||||
|
top: 154px;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
#timeline {
|
#timeline {
|
||||||
background-color: rgb(192, 192, 192);
|
background-color: rgb(192, 192, 192);
|
||||||
height: 32px;
|
height: 64px;
|
||||||
left: 0;
|
left: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -58,32 +74,32 @@ em, i {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
#timeline > img {
|
#timeline > img {
|
||||||
height: 32px;
|
height: 64px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menu {
|
#menu {
|
||||||
background: rgb(255, 255, 255);
|
background: #1f618d;
|
||||||
border-bottom: 1px dotted rgb(255, 128, 0);
|
border-bottom: 1px dotted rgb(255, 128, 0);
|
||||||
color: rgb(192, 192, 192);
|
color: rgb(192, 192, 192);
|
||||||
font-family: Source Serif Semibold;
|
font-family: Source Serif Semibold;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
left: 0;
|
left: 0;
|
||||||
padding: 8px 64px;
|
padding: 8px 12px;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 112px;
|
top: 144px;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
#menu > a {
|
#menu > a {
|
||||||
color: rgb(128, 128, 128);
|
color: rgb(192, 192, 192);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
#menu > a:hover {
|
#menu > a:hover {
|
||||||
color: rgb(192, 128, 64);
|
color: rgb(224, 160, 96);
|
||||||
}
|
}
|
||||||
#menu > a.selected {
|
#menu > a.selected {
|
||||||
color: rgb(255, 128, 0);
|
color: rgb(255, 128, 0);
|
||||||
|
@ -100,7 +116,7 @@ em, i {
|
||||||
padding-bottom: 32px;
|
padding-bottom: 32px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
top: 160px;
|
top: 192px;
|
||||||
width: 800px;
|
width: 800px;
|
||||||
}
|
}
|
||||||
.section:not(.selected) {
|
.section:not(.selected) {
|
||||||
|
|
39
icf.js
39
icf.js
|
@ -3,14 +3,20 @@ let hashes = slice(document.querySelectorAll('#menu > a')).map(function(element)
|
||||||
})
|
})
|
||||||
|
|
||||||
let movies = [
|
let movies = [
|
||||||
{id: 'GJT', frames: 241117},
|
{id: 'GJT', title: 'Aan (Mehboob, 1952)', frames: 241117},
|
||||||
{id: 'IKP', frames: 250936}
|
{id: 'IKP', title: 'Mother India (Mehboob, 1957)', frames: 250936}
|
||||||
]
|
]
|
||||||
let movie = movies[Math.floor(new Date() / 86400000) % 2]
|
let movie = movies[Math.floor(new Date() / 86400000) % 2]
|
||||||
|
|
||||||
|
let timelineLink = document.getElementById('link')
|
||||||
|
timelineLink.href = 'https://indiancine.ma/' + movie.id
|
||||||
|
timelineLink.innerHTML = movie.title
|
||||||
|
let timelineLinkEntered = false
|
||||||
|
|
||||||
let timelineElement = document.getElementById('timeline')
|
let timelineElement = document.getElementById('timeline')
|
||||||
let timelineElements = []
|
let timelineElements = []
|
||||||
let timelineWidth = 1500
|
let timelineWidth = 1500
|
||||||
|
let timelineResize = 1
|
||||||
let timelineTiles = Math.ceil(movie.frames / timelineWidth)
|
let timelineTiles = Math.ceil(movie.frames / timelineWidth)
|
||||||
let timelinesLeft
|
let timelinesLeft
|
||||||
|
|
||||||
|
@ -26,7 +32,7 @@ function getTimelineElement(index, left) {
|
||||||
element.src = 'https://media.indiancine.ma/' + movie.id
|
element.src = 'https://media.indiancine.ma/' + movie.id
|
||||||
+ '/timelinekeyframes64p' + (index + 1) + '.jpg'
|
+ '/timelinekeyframes64p' + (index + 1) + '.jpg'
|
||||||
element.style.left = left + 'px'
|
element.style.left = left + 'px'
|
||||||
element.style.width = timelineWidth / 2 + 'px'
|
element.style.width = timelineWidth * timelineResize + 'px'
|
||||||
timelineElement.appendChild(element)
|
timelineElement.appendChild(element)
|
||||||
return element
|
return element
|
||||||
}
|
}
|
||||||
|
@ -54,13 +60,13 @@ function init() {
|
||||||
let frame = Math.floor(Math.random() * movie.frames)
|
let frame = Math.floor(Math.random() * movie.frames)
|
||||||
let timelines = [{
|
let timelines = [{
|
||||||
index: Math.floor(frame / timelineWidth),
|
index: Math.floor(frame / timelineWidth),
|
||||||
left: -(frame / timelineWidth) / 2
|
left: -(frame / timelineWidth) * timelineResize
|
||||||
}]
|
}]
|
||||||
let windowWidth = window.innerWidth
|
let windowWidth = window.innerWidth
|
||||||
while (last(timelines).left < windowWidth + timelineWidth / 2) {
|
while (last(timelines).left < windowWidth + timelineWidth / 2) {
|
||||||
timelines.push({
|
timelines.push({
|
||||||
index: (last(timelines).index + 1) % timelineTiles,
|
index: (last(timelines).index + 1) % timelineTiles,
|
||||||
left: last(timelines).left + timelineWidth / 2
|
left: last(timelines).left + timelineWidth * timelineResize
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
timelineElements = timelines.map(function(timeline, i) {
|
timelineElements = timelines.map(function(timeline, i) {
|
||||||
|
@ -76,6 +82,9 @@ function last(array) {
|
||||||
function play() {
|
function play() {
|
||||||
if (speed <= 0 && acceleration < 0) {
|
if (speed <= 0 && acceleration < 0) {
|
||||||
paused = true
|
paused = true
|
||||||
|
if (!timelineLinkEntered) {
|
||||||
|
timelineLink.style.display = 'none'
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//console.log('play', speed, acceleration)
|
//console.log('play', speed, acceleration)
|
||||||
|
@ -83,12 +92,12 @@ function play() {
|
||||||
timelineElements.forEach(function(element) {
|
timelineElements.forEach(function(element) {
|
||||||
element.style.left = (parseFloat(element.style.left) - speed) + 'px'
|
element.style.left = (parseFloat(element.style.left) - speed) + 'px'
|
||||||
})
|
})
|
||||||
if (parseFloat(timelineElements[0].style.left) <= -timelineWidth / 2) {
|
if (parseFloat(timelineElements[0].style.left) <= -timelineWidth * timelineResize) {
|
||||||
timelineElement.removeChild(timelineElements.shift())
|
timelineElement.removeChild(timelineElements.shift())
|
||||||
let lastElement = last(timelineElements)
|
let lastElement = last(timelineElements)
|
||||||
timelineElements.push(getTimelineElement(
|
timelineElements.push(getTimelineElement(
|
||||||
(lastElement.data.index + 1) % timelineTiles,
|
(lastElement.data.index + 1) % timelineTiles,
|
||||||
parseFloat(lastElement.style.left) + timelineWidth / 2
|
parseFloat(lastElement.style.left) + timelineWidth * timelineResize
|
||||||
))
|
))
|
||||||
timelineElement.appendChild(last(timelineElements))
|
timelineElement.appendChild(last(timelineElements))
|
||||||
}
|
}
|
||||||
|
@ -99,7 +108,7 @@ function play() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function resize() {
|
function resize() {
|
||||||
timelinesLeft = (window.innerWidth - 4096) / 2
|
timelinesLeft = (window.innerWidth - 4096) * timelineResize
|
||||||
}
|
}
|
||||||
|
|
||||||
function slice(nodelist) {
|
function slice(nodelist) {
|
||||||
|
@ -110,6 +119,7 @@ function start() {
|
||||||
acceleration = maxAcceleration
|
acceleration = maxAcceleration
|
||||||
if (paused) {
|
if (paused) {
|
||||||
paused = false
|
paused = false
|
||||||
|
timelineLink.style.display = 'block'
|
||||||
play()
|
play()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,4 +135,17 @@ window.addEventListener('hashchange', hashchange)
|
||||||
window.addEventListener('resize', resize)
|
window.addEventListener('resize', resize)
|
||||||
timeline.addEventListener('mouseenter', start)
|
timeline.addEventListener('mouseenter', start)
|
||||||
timeline.addEventListener('mouseleave', stop)
|
timeline.addEventListener('mouseleave', stop)
|
||||||
|
timelineLink.addEventListener('mouseenter', function() {
|
||||||
|
timelineLinkEntered = true
|
||||||
|
})
|
||||||
|
timelineLink.addEventListener('mouseleave', function() {
|
||||||
|
if (paused) {
|
||||||
|
setTimeout(function() {
|
||||||
|
if (paused) {
|
||||||
|
timelineLink.style.display = 'none'
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
timelineLinkEntered = false
|
||||||
|
})
|
||||||
|
|
||||||
|
|
BIN
icf.the.png
Normal file
BIN
icf.the.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
|
@ -9,6 +9,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="head">
|
<div id="head">
|
||||||
|
<img id="icf_the" src="icf.the.png"/>
|
||||||
<img id="icf_icon" src="icf.icon.png"/>
|
<img id="icf_icon" src="icf.icon.png"/>
|
||||||
<img id="icf_logo" src="icf.logo.png"/>
|
<img id="icf_logo" src="icf.logo.png"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,6 +20,7 @@
|
||||||
<a href="#goals">Goals</a> ·
|
<a href="#goals">Goals</a> ·
|
||||||
<a href="#charter">Charter</a> ·
|
<a href="#charter">Charter</a> ·
|
||||||
<a href="#team">Team</a> ·
|
<a href="#team">Team</a> ·
|
||||||
|
<a href="#advisors">Advisors</a> ·
|
||||||
<a href="#support">Support</a> ·
|
<a href="#support">Support</a> ·
|
||||||
<a href="#news">News</a>
|
<a href="#news">News</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -77,8 +79,9 @@
|
||||||
<p><b>Lawrence Liang</b> is a lawyer, writer and film scholar. A founder of Alternative Law forum, he is currently at Ambedkar University Delhi. Involved with various copyleft initiatives, Lawrence has been with <a href="https://pad.ma/">Pad.ma</a> and <a href="https://indiancine.ma">Indiancine.ma</a> from its inception and is a founding trustee of The Indian Cinema Foundation.</p>
|
<p><b>Lawrence Liang</b> is a lawyer, writer and film scholar. A founder of Alternative Law forum, he is currently at Ambedkar University Delhi. Involved with various copyleft initiatives, Lawrence has been with <a href="https://pad.ma/">Pad.ma</a> and <a href="https://indiancine.ma">Indiancine.ma</a> from its inception and is a founding trustee of The Indian Cinema Foundation.</p>
|
||||||
<p><b>Sebastian Lütgert</b> is an artist, programmer, writer, based in Berlin and sometimes Bombay, co-founder of <a href="https://0x2620.org">0x2620</a> (since 2007) and <a href="https://0xDB.org">0xDB</a> (since 2007).</p>
|
<p><b>Sebastian Lütgert</b> is an artist, programmer, writer, based in Berlin and sometimes Bombay, co-founder of <a href="https://0x2620.org">0x2620</a> (since 2007) and <a href="https://0xDB.org">0xDB</a> (since 2007).</p>
|
||||||
<p><b>Shaina Anand</b> is an artist and filmmaker, co-initiator of the collaborative studio CAMP. Her films and projects over the past decade have shown how deep technical experimentation and artistic form can meet while extracting new qualities and experiences from contemporary life and materials. Shaina is part of the core group that runs <a href="https://pad.ma/">Pad.ma</a> and <a href="https://indiancine.ma">Indiancine.ma</a> and is a founding trustee of The Indian Cinema Foundation.</p>
|
<p><b>Shaina Anand</b> is an artist and filmmaker, co-initiator of the collaborative studio CAMP. Her films and projects over the past decade have shown how deep technical experimentation and artistic form can meet while extracting new qualities and experiences from contemporary life and materials. Shaina is part of the core group that runs <a href="https://pad.ma/">Pad.ma</a> and <a href="https://indiancine.ma">Indiancine.ma</a> and is a founding trustee of The Indian Cinema Foundation.</p>
|
||||||
<p><b>Zinnia Ambapardiwala</b> joined the collaborative studio CAMP in 2008. She oversees media encoding, archiving and backend operations for <a href="https://pad.ma/">Pad.ma</a> and <a href="https://indiancine.ma">Indiancine.ma</a>.</p>
|
<p><b>Zinnia Ambapardiwala</b> joined the collaborative studio CAMP in 2008. She oversees media encoding, archiving and backend operations for <a href="https://pad.ma/">Pad.ma</a> and <a href="https://indiancine.ma">Indiancine.ma</a>.</p><br><br>
|
||||||
<p><b>Advisors</b></p>
|
</div>
|
||||||
|
<div class="section" id="advisors">
|
||||||
<p><b>Kiran Rao</b> is a screenwriter and director of Dhobhi Ghaat (2011), and a film producer deeply committed to promoting independent cinema and living screen cultures. She is also chairperson of MAMI (Mumbai Academy of Moving Images), and producer at Aamir Khan Productions. </p>
|
<p><b>Kiran Rao</b> is a screenwriter and director of Dhobhi Ghaat (2011), and a film producer deeply committed to promoting independent cinema and living screen cultures. She is also chairperson of MAMI (Mumbai Academy of Moving Images), and producer at Aamir Khan Productions. </p>
|
||||||
<p><b>Moinak Biswas</b> (Jadavpur University, Kolkata) teaches film studies at Jadavpur University and has been widely published in both English and Bengali on contemporary Indian cinema. He started the medialab at Jadavpur University, and has collaborated with Pad.ma and Indiancine.ma.</p>
|
<p><b>Moinak Biswas</b> (Jadavpur University, Kolkata) teaches film studies at Jadavpur University and has been widely published in both English and Bengali on contemporary Indian cinema. He started the medialab at Jadavpur University, and has collaborated with Pad.ma and Indiancine.ma.</p>
|
||||||
<p><b>Ranjani Majumdar</b> teaches Cinema Studies at the School of Arts and Aesthetics, Jawaharlal Nehru University. She was part of India's first and all-women documentary collective Mediastorm. She is the author of Bombay Cinema: An Archive of the City (2007). Her areas of research include, the cinematic city, media theory, and the intersection of travel, design and colour in 1960s Bombay cinema.</p>
|
<p><b>Ranjani Majumdar</b> teaches Cinema Studies at the School of Arts and Aesthetics, Jawaharlal Nehru University. She was part of India's first and all-women documentary collective Mediastorm. She is the author of Bombay Cinema: An Archive of the City (2007). Her areas of research include, the cinematic city, media theory, and the intersection of travel, design and colour in 1960s Bombay cinema.</p>
|
||||||
|
|
Loading…
Reference in a new issue