Coursera: Responsive Website Basics

Peer-graded Assignment - Build a Responsive Web Page

This paper was originally submitted as an assignment towards partial completion of the Coursera Responsive Website Basic course towards the end of 2016. The objectives were to illustrate HTML5-technical skills, cf pedagogical.

The paper is presented as three columns. On the left is the original question text. Whilst the specific answer is contained within the code, (a working demonstration is available on my web site) explanatory comments and explanations appear within the central "Answer" column. The right-most column reproduces the assignment's peer review guide, together with peers' feedback and assessment.

Since the original submission, the code has been improved with some of the improvements suggested and to satisfy self-criticisms. Accordingly, some of the line numbers (etc) in the Answers column may no longer apply exactly.

Make a responsive, interactive web page using HTML, CSS and JavaScript.

Instructions

Create a web page about yourself or a subject you are interested in, using JavaScript, CSS and HTML. Your submission should consist of 3 files:

You can also upload additional files such as jQuery or Bootstrap if needed.

The web page should have the following features:

  1. It should display correctly if the person viewing it has placed all the files you have supplied in a folder on their machine
  2. It should use at least one of each of HTML img, h1 and div tags (and more if needed)
  3. It should use CSS to set the style of the text and other parts of the design as appropriate, in at least 3 ways.
  4. It should be responsive - it should change the layout if the screen size changes
  5. The user should be able to change the page in some way by interacting with a GUI element such as a button.

Write some text on the page explaining how the user can interact. You should implement this feature using JavaScript.

 

Assignment - Build a Responsive Web Page

Course Review
Peer-graded Assignmentdue Jan 1worth 30% of course
You passed! Congratulations.earned 16 / 16 points100%
Course assignmentspassed 6/6Final Grade 98%

Peer-grading

HTML & CSS: Describe something that you would particularly like feedback on regarding your use of HTML tag or CSS. You could say something like "Which part of my page do you think could be improved? Why?"

Help your peer. Either respond to the learner's request for feedback or complete this sentence HTML and/or CSS could be used for an even more interesting design by...

Peer Review
MilošWow great job
VitalyGreat work!
MarigiannaNice work, the window that pops up when the "Show Help" button is clicked covers the "Close Help" button half way.

Responsiveness & Design Change: Describe something you would particularly like feedback on regarding either responsiveness or your GUI.

Help your peer. Either respond to the learner's request for feedback or complete this sentence responsiveness or the GUI could be improved by...

Peer Review
MilošReally impressive job GREAT! Just few thoughts. I would use add eventListener with 'keypress' or 'keyup' events instead of accesskey property. Because this property work different on some browsers/devices check this page: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey.
And you should wrap all of your code in self executing anonymus function to avoid global namespace pollution.
VitalyVery good!
MarigiannaVery creative work, it looks like you have put a lot of effort in it. [see C2 button/browser problem] Other than that, well done.

Create a web page about yourself or a subject you are interested in, using JavaScript, CSS and HTML.

This is a demonstration Flash Card system which shows the user (learner) a series of facts in a learning sequence. The user controls when (s)he is ready to move from one 'card' to another using the software.

The system demonstrates how a "Flash Cards" approach may be a viable training medium.

Given the requirements of the assignment, this system-concept is far more complex than it needed to be. I also experiment with some other CSS facilities I've been wanting to explore. A concurrent conversation (discussed below) about training approaches, provided the motivation to attempt the task.

TL;DR? If you've read enough, scroll down to "Q2"...

Your submission should consist of 3 files: A HTML document, A CSS document, A JavaScript document. You can also upload additional files such as jQuery or Bootstrap if needed.


NB the CSS, JS, and graphic assets are organised into sub-directories

jQuery was not used: the interactive logic is pure JavaScript

Bootstrap was not used: but the inclusion of Font Awesome might have eased the hunt for Unicode symbols and icons!

Did the zip file contain the 3 required files? (HTML, JS, CSS)?
Note: Scroll down and flag this submission as incomplete if all three files weren't included.

Peer Review
Miloš3 ptsYes, all three
Vitaly3 ptsYes, all three
Marigianna3 ptsYes, all three
9 pts

It should display correctly if the person viewing it has placed all the files you have supplied in a folder on their machine

The Coursera-downloadable RWPA zip archive (also available upon request) will expand to an RWPA directory (folder) and (above-mentioned) sub-directories.

Open the flashcards.html file using a professional web-browser and the accompanying CSS and JS files should link automatically.

NB some advanced CSS and JS facilities used in this machine are not available in the Opera Mini browser.

If other files were needed for correct display (e.g., jQuery or Bootstrap), were they included in the zip file?

Peer Review
Miloš1 ptNo additional files were needed
Vitaly1 ptNo additional files were needed
Marigianna0 ptsNo, something needed was missing. I had some issues clicking the buttons for some reason, and I had to reload the page for them to work. Maybe there was something wrong with my browser or a file was missing
2 pts

It should use at least one of each of HTML img, h1 and div tags (and more if needed)

img tags: Images are embedded within most of the Flash Cards. The first one is visible immediately. The others will be presented as the user processes through the Flash Cards.

h1 tags: The page heading h1 within the header is always present on any sized display - although the heading is expanded with a sub-heading/jingle on larger displays.

div tags: These have been applied within the Help panel and the footer (only visible on larger displays). TL;DR? Lines 27 and 159 of the .html file (resp).

NB div tags are less necessary in HTML5 where 'best practice' prefers that semantic elements be utilised.

HTML Tags: Did the submission use at least one img tag?

Peer Review:
Miloš1 ptYes
Vitaly1 ptYes
Marigianna1 ptYes
3 pts

HTML Tags: Did the submission use at least one h1 tag?

Peer Review:
Miloš1 ptYes
Vitaly1 ptYes
Marigianna1 ptYes
3 pts

HTML Tags: Did the submission use at least one div tag?

Peer Review:
Miloš1 ptYes
Vitaly1 ptYes
Marigianna1 ptYes
3 pts

It should use CSS to set the style of the text and other parts of the design as appropriate, in at least 3 ways.

CSS is used to control the appearance (both presence/absence and formatting) of the Flash Cards, the Help Panel, and the screen layout.

Please refer to the provided .css file.

CSS Use: Did the submission use CSS to set at least 3 parts of the design?

Peer Review
Miloš3 ptsYes, set 3 or more
Vitaly3 ptsYes, set 3 or more
Marigianna3 ptsYes, set 3 or more
9 pts

It should be responsive - it should change the layout if the screen size changes

The CSS is divided into three sections.

NB if you are fortunate-enough to use an Apple iPad device, you may see both the larger two formats by viewing the demonstration first in portrait mode, and then re-orienting to landscape.

The rest of us can use the emulation features of the development facilities built-in to most professional desktop web-browsers (I utilise Chromium and Firefox Developer's Edition).

Change the size of the page to the largest and smallest possible size. When the page size is changed, does the design change responsively?

Peer Review
Miloš2 ptsYes, for all sizes
Vitaly2 ptsYes, for all sizes
Marigianna2 ptsYes, for all sizes
6 pts

The user should be able to change the page in some way by interacting with a GUI element such as a button.

At the bottom of the screen is a nav-bar consisting of one or more buttons. These buttons react to mouse-clicks and keyboard mavens may use short-cut keys.

Opening screen

The 'next' and 'previous' buttons enable the user to process through the deck (pack) of Flash Cards. The Help button (and its companion Close button) results in a new panel of assistance information being over-laid 'above' the courseware text.

These buttons are interactive in that they are only displayed when their functionality is available/logical.

Did the page contain instructions on how to use the GUI to change design?

Peer Review
Miloš2 ptsYes, I could easily understand them
Vitaly2 ptsYes, I could easily understand them
Marigianna2 ptsYes, I could easily understand them
8 pts

Write some text on the page explaining how the user can interact. You should implement this feature using JavaScript.

This system demonstrates how it might be used in a training/learning environment.

When the trainee views the first screen, (s)he is presented with an instruction panel explaining how the system works.

Opening screen

To proceed, click on the "Next Card" button: the current card fades away and is replaced by the next.

Next screen

To review previously-viewed course content utlise the "Previous Card" control.

The "Help" control will cause system usage instructions to 'pop up', and may be used at any time.

Next screen

Once satisfied, the help enquiry may be concluded using the "Close Help" button. Whereupon the previously-visible courseware will become available once again.

At the end of the module (no more Flash Cars left to view - and no "Next Card" button to click) there is (currently) no facility to proceed to the next (because in this demonstration there is no 'next module'!), but in addition to the "Previous Card" button, using the browser's Refresh facility (F5 key) will re-start the demonstration.

In addition to using a mouse to click on the buttons (or similar), keyboard users may use short-cut keys (Alt+N, Alt+P, Alt+H, and Alt+C).

Did following the instructions lead to the expected change?

Peer Review
Miloš2 ptsYes, I could easily understand them
Vitaly2 ptsYes, I could easily understand them
Marigianna2 ptsYes, I could easily understand them
8 pts

Future improvements

The system lacks any concept of intimating progress (eg "breadcrumbs"):

The current control buttons lead to unnecessary code-complexity, and lack a flexibility that may be required when others come to use the system. It would make better sense to over-ride the F1-for-Help convention and put the "Close Help" button on the pop-up Help Panel.

Perhaps the processive controls should be under (course-) author control? (rather than forcibly the same for every card and every module).

The Flash Cards are purely for information presentation/consumption. As a fan of "active learning" I'd prefer that more learner interactivity could be built into a 'card'.

I'd like to explore with trainer-colleagues, the idea (mentioned earlier) of using native HTML as an authoring medium, particularly for/by IT specialist presenting technical material. (greater power and flexibility than a standard LMS offers)

Technical thoughts, eg better use of CSS variables, considering the use of FlexBox or Grid layouts (yet to become widely available in browsers).

Miloš' suggestion of using JavaScript 'keypress' or 'keyup' events instead of the HTML accesskey property would solve the issue of accesskeys 'working' even when the button-control is not available!

The linking of the two CSS Transitions could be better managed by linking the transition-duration on the Flash Card fade-out, with transition-delay on the fade-in; instead of the more complex JavaScript transitionEnd event and callback.

The various fixed-position panels should be better described to take advantage of all available space, whilst guaranteeing that one panel does not intrude into another