trigger drop down menus on touch in mobile

This commit is contained in:
Bala Clark 2013-08-17 23:30:50 +02:00
parent ea42cb3ddc
commit 22402e640a
5 changed files with 29 additions and 10 deletions

View file

@ -32,7 +32,7 @@
position: relative; position: relative;
} }
.navigate:hover { body:not(.mobile) .navigate:hover {
opacity: 1; opacity: 1;
} }

View file

@ -23,7 +23,7 @@ button, input, label {
background-color: black; background-color: black;
background-image: linear-gradient(to bottom, rgb(80, 80, 80), rgb(17, 17, 17)); background-image: linear-gradient(to bottom, rgb(80, 80, 80), rgb(17, 17, 17));
overflow: visible; overflow: visible;
padding: 8px; padding: 0.75em;
position: fixed; position: fixed;
left: 0; left: 0;
right: 0; right: 0;
@ -34,6 +34,10 @@ button, input, label {
transition: opacity 0.2s ease-in-out; transition: opacity 0.2s ease-in-out;
} }
.mobile .toolbar {
opacity: 1;
}
.toolbar:hover { .toolbar:hover {
opacity: 1; opacity: 1;
} }
@ -56,7 +60,7 @@ button, input, label {
} }
.toolbar li > button { .toolbar li > button {
font-size: 16px; font-size: 1.5em;
padding: 0 12px; padding: 0 12px;
} }
@ -69,7 +73,7 @@ button, input, label {
} }
.toolbar .dropdown { .toolbar .dropdown {
font-size: 12px; font-size: 1em;
position: absolute; position: absolute;
width: 212px; width: 212px;
background-color: white; background-color: white;
@ -81,7 +85,7 @@ button, input, label {
display: none; display: none;
} }
.toolbar li:hover > .dropdown { body:not(.mobile) .toolbar li:hover > .dropdown {
display: block; display: block;
} }
@ -97,12 +101,16 @@ button, input, label {
content: ''; content: '';
} }
.toolbar .close {
display: none;
}
.dropdown .control-group { .dropdown .control-group {
padding: 8px; padding: 8px;
} }
.dropdown .sliders { .dropdown .sliders {
font-size: 16px; font-size: 1.5em;
} }
.dropdown .control-group span { .dropdown .control-group span {

View file

@ -102,6 +102,10 @@ var ComicBook = (function ($) {
var page_requested = false; // used to request non preloaded pages var page_requested = false; // used to request non preloaded pages
var shiv = false; var shiv = false;
if (navigator.userAgent.match(/mobile/i)) {
document.body.classList.add('mobile');
}
/** /**
* Gets the window.innerWidth - scrollbars * Gets the window.innerWidth - scrollbars
*/ */
@ -182,6 +186,13 @@ var ComicBook = (function ($) {
window.addEventListener('hashchange', checkHash, false); window.addEventListener('hashchange', checkHash, false);
} }
window.addEventListener('touchstart', function (e) {
var $dropdown, $el = $(e.target);
if ($el.data('toggle') === 'dropdown' ) {
$el.siblings('.dropdown').toggle();
}
}, false);
/** /**
* Render Handlebars templates. Templates with data-trigger & data-action will * Render Handlebars templates. Templates with data-trigger & data-action will
* have the specified events bound. * have the specified events bound.

View file

@ -38,6 +38,6 @@ helpers = helpers || Handlebars.helpers; data = data || {};
return "\n<div class=\"toolbar\">\n\n <ul class=\"pull-left\">\n <li>\n <button data-trigger=\"click\" data-action=\"close\" title=\"close\" class=\"icon-remove-sign\"></button>\n </li>\n <li class=\"separator\"></li>\n <li>\n <button title=\"image settings\" class=\"icon-settings\"></button>\n <div class=\"dropdown\">\n <form name=\"image-enhancements\" data-trigger=\"reset\" data-action=\"resetEnhancements\">\n <div class=\"sliders\">\n <div class=\"control-group\">\n <label title=\"adjust brightness\" class=\"icon-sun\"></label>\n <input data-trigger=\"change\" data-action=\"brightness\" type=\"range\" min=\"-100\" max=\"100\" step=\"1\" value=\"0\">\n </div>\n <div class=\"control-group\">\n <label title=\"adjust contrast\" class=\"icon-adjust\"></label>\n <input data-trigger=\"change\" data-action=\"contrast\" type=\"range\" min=\"-1\" max=\"1\" step=\"0.1\" value=\"0\">\n </div>\n <div class=\"control-group\">\n <label title=\"sharpen\" class=\"icon-droplet\"></label>\n <input data-trigger=\"change\" data-action=\"sharpen\" type=\"range\" min=\"0\" max=\"1\" step=\"0.1\" value=\"0\">\n </div>\n </div>\n <div class=\"control-group pull-left\">\n <input id=\"image-desaturate\" type=\"checkbox\" data-trigger=\"change\" data-action=\"desaturate\">\n <label for=\"image-desaturate\">desaturate</label>\n </div>\n <div class=\"control-group pull-right\">\n <input type=\"reset\" value=\"reset\">\n </div>\n </form>\n </div>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"toggleLayout\" title=\"toggle one/two pages at a time\" class=\"icon-file\"></button>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"zoomOut\" title=\"zoom out\" class=\"icon-zoom-out\"></button>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"zoomIn\" title=\"zoom in\" class=\"icon-zoom-in\"></button>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"fitWidth\" title=\"fit page to window width\" class=\"icon-expand\"></button>\n </li>\n </ul>\n\n <ul class=\"pull-right\">\n <li><span id=\"current-page\"></span> / <span id=\"page-count\"></span></li>\n </ul>\n\n</div>\n"; return "\n<div class=\"toolbar\">\n\n <ul class=\"pull-left\">\n <li class=\"close\">\n <button data-trigger=\"click\" data-action=\"close\" title=\"close\" class=\"icon-remove-sign\"></button>\n </li>\n <li class=\"close separator\"></li>\n <li>\n <button title=\"image settings\" class=\"icon-settings\" data-toggle=\"dropdown\"></button>\n <div class=\"dropdown\">\n <form name=\"image-enhancements\" data-trigger=\"reset\" data-action=\"resetEnhancements\">\n <div class=\"sliders\">\n <div class=\"control-group\">\n <label title=\"adjust brightness\" class=\"icon-sun\"></label>\n <input data-trigger=\"change\" data-action=\"brightness\" type=\"range\" min=\"-100\" max=\"100\" step=\"1\" value=\"0\">\n </div>\n <div class=\"control-group\">\n <label title=\"adjust contrast\" class=\"icon-adjust\"></label>\n <input data-trigger=\"change\" data-action=\"contrast\" type=\"range\" min=\"-1\" max=\"1\" step=\"0.1\" value=\"0\">\n </div>\n <div class=\"control-group\">\n <label title=\"sharpen\" class=\"icon-droplet\"></label>\n <input data-trigger=\"change\" data-action=\"sharpen\" type=\"range\" min=\"0\" max=\"1\" step=\"0.1\" value=\"0\">\n </div>\n </div>\n <div class=\"control-group pull-left\">\n <input id=\"image-desaturate\" type=\"checkbox\" data-trigger=\"change\" data-action=\"desaturate\">\n <label for=\"image-desaturate\">desaturate</label>\n </div>\n <div class=\"control-group pull-right\">\n <input type=\"reset\" value=\"reset\">\n </div>\n </form>\n </div>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"toggleLayout\" title=\"toggle one/two pages at a time\" class=\"icon-file\"></button>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"zoomOut\" title=\"zoom out\" class=\"icon-zoom-out\"></button>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"zoomIn\" title=\"zoom in\" class=\"icon-zoom-in\"></button>\n </li>\n <li>\n <button data-trigger=\"click\" data-action=\"fitWidth\" title=\"fit page to window width\" class=\"icon-expand\"></button>\n </li>\n </ul>\n\n <ul class=\"pull-right\">\n <li><span id=\"current-page\"></span> / <span id=\"page-count\"></span></li>\n </ul>\n\n</div>\n";
}); });
})(); })();

View file

@ -2,12 +2,12 @@
<div class="toolbar"> <div class="toolbar">
<ul class="pull-left"> <ul class="pull-left">
<li> <li class="close">
<button data-trigger="click" data-action="close" title="close" class="icon-remove-sign"></button> <button data-trigger="click" data-action="close" title="close" class="icon-remove-sign"></button>
</li> </li>
<li class="separator"></li> <li class="close separator"></li>
<li> <li>
<button title="image settings" class="icon-settings"></button> <button title="image settings" class="icon-settings" data-toggle="dropdown"></button>
<div class="dropdown"> <div class="dropdown">
<form name="image-enhancements" data-trigger="reset" data-action="resetEnhancements"> <form name="image-enhancements" data-trigger="reset" data-action="resetEnhancements">
<div class="sliders"> <div class="sliders">