Skip to content

Instantly share code, notes, and snippets.

View rikukissa's full-sized avatar
🍔

Riku Rouvila rikukissa

🍔
View GitHub Profile
@rikukissa
rikukissa / vendor.styl
Last active December 12, 2015 03:19
Prefix mixins for CSS3
vendor(prop, args)
-webkit-{prop} args
-moz-{prop} args
-ms-{prop} args
-o-{prop} args
{prop} args
border-radius()
vendor('border-radius', arguments)
@rikukissa
rikukissa / centered.styl
Last active December 12, 2015 03:19
Mixin to center absolute positioned elements
centered(w, h)
width w px
height h px
top 50%
left 50%
position absolute
margin-top ((h/2) * -1) px
margin-left ((w/2) * -1) px
@rikukissa
rikukissa / koswipe.coffee
Last active December 12, 2015 05:29
Knockout binding handlers for jquery.events.swipe plugin
swipeEvents = ['swipeleft', 'swiperight', 'swipeup', 'swipedown']
for e in swipeEvents
do (e) ->
ko.bindingHandlers[e] =
init: (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) ->
f = valueAccessor()
$(element).on e, -> f.apply viewModel, [e]
@rikukissa
rikukissa / normalization.styl
Last active December 12, 2015 08:49
A little CSS normalization
*
margin 0
padding 0
list-style none
box-sizing border-box
font-weight normal
text-decoration none
-webkit-box-sizing border-box
-moz-box-sizing border-box
box-sizing border-box
@rikukissa
rikukissa / webapp.sublime-project
Created March 18, 2013 11:52
Sublime build config for webapps
{
"folders":
[
{
"path": "* PATH TO PROJECT FILES *"
}
],
"build_systems":
[
{
@rikukissa
rikukissa / gist:5212887
Created March 21, 2013 13:08
jQuery slider plugin
define (require) ->
$ = require('jquery')
$.fn.slider = (@opts = {}) ->
slider = $(this)
# Initialize slides
$(this).find('.slide').each (i) ->
$(this).attr('data-index', i)
$(this).addClass('hidden-right').appendTo(slider) if i > 0
window.requestAnimFrame = ((callback) ->
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
(callback) ->
window.setTimeout callback, 1000 / 60
)()
ko.bindingHandlers.fadeVisible =
init: (element, valueAccessor) ->
value = valueAccessor()
$(element).toggle ko.utils.unwrapObservable(value)
update: (element, valueAccessor) ->
value = valueAccessor()
(if ko.utils.unwrapObservable(value) then $(element).fadeIn(1000) else $(element).fadeOut(1000))
@rikukissa
rikukissa / EventEmitter.coffee
Last active December 16, 2015 08:48
on & trigger methods for classes
class EventEmitter
constructor: ->
@events = {}
trigger: (keys, args...) ->
for key in keys.split(' ')
if @events[key]?
func.apply @, args for func in @events[key]
@
on: (keys, func) ->
@rikukissa
rikukissa / gist:5507850
Last active December 16, 2015 22:30
iframe-fileupload binding handler for knockout
ko.bindingHandlers.fileupload =
init: (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) ->
el = $(element).find('input')
el.on 'change', (e) =>
form = $('<form class="file-upload" target="_iframe" method="post" action="TARGET_URL" enctype="multipart/form-data"></form>')
frame = $('<iframe name="_iframe">')
frame.appendTo el.parent()
el.wrap form