"Mozilla splash page" assessment


#176

Damn. I sent the previous email too quickly by mistake (holding down ctrl+enter instead of shift + enter).

I was wondering if you could take a quick look at something else I’ve been having trouble with.

https://massproduced.github.io/buttons/

I’m currently working through the forms->buttons section and can’t get the examples to render properly in Mozilla. I thought it was just my running a simple local http.server module off of a python3 that’s the problem, but the problem persists on gh-pages as well.

The problems are the following (the associated code is at the very bottom of the page):

the “checked” Boolean attribute didn’t render for the checkboxes on local, it does on gh-pages (great)

the

    doesn’t render at all on either checkboxes or radio buttons (no bullet points - see slide attached), like it does in your examples on MDN

the checked radio buttons render checked like they should, but you can check multiple buttons (see slide attached) which from what I gather should not be possible (also after checking radio button you can’t uncheck it; ie it doesn’t uncheck itself when another button is checked)

Any input appreciated.

Kind Regards,

Martin


#177

Never mind (see slide) :).

I have no idea why my brain failed to register and assimilate this information the first 3 times I’ve read it. Next time I’ll give it 48 hours and comprehensive re-reading of the article before I post anything as trivial here again.

List bullet-points still missing, though.


(Chris Mills) #178

I’ve decided to just remove it from the exercise. I don’t think it should be explained at this stage, because I’ve not taught any CSS at this point in the course.


(Chris Mills) #179

I am glad you got it sorted! The list bullets are missing because they have list-style: none set on them in the CSS.


(Marios Daskalas) #180

Can someone explain to me the usage of this code?
https://pastebin.com/1KEE05BN


(Marios Daskalas) #181

I am kind of confused. We are going to examine this piece of code:

<img> srcset=“mozilla-dinosaur-head_120.png 120w,
mozilla-dinosaur-head_400.png 400w”
sizes="(max-width: 480px) 120px,
400px"
src=“mozilla-dinosaur-head_400.png” alt=“A funny description”>


If the width of the viewport is 350px then the image width is going to be exact 120px, otherwise it should be 400px. But in my case something else is happening. When I resize the browser window, I am inspecting the image dimensions with the developer tools and the image shrinks as the browse window shrunks, ignoring the rules that define the exact dimensions of the image when a certain criteria is met. I have used Google Chrome and Mozilla Firefox. The code editor that I used is Brackets and I am using Live Preview.


(Chris Mills) #182

This is a bit of a confusing situation, so let me try to explain.

The srcset attribute contains information on what images are available for use in this &lt;img&gt; element - it defines their filenames, and what their real width is (with the “w” unit).

The sizes attribute contains hints on what size slot the image will be expected to fill at a certain media condition. So here we are saying “when the viewport width is 480px or less, the expected slot size is 120px wide, otherwise the slot is more like 400px wide.” there is no exact sizing specified here - these are hints designed to allow the browser to make a sensible choice of what image file to load, based on the videwport size (or other media conditions, if specified).

So the effect this has is that if the viewport of your browser is 480px or less, the 120px wide image is loaded, but if not, the 400px image is used.

You can test it out; load this example: https://mdn.github.io/learning-area/html/multimedia-and-embedding/mdn-splash-page-finished/

Now open the browser dev tools, go to the Network tab, reload if necessary, then look at which dinosaur head image is downloaded. It should be the 400px one.

Now reduce your viewport width to really narrow, then do the same. You should now see that the 120px image is being loaded.


(Chris Mills) #183

The image still reduces in size when the viewport width is reduced, as shown on the screen , because it has max-width: 100% set on it in the CSS. This means that the image will always adjust its size to stay inside its parent element, as its width changes.


(Marios Daskalas) #184

This really happens. When I open the browser developer tools in Google Chrome and then I go to the Network Tab, I can see that the images that they are loading are the correct ones based on the width of the viewport. However, my worries is when I resize the viewport to let’s say 300px then the box model of the image element is not even close to 120w. Is that because of the max-width:100% ? Before the webpage was rendered I thought that the dimensions of the image would either be exact 120px or 400px.


(Chris Mills) #185

Yes, this is because of the max-width: 100% CSS.

  1. The srcset provides a hint to the browser as to what image would be most suitable to load based on the browser’s viewport width, device resolution, etc. Those “w” values are not exact image dimensions - they are hints as to the likely size of the image slot at different viewports.
  2. The browser then makes a choice and loads the chosen image.
  3. Once loaded, the image will be shown at it’s “true” size, unless some CSS comes into play and changes what the display size ends up being. In this case, max-width is making the images’ width be constrained to 100% of the width of their parent elements, so they are not shown at their true size.

Does that help?


(Csarami) #186

I did the panda image like this:

<picture>
                <source media="(max-width: 599px)" srcset="originals/red-panda-CloseShut.jpg">
                <source media="(min-width: 600px)" srcset="originals/red-panda.jpg">
                <img src="originals/red-panda.jpg" alt="panda">
            </picture>

But I see this one works ( copied from solution)

 <picture>
          <source media="(max-width: 600px)" srcset="red-panda-portrait-small.jpg">
          <img src="red-panda-landscape.jpg" alt="a red panda">
        </picture>

It seems the latter one is more efficient. Isn’t it?


(Chris Mills) #187

Yeah — in this case you don’t really need two <source> elements, as the image referenced in the <img src=""> is loaded by default if the media query test does not pass.

The smaller image is only loaded if the viewport width is 600px or less.


(Clemente del Río) #188

Hello!
just finished the Mosilla splash page Assessment, had fun doing it!
Please comment.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Mozilla splash page</title>
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
    <style>
      /* header and body setup */

      html {
        font-family: 'Open Sans', sans-serif;
        background: url(pattern.png);
      }

      body {
        width: 100%;
        max-width: 1200px;
        margin: 0 auto;
        background-color: white;
        position: relative;
      }

      /* Header styling */

      header {
        height: 150px;
      }

      header img {
        width: 100px;
        position: absolute;
        right: 32.5px;
        top: 32.5px;
      }

      h1 {
        font-size: 50px;
        line-height: 140px;
        margin: 0 0 0 32.5px;
      }

      /* main section and video styling */

      main {
        background: #ccc;
      }

      article {
        padding: 20px;
      }

      h2 {
        margin-top: 0;
      }

      p {
        line-height: 2;
      }

      iframe {
        float: left;
        margin: 0 20px 20px 0;
        max-width: 100%;
      }

      /* further info links */

      .further-info {
        clear: left;
        padding: 40px 0;
        background: #c13832;
        box-shadow: inset 0 3px 2px rgba(0,0,0,0.5),
                    inset 0 -3px 2px rgba(0,0,0,0.5);
      }

      .further-info a {
        width: 25%;
        display: block;
        float: left;
      }

      .further-info img {
        max-width: 100%;
      }

      .clearfix {
        clear: both;
      }

      /* Red panda image */

      .red-panda img {
        display: block;
        max-width: 100%;
      }
    </style>
  </head>
  <body>
    <header>
      <h1>Mozilla</h1>
      <!-- insert <img> element, link to the small
          version of the Firefox logo -->
        <img src="firefox-logo-120w.png" alt="firefox logo: a fox and the world">
    </header>

    <main>
      <article>
        <!-- insert iframe from youtube -->
        <iframe width="400" height="225" src="https://www.youtube.com/embed/ojcNcvb1olg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
        <h2>Rocking the free web</h2>

        <p>Mozilla are a global community of technologists, thinkers, and builders, working together to keep the Internet alive and accessible, so people worldwide can be informed contributors and creators of the Web. We believe this act of human collaboration across an open platform is essential to individual growth and our collective future.</p>

        <p>Click on the images below to find more information about the cool stuff Mozilla does. <a href="https://www.flickr.com/photos/mathiasappel/21675551065/">Red panda picture</a> by Mathias Appel.</p>
      </article>

      <div class="further-info">
        <!-- insert images with srcsets and sizes -->
        <a href="https://www.mozilla.org/en-US/firefox/new/">
          <img srcset="firefox-logo-120w.png 120w, firefox-logo-400w.png 400w" sizes="(max-width:480px) 120px" src="firefox-logo-400w" alt="Firefox logo, a fox and the world">
        </a>
        <a href="https://www.mozilla.org/">
          <img srcset="mozilla-dinosaur-120w.png 120w, mozilla-dinosaur-400w.png 400w" sizes="(max-width:480px) 120px" src="mozilla-dinosaur-400w.png" alt="a red dinosaur, the mosilla one">
        </a>
        <a href="https://addons.mozilla.org/">
          <img srcset="firefox-addons-120w.jpg 120w, firefox-addons-400w.jpg 400w" sizes="(max-width:480px) 120px" src="firefox-addons-400w.jpg" alt="puzzle pieces forming the firefox logo">
        </a>
        <a href="https://developer.mozilla.org/en-US/">
          <img src="mdn.svg" alt="a geometric waving flag with a t-rex head vain in the center">
        </a>
        <div class="clearfix"></div>
      </div>

      <div class="red-panda">
        <!-- insert picture element -->
        <picture>
          <source media="(max-width:599px)" srcset="red-panda-croped-600w.jpg">
          <source media="(min-width:600px)" srcset="red-panda-1200w.jpg">
          <img src="red-panda-1200w.jpg" alt="a red panda chilling like money ain`t a thang">
        </picture>
      </div>

    </main>
  </body>
</html>

(Chris Mills) #189

Hello again!

I have checked your work, and it looks pretty good. The main feedback I had was that the images don’t seem to load, but this is not a big deal — I’m assuming you just have your assets named differently to our example?

I’d also like to invite you to check your code against the marking guide, and our finished example:


(Sharon) #190

Hi,

I have completed the Mozilla splash page problem.

Please review my solution.

Thank you,
Sharon


(Chris Mills) #191

Hi there @sharon97 — I have looked at this, and it seems to do everything it is supposed to do. Well done on some great work! As I’ve said before, if you want to compare it to our version and review your code in more detail, look at the links I included in the previous replies.


(Felixle96) #192

Hi, I finished the “Mozilla Splash page” just fine, but I noticed I was having an error in my code. I noticed that even if you have the src attribute set for an img tag, if it fails to find the srcset files (as in a misspelling) it will ignore the src attribute and go straight to the alt attribute and display that. I’m thinking it might have something to do with the sizes attribute meta queries interfering with that. As in it satisfies one of the queries, tries to load the corresponding one and ignores whether or not that file can be found.


(Chris Mills) #193

Hrm, that is quite interesting. I’d not seen this behavior. Have you got a test case published anywhere?


(Felixle96) #194

Hi, thanks for responding!

I couldn’t post the zip file of my project here directly so I put the link to a google drive to it below.

https://drive.google.com/file/d/1MNTbWEz0n6uHcWQSCvTVbJ0wmHd26DTu/view?usp=sharing

If you check my html file, you will notice the last image of the row (the dinosaur) is not displaying (this is at line 143-148) if you take out both the srcset and sizes attributes, it will display the src attribute file. However if you leave them in and have the srcset files misspelled (“mozilla-dinosaur_head_120w.png” instead of “mozilla-dinosaur-head_120w.png” note the second undescore should be a hyphen) it won’t display the src attribute file. Now of course if they are spelled correctly there is no problem, but I read that you should still set the src attribute just in case the srcset files don’t work.


(Chris Mills) #195

Yeah, I’ve tried it and you are right. This is strange behavior — you’d totally expect it to show the src image as a fallback if it can’t find the srcset images, not the alt text (unless it can’t find the src image either).

It seems to do the same on Chrome and Firefox.

I’d be interested to see what our platform engineers have go to say about this. Can you file a bug about this on our https://bugzilla.mozilla.org/ site?