This section illustrates how to create the basic HTML and CSS structure for a widget.
The content div
element in the main.html
file is a container for all the widget views. Each view is also a div
element that is embedded as a child element of the content
element. The views are hidden through the hidden CSS style and shown dynamically by the JavaScript code that runs the widget logic. Each child div
(login
, update_status
, search
, and settings
) contains view specific elements.
<html> <body> <div id="container"> <!-- ***** --> <!-- TITLE --> <div id="top_bar"> <table cellspacing="0" class="top_table"> <tr> <td class="top_button"> <a id="button_logout" href="#" class="button hidden"></a> </td> <td class="top_title"><div class="stew_title"></div></td> <td class="top_button"> <a id="button_exit" href="#" class="button red hidden"></a> </td> </tr> </table> </div> <!-- end of 'top_bar' --> <div id="content"> <!-- ***** --> <!-- LOGIN --> <div id="login" class="hidden"> </div> <!-- end of 'login' --> <!-- ************* --> <!-- UPDATE STATUS --> <div id="update_status" class="hidden"> </div> <!-- end of 'update_status' --> <!-- ****** --> <!-- SEARCH --> <div id="search" class="hidden"> </div> <!-- end of 'friends_status' --> <!-- ******** --> <!-- SETTINGS --> <div id="settings" class="hidden"> </div> <!-- end of 'settings' --> </div> <!-- end of 'content' --> <div id="menu_strip" class="buttons_bottom hidden"> <div id="button_container_update" class="button_container"><a id="button_update" class="button_bottom" href="#">Update</a></div> <div id="button_container_search" class="button_container"><a id="button_search" class="button_bottom" href="#">Search</a></div> <div id="button_container_settings" class="button_container"><a id="button_settings" class="button_bottom" href="#">Settings</a></div> </div> </div> <!-- end of 'container' --> </body> </html>
The top_bar
div
element specifies the title bar for the widget. It contains the widget title and two buttons: Logout and Exit.
For more information about how to use JavaScript to implement the functionality of the buttons, see STEW: adding JavaScript to drive the widget logic.
The Login view is used as an example of creating views within the HTML file. For more information about how to create the other STEW views, see the main.html
example file.
Figure: STEW Login view
The Login view contains the following elements:
The first div
specifies the title of the widget.
The second div
is a formatting container for a table that contains all the elements through which the user interacts with the widget:
An input element to enter the username.
An input element to enter the password.
A check box input element that allows the user to save their credentials on the device.
A link element that is styled as a button.
Using an HTML table as a container for all of the controls allows users to navigate from the top of the view down towards the end of the view. This navigation style works best on mobile device screens and is easiest for users. In addition, this navigation style enables adjusting the view dynamically on screens of different sizes.
<!-- ***** --> <!-- LOGIN --> <div id="login" class="hidden"> <div class="top_bar"> <div class="stew_title"></div> </div> <div class="login_container"> <table cellspacing="0"> <tr> <th>Login</th> </tr> <tr> <td>Please login using you Twitter credentials...</td> </tr> <tr> <td class="table_subtitle">Username</td> </tr> <tr> <td class="input_container"> <input id="login_username" type="text"> </td> </tr> <tr> <td class="table_subtitle">Password</td> </tr> <tr> <td class="input_container"> <input id="login_password" type="password"> </td> </tr> <tr> <td> <input id="login_remember_me" type="checkbox"><label for="login_remember_me">Remember Me</label> </td> </tr> <tr> <td class="button_container"><a id="login_button" href="#" class="button"></a></td> </tr> </table> </div> </div> <!-- end of 'login' -->
The last div
element in the HTML, menu_strip
, defines an on screen menu that is displayed on devices with large screens.
Figure: STEW button menu
The menu consists of three div
elements. Each div
element specifies the background of a button that can have an activated state to indicate the currently active view. In this example, the activated style is added to the element which visually changes the background color of a button. For example, the Update button is active in the figure above. Within each div
element, a link
element specifies the button image and text. When the user presses a button, the associated view appears. The functionality to change the style and display a view is implemented by using JavaScript.
The link
elements are used instead of using two background pictures in each div
element to indicate the active status to support tactile feedback and localization. Only link elements support tactile feedback. It is easier to replace text than to regenerate the whole image for a language version.
For more information on how to create the functionality of the menu, see STEW: adding JavaScript to drive the widget logic.