responsive.css
781 lines
| 14.9 KiB
| text/css
|
LassoCssLexer
|
r14435 | /*----------------------------------------*\ | ||
RESPONSIVE CSS | ||||
\*----------------------------------------*/ | ||||
/* | ||||
CONTENTS | ||||
A) BASIC MOBILE RESETS | ||||
B) HEADER & TOP MENUS | ||||
C) MAIN CONTENT & SIDEBAR | ||||
D) TOGGLE BUTTON & FLYOUT MENU | ||||
|
r14438 | E) UX ELEMENTS | ||
|
r14439 | F) PAGE SPECIFIC STYLES | ||
|
r14443 | G) FORMS | ||
|
r14435 | |||
*/ | ||||
/* Hide new elements (toggle button and flyout menu) above 900px */ | ||||
.mobile-toggle-button, | ||||
.flyout-menu | ||||
{ | ||||
display: none; | ||||
} | ||||
/* | ||||
redmine's body is set to min-width: 900px | ||||
add first breakpoint here and start adding responsiveness | ||||
*/ | ||||
@media all and (max-width: 899px) | ||||
{ | ||||
/*----------------------------------------*\ | ||||
A) BASIC MOBILE RESETS | ||||
\*----------------------------------------*/ | ||||
/* | ||||
apply natural border box, see: http://www.paulirish.com/2012/box-sizing-border-box-ftw/ | ||||
this helps us to better deal with percentages and padding / margin | ||||
*/ | ||||
*, | ||||
*:before, | ||||
*:after | ||||
{ | ||||
-webkit-box-sizing: border-box; | ||||
-moz-box-sizing: border-box; | ||||
box-sizing: border-box; | ||||
} | ||||
body, | ||||
html | ||||
{ | ||||
height: 100%; | ||||
margin: 0; | ||||
padding: 0; | ||||
} | ||||
html | ||||
{ | ||||
overflow-y: auto; /* avoid 2nd scrollbar on desktop */ | ||||
} | ||||
body | ||||
{ | ||||
min-width: 0; /* reset the min-width of 900px */ | ||||
|
r14436 | |||
-webkit-overflow-scrolling: touch; | ||||
|
r14435 | } | ||
body, | ||||
input, | ||||
select, | ||||
textarea, | ||||
button | ||||
{ | ||||
font-size: 14px; /* Set font-size for standard elements to 14px */ | ||||
} | ||||
select | ||||
{ | ||||
max-width: 100%; /* prevent long names within select menues from breaking content */ | ||||
} | ||||
#wrapper | ||||
{ | ||||
position: relative; | ||||
|
r14445 | overflow-x: hidden; /* hide horizontal overflow */ | ||
|
r14435 | max-width: 100%; | ||
} | ||||
#wrapper, | ||||
#wrapper2 | ||||
{ | ||||
margin: 0; | ||||
} | ||||
/*----------------------------------------*\ | ||||
B) HEADER & TOP MENUS | ||||
\*----------------------------------------*/ | ||||
#header | ||||
{ | ||||
width: 100%; | ||||
height: 64px; /* the height of our header on mobile */ | ||||
min-height: 0; | ||||
margin: 0; | ||||
padding: 0; | ||||
border: none; | ||||
background-color: #628db6; | ||||
} | ||||
/* Hide project name on mobile (project name is still visible in select menu) */ | ||||
#header h1 | ||||
{ | ||||
display: none !important; | ||||
} | ||||
/* reset #header a color for mobile toggle button */ | ||||
#header a.mobile-toggle-button | ||||
{ | ||||
color: #f8f8f8; | ||||
} | ||||
/* Hide top-menu and main-menu on mobile, because it's placed in our flyout menu */ | ||||
#top-menu, | ||||
#header #main-menu | ||||
{ | ||||
display: none; | ||||
} | ||||
/* the quick search within header holding search form and #project_quick_jump_box box*/ | ||||
#header #quick-search | ||||
{ | ||||
float: none; | ||||
clear: none; /* there are themes which set clear property, this resets it */ | ||||
max-width: 100%; /* reset max-width */ | ||||
margin: 0; | ||||
background: inherit; | ||||
} | ||||
/* this represents the dropdown arrow to left of the mobile project menu */ | ||||
#header .jump-box-arrow:before | ||||
{ | ||||
/* set a font-size in order to achive same result in different themes */ | ||||
font-family: Verdana, sans-serif; | ||||
font-size: 2em; | ||||
line-height: 64px; | ||||
position: absolute; | ||||
left: 0; | ||||
width: 2em; | ||||
padding: 0 .5em; | ||||
/* achieve dropdwon arrow by scaling a caret character */ | ||||
content: '^'; | ||||
-webkit-transform: scale(1,-.8); | ||||
-ms-transform: scale(1,-.8); | ||||
transform: scale(1,-.8); | ||||
text-align: right; | ||||
pointer-events: none; | ||||
opacity: .6; | ||||
} | ||||
/* styles for combobox within quick-search (#project_quick_jump_box) */ | ||||
#header #quick-search select | ||||
{ | ||||
font-size: 1.5em; | ||||
font-weight: bold; | ||||
line-height: 1.2; | ||||
position: absolute; | ||||
top: 15px; | ||||
left: 0; | ||||
float: left; | ||||
width: 100%; | ||||
max-width: 100%; | ||||
height: 2em; | ||||
height: 35px; | ||||
padding: 5px; | ||||
padding-right: 72px; | ||||
padding-left: 50px; | ||||
text-indent: .01px; | ||||
color: inherit; | ||||
border: 0; | ||||
-webkit-border-radius: 0; | ||||
border-radius: 0; | ||||
background: none; | ||||
-webkit-box-shadow: none; | ||||
box-shadow: none; | ||||
/* hide default browser arrow */ | ||||
-webkit-appearance: none; | ||||
-moz-appearance: none; | ||||
} | ||||
#header #quick-search form | ||||
{ | ||||
display: none; | ||||
} | ||||
/*----------------------------------------*\ | ||||
C) MAIN CONTENT & SIDEBAR | ||||
\*----------------------------------------*/ | ||||
#main | ||||
{ | ||||
padding: 0; | ||||
} | ||||
#main.nosidebar #content, | ||||
div#content | ||||
{ | ||||
width: 100%; | ||||
min-height: 0; /* reset min-height of #content */ | ||||
margin: 0; | ||||
} | ||||
/* hide sidebar and sidebar switch panel, since it's placed in mobile flyout menu */ | ||||
#sidebar, | ||||
#sidebar-switch-panel | ||||
{ | ||||
display: none; | ||||
} | ||||
.splitcontentleft | ||||
{ | ||||
width: 100%; /* use full width */ | ||||
} | ||||
.splitcontentright | ||||
{ | ||||
width: 100%; /* use full width */ | ||||
} | ||||
/*----------------------------------------*\ | ||||
D) TOGGLE BUTTON & FLYOUT MENU | ||||
\*----------------------------------------*/ | ||||
/* Mobile toggle button */ | ||||
.mobile-toggle-button | ||||
{ | ||||
font-size: 42px; | ||||
line-height: 64px; | ||||
position: relative; | ||||
z-index: 10; | ||||
display: block; /* remove display: none; of non-mobile version */ | ||||
float: right; | ||||
width: 60px; | ||||
height: 64px; | ||||
margin-top: 0; | ||||
text-align: center; | ||||
border-left: 1px solid #ddd; | ||||
} | ||||
.mobile-toggle-button:hover, | ||||
.mobile-toggle-button:active | ||||
{ | ||||
text-decoration: none; | ||||
} | ||||
.mobile-toggle-button:after | ||||
{ | ||||
font-family: Verdana, sans-serif; | ||||
display: block; | ||||
margin-top: -3px; | ||||
content: '\2261'; | ||||
} | ||||
/* search magnifier icon */ | ||||
.search-magnifier | ||||
{ | ||||
font-family: Verdana; | ||||
cursor: pointer; | ||||
-webkit-transform: rotate(-45deg); | ||||
-moz-transform: rotate(45deg); | ||||
-o-transform: rotate(45deg); | ||||
color: #bbb; | ||||
} | ||||
.search-magnifier--flyout | ||||
{ | ||||
font-size: 25px; | ||||
line-height: 54px; | ||||
position: absolute; | ||||
z-index: 1; | ||||
left: 12px; | ||||
} | ||||
/* Flyout Menu */ | ||||
.flyout-menu | ||||
{ | ||||
position: absolute; | ||||
right: -250px; | ||||
display: block; /* remove display: none; of non-mobile version */ | ||||
overflow-x: hidden; | ||||
width: 250px; | ||||
height: 100%; | ||||
margin: 0; /* reset margin for themes that define it */ | ||||
padding: 0; /* reset padding for themes that define it */ | ||||
color: white; | ||||
background-color: #3e5b76; | ||||
} | ||||
/* avoid zoom on search input focus for ios devices */ | ||||
.flyout-menu input[type='text'] | ||||
{ | ||||
font-size: 16px; | ||||
} | ||||
.flyout-menu h3 | ||||
{ | ||||
font-size: 11px; | ||||
line-height: 19px; | ||||
height: 20px; | ||||
margin: 0; | ||||
padding: 0; | ||||
letter-spacing: .1em; | ||||
text-transform: uppercase; | ||||
color: white; | ||||
border-top: 1px solid #506a83; | ||||
border-bottom: 1px solid #506a83; | ||||
background-color: #628db6; | ||||
} | ||||
.flyout-menu h4 | ||||
{ | ||||
color: white; | ||||
} | ||||
.flyout-menu h3, | ||||
.flyout-menu h4, | ||||
.flyout-menu > p, | ||||
.flyout-menu > a, | ||||
.flyout-menu ul li a, | ||||
.flyout-menu__search, | ||||
.flyout-menu__sidebar > div, | ||||
.flyout-menu__sidebar > p, | ||||
.flyout-menu__sidebar > a, | ||||
.flyout-menu__sidebar > form, | ||||
.flyout-menu > div, | ||||
.flyout-menu > form | ||||
{ | ||||
padding-left: 8px; | ||||
} | ||||
.flyout-menu .flyout-menu__avatar | ||||
{ | ||||
margin-top: -1px; /* move avatar up 1px */ | ||||
padding-left: 0; | ||||
} | ||||
.flyout-menu__sidebar > form | ||||
{ | ||||
display: block; | ||||
} | ||||
.flyout-menu__sidebar > form h3 | ||||
{ | ||||
margin-left: -8px; | ||||
} | ||||
.flyout-menu__sidebar > form label | ||||
{ | ||||
display: inline-block; | ||||
margin: 8px 0; | ||||
} | ||||
.flyout-menu__sidebar > form br br | ||||
{ | ||||
display: none; | ||||
} | ||||
.flyout-menu ul | ||||
{ | ||||
margin: 0; | ||||
padding: 0; | ||||
list-style: none; | ||||
} | ||||
|
r14440 | .flyout-menu #watchers | ||
{ | ||||
display: -webkit-flex; | ||||
display: -ms-flexbox; | ||||
display: -webkit-box; | ||||
display: flex; | ||||
flex-direction: column; | ||||
-webkit-flex-direction: column; | ||||
-ms-flex-direction: column; | ||||
-webkit-box-orient: vertical; | ||||
-webkit-box-direction: normal; | ||||
} | ||||
.flyout-menu #watchers .contextual | ||||
{ | ||||
-webkit-box-ordinal-group: 4; | ||||
-webkit-order: 3; | ||||
-ms-flex-order: 3; | ||||
order: 3; | ||||
} | ||||
.flyout-menu #watchers h3 | ||||
{ | ||||
margin-left: -8px; | ||||
} | ||||
.flyout-menu #watchers ul li | ||||
{ | ||||
display: -webkit-flex; | ||||
display: -ms-flexbox; | ||||
display: -webkit-box; | ||||
display: flex; | ||||
flex-direction: row; | ||||
-webkit-flex-direction: row; | ||||
-ms-flex-direction: row; | ||||
-webkit-box-orient: horizontal; | ||||
-webkit-box-direction: normal; | ||||
-webkit-align-items: center; | ||||
-ms-flex-align: center; | ||||
-webkit-box-align: center; | ||||
align-items: center; | ||||
} | ||||
|
r14435 | .flyout-menu ul li a | ||
{ | ||||
line-height: 40px; | ||||
display: block; | ||||
overflow: hidden; | ||||
height: 40px; | ||||
white-space: nowrap; | ||||
text-overflow: ellipsis; | ||||
border-top: 1px solid rgba(255,255,255,.1); | ||||
} | ||||
.flyout-menu ul li:first-child a | ||||
{ | ||||
line-height: 39px; | ||||
height: 39px; | ||||
border-top: none; | ||||
} | ||||
.flyout-menu a | ||||
{ | ||||
color: white; | ||||
} | ||||
.flyout-menu ul li a:hover | ||||
{ | ||||
text-decoration: none; | ||||
} | ||||
.flyout-menu ul li a.new-object, | ||||
.new-object ~ .menu-children | ||||
{ | ||||
display: none; | ||||
} | ||||
/* Left flyout search container */ | ||||
.flyout-menu__search | ||||
{ | ||||
line-height: 54px; | ||||
height: 64px; | ||||
padding-top: 3px; | ||||
padding-right: 8px; | ||||
} | ||||
.flyout-menu__search input[type='text'] | ||||
{ | ||||
line-height: 2; | ||||
width: 100%; | ||||
height: 38px; | ||||
padding-left: 27px; | ||||
vertical-align: middle; | ||||
border: none; | ||||
-webkit-border-radius: 3px; | ||||
border-radius: 3px; | ||||
background-color: #fff; | ||||
} | ||||
.flyout-menu__avatar | ||||
{ | ||||
display: -webkit-box; | ||||
display: -webkit-flex; | ||||
display: -ms-flexbox; | ||||
display: flex; | ||||
width: 100%; | ||||
border-top: 1px solid rgba(255,255,255,.1); | ||||
} | ||||
.flyout-menu__avatar img.gravatar | ||||
{ | ||||
width: 40px; | ||||
height: 40px; | ||||
padding: 0; | ||||
vertical-align: top; | ||||
border-width: 0; | ||||
} | ||||
.flyout-menu__avatar a | ||||
{ | ||||
line-height: 40px; | ||||
height: auto; | ||||
height: 40px; | ||||
text-decoration: none; | ||||
color: white; | ||||
} | ||||
/* avatar */ | ||||
.flyout-menu__avatar a:first-child | ||||
{ | ||||
line-height: 0; | ||||
width: 40px; | ||||
padding: 0; | ||||
} | ||||
.flyout-menu__avatar .user | ||||
{ | ||||
padding-left: 15px; | ||||
} | ||||
/* user link when no avatar is present */ | ||||
.flyout-menu__avatar--no-avatar a.user | ||||
{ | ||||
line-height: 40px; | ||||
padding-left: 8px; | ||||
} | ||||
.flyout-is-active body | ||||
{ | ||||
overflow: hidden; /* for body not to have scrollbars when left flyout menu is active */ | ||||
} | ||||
html.flyout-is-active | ||||
{ | ||||
overflow: hidden; | ||||
} | ||||
.flyout-is-active #wrapper | ||||
{ | ||||
right: 250px; /* when left flyout is active, move body to the right (same amount like flyout-menu's width) */ | ||||
|
r14445 | overflow: visible; | ||
|
r14435 | height: 100%; | ||
} | ||||
.flyout-is-active .mobile-toggle-button:after | ||||
{ | ||||
content: '\00D7'; /* close glyph */ | ||||
} | ||||
.flyout-is-active #wrapper2 | ||||
{ | ||||
/* | ||||
* only relevant for devices with cursor when flyout it active, in order to show, | ||||
* that whole wrapper content is clickable and closes flyout menu | ||||
*/ | ||||
cursor: pointer; | ||||
} | ||||
#admin-menu | ||||
{ | ||||
padding-left: 0; | ||||
} | ||||
#admin-menu li | ||||
{ | ||||
padding-bottom: 0; | ||||
} | ||||
#admin-menu a, | ||||
#admin-menu a.selected | ||||
{ | ||||
line-height: 40px; | ||||
padding: 0; | ||||
padding-left: 32px !important; | ||||
background-position: 8px 50%; | ||||
} | ||||
|
r14438 | |||
/*----------------------------------------*\ | ||||
E) UX ELEMENTS | ||||
\*----------------------------------------*/ | ||||
/* Contextual Buttons */ | ||||
|
r14462 | #content>.contextual | ||
|
r14438 | { | ||
width: 100%; | ||||
margin-bottom: .5em; | ||||
padding-left: 0; /* reset left padding in order to use whole space */ | ||||
white-space: normal; | ||||
color: transparent; | ||||
} | ||||
|
r14462 | #content>.contextual a, | ||
|
r14438 | p.buttons a | ||
{ | ||||
font-weight: bold; | ||||
display: inline-block; | ||||
margin: 5px 0; | ||||
margin-right: 2px; | ||||
padding: 9px 9px 9px 9px; | ||||
border: 1px solid #ddd; | ||||
-webkit-border-radius: 3px; | ||||
border-radius: 3px; | ||||
background-color: transparent; | ||||
background-position-x: 4px; | ||||
} | ||||
|
r14462 | #content>.contextual a.icon, | ||
|
r14438 | p.buttons a.icon | ||
{ | ||||
padding-left: 25px; | ||||
} | ||||
.flyout-menu .contextual | ||||
{ | ||||
float: none; | ||||
} | ||||
|
r14441 | /* loading indicator */ | ||
#ajax-indicator { | ||||
width: 60%; | ||||
left: 20%; | ||||
} | ||||
|
r14442 | /* jquery ui dialogs */ | ||
.ui-dialog | ||||
{ | ||||
max-width: 98%; | ||||
margin: 1%; | ||||
} | ||||
.ui-dialog .ui-dialog-content | ||||
{ | ||||
padding-left: 0; | ||||
padding-right: 0; | ||||
} | ||||
|
r14449 | #filters-table {width:100%; float:none;} | ||
.add-filter {width:100%; float:none; text-align: left; margin-top: 8px;} | ||||
|
r14439 | /*----------------------------------------*\ | ||
F) PAGE SPECIFIC STYLES | ||||
\*----------------------------------------*/ | ||||
/* page /login */ | ||||
#login-form table | ||||
{ | ||||
width: 100%; | ||||
} | ||||
#login-form input#username, | ||||
#login-form input#password, | ||||
#login-form input#openid_url | ||||
{ | ||||
width: 100%; | ||||
height: auto; | ||||
} | ||||
/* some themes add a margin to login page, remove it on mobile */ | ||||
.action-login #main | ||||
{ | ||||
margin: 0; | ||||
} | ||||
|
r14443 | |||
|
r14467 | div#activity dl, #search-results { margin-left: 0; } | ||
|
r14443 | /*----------------------------------------*\ | ||
G) FORMS | ||||
\*----------------------------------------*/ | ||||
/* tabular forms resets for mobile */ | ||||
|
r14463 | .tabular p, .tabular.settings p { | ||
|
r14443 | padding-left: 0; | ||
} | ||||
|
r14463 | .tabular label, .tabular.settings label { | ||
|
r14443 | display: block; | ||
width: 100%; | ||||
margin-left: 0; | ||||
text-align: left; | ||||
} | ||||
|
r14463 | .tabular input, .tabular select, .tabular textarea { | ||
|
r14443 | width: 100%; | ||
max-width: 100%; | ||||
} | ||||
|
r14463 | .tabular input[type="checkbox"], .tabular input.date { | ||
|
r14443 | width: auto; | ||
max-width: 95%; | ||||
} | ||||
|
r14444 | |||
/* new issue form */ | ||||
#all_attributes p:first-child { | ||||
float: none !important; | ||||
} | ||||
#issue_is_private_label { | ||||
display: inline; | ||||
} | ||||
span#watchers_inputs { | ||||
width: 100%; | ||||
} | ||||
|
r14435 | } | ||