The “Todos” example available at https://github.com/meteor/todos is really a cool app both in terms of functionality and web & mobile UI. I am trying to understand how responsiveness is implemented here. The HTML body contains mainly two elements; one is a section for displaying menu and the other is a div for displaying content. The “menu” is shown by default on a large screen than 639px but not shown on a narrower screen. This is very basic but here it is not obvious to me how they hide the “section” element on a narrow screen. Below I am attaching the corresponding html file “app-body.html” also the HTML code grabbed from Chrome Inspect Element.
Can I have your comments please?
The “app-body.html” is
<template name="App_body">
{{#HammerTouchArea gestureMap=templateGestures}}
<div id="container" class="{{menuOpen}} {{cordova}}">
<section id="menu">
<div class="language-toggle">
{{#each language in languages}}
{{#if isActiveLanguage language}}
<span class="active">{{language}}</span>
{{else}}
<a href="#" class="js-toggle-language">{{language}}</a>
{{/if}}
{{/each}}
</div>
{{#if currentUser}}
<div class="btns-group-vertical">
<a href="#" class="js-user-menu btn-secondary">
{{#if userMenuOpen}}
<span class="icon-arrow-up"></span>
{{else}}
<span class="icon-arrow-down"></span>
{{/if}}
{{emailLocalPart}}
</a>
{{#if userMenuOpen}}
<a class="js-logout btn-secondary">
{{_ 'layouts.appBody.logout'}}
</a>
{{/if}}
</div>
{{else}}
<div class="btns-group">
<a href="{{pathFor 'signin'}}" class="btn-secondary">
{{_ 'layouts.appBody.login'}}
</a>
<a href="{{pathFor 'join'}}" class="btn-secondary">
{{_ 'layouts.appBody.join'}}
</a>
</div>
{{/if}}
<div class="list-todos">
<a class="js-new-list link-list-new">
<span class="icon-plus"></span>
{{_ 'layouts.appBody.newList'}}
</a>
{{#each list in lists}}
<a href="{{pathFor 'Lists.show' _id=list._id}}" title="{{list.name}}"
class="list-todo {{activeListClass list}}">
{{#if list.userId}}
<span class="icon-lock"></span>
{{/if}}
{{#if list.incompleteCount}}
<span class="count-list">{{list.incompleteCount}}</span>
{{/if}}
{{list.name}}
</a>
{{/each}}
</div>
</section>
{{#unless connected}}
<div class="notifications">
<div class="notification">
<span class="icon-sync"></span>
<div class="meta">
<div class="title-notification">
{{_ 'layouts.appBody.tryingToConnect'}}
</div>
<div class="description">
{{_ 'layouts.appBody.connectionIssue'}}
</div>
</div>
</div>
</div>
{{/unless}}
<div class="content-overlay"></div>
<div id="content-container">
{{#momentum plugin="fade"}}
{{#if Template.subscriptionsReady}}
{{> Template.dynamic template=main}}
{{else}}
{{> App_loading}}
{{/if}}
{{/momentum}}
</div>
</div>
{{/HammerTouchArea}}
</template>
This is the HMTL from Chrome Inspect Element.
<div id="__blaze-root">
<div class="hammer-touch-area" id="touch-aead52" style="touch-action: pan-y; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">
<div id="container" class="">
<section id="menu">
<div class="language-toggle">
<span class="active">en</span>
<a href="#" class="js-toggle-language">fr</a>
</div>
<div class="btns-group">
<a href="/signin" class="btn-secondary">
Sign In
</a>
<a href="/join" class="btn-secondary">
Join
</a>
</div>
<div class="list-todos">
<a class="js-new-list link-list-new">
<span class="icon-plus"></span>
New List
</a>
<a href="/lists/FNx53NyLW7PuywEKi" title="Meteor Principles" class="list-todo active">
<span class="count-list">7</span>
Meteor Principles
</a>
<a href="/lists/6d6QemvwLr9uem4Pm" title="Languages" class="list-todo">
<span class="count-list">9</span>
Languages
</a>
</div>
</section>
<div class="content-overlay"></div>
<div id="content-container">
<div data-momentum="">
<div class="nav-group">
<a href="#" class="js-menu nav-item">
<span class="icon-list-unordered" title="Show Menu">
</span>
</a>
</div>
<h1 class="js-edit-list title-page">
<span class="title-wrapper">Meteor Principles</span>
<span class="count-list">7</span>
</h1>
<div class="nav-group right">
<div class="nav-item options-mobile">
<select class="list-edit">
<option disabled="">
Select an action
</option>
<option value="private">Make Private</option>
<option value="delete">Delete</option>
</select>
<span class="icon-cog"></span>
</div>
<div class="options-web">
<a class="js-toggle-list-privacy nav-item">
<span class="icon-unlock" title="Make list private">
</span>
</a>
<a class="js-delete-list nav-item">
<span class="icon-trash" title="Delete list">
</span>
</a>
</div>
</div>
</div>
<form class="js-todo-new todo-new input-symbol">
<input type="text" placeholder="Type to add new tasks">
<span class="icon-add js-todo-add"></span>
</form>
</nav>
<div class="content-scrollable list-items">
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
<div class="list-item">
<label class="checkbox">
<input type="checkbox" name="checked">
<span class="checkbox-custom"></span>
</label>
<input type="text" placeholder="Task name">
<a class="js-delete-item delete-item" href="#">
<span class="icon-trash"></span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>