Skip to content
  • Unlock Pro
  • Log in with GitHub
Solution
Submitted over 3 years ago

"clipboard landing page" + sass + flexbox + mobile-first + responsive

sass/scss
Anosha Ahmed•9,300
@anoshaahmed
A solution to the Clipboard landing page challenge
View live sitePreview (opens in new tab)View codeCode (opens in new tab)

Solution retrospective


First time using SCSS! I love it! It's so convenient!

One thing I wish I had done differently is not nesting. I don't know why I was nesting at first... maybe because I was using SCSS for the first time?and it felt cool? But when it came to do media queries, it was so inconvenient to deal with specification etc. I'm gonna make sure not to do that again if I don't need to.

One problem I kept having, with this solution, was that every time I would save, and my live server would reload, the font-size of random paragraphs would appear larger than before I saved last time. And it was weird because I didn't even touch the font-size of those paragraphs. So, I would stop the live-server and open it again, and the font-size would be back to normal. Then I'd save again, and the font-size would appear larger. Ugh, it was such a hassle.

But yay I'm happy with the result!

Code
Select a file

Please log in to post a comment

Log in with GitHub

Community feedback

  • Vanza Setia•27,715
    @vanzasetia
    Posted over 3 years ago

    👋 Hi Anosha Ahmed!

    🎉 Congratulations on finishing this challenge! 🙌 Your solution is responsive and pixel-perfect based on the design comparison! 👍Good job!

    I have some feedback in this solution:

    • Create a custom :focus-visible styling to any interactive elements (button, links, input, textarea). This will make the users can navigate this website using keyboard (Tab) easily.
    • In this case, there's no header, so you can put everything inside the main element. Also, the header should not contain hero section, which in this case the section with the class header__section. Also, all the elements should be inside the section tag, since it is the part of that section.
    <section class="header__section">
        <div class="header__logo">
          <img src="images/logo.svg" alt="#">
        </div>
          <h1 class="heading--1">A history of everything you copy</h1>
          <p class="desc">
            Clipboard allows you to track and organize everything you
            copy. Instantly access your clipboard on all your devices.
          </p>
         <div class="header__btns btns">
            <a href="#" class="btn--cyan">Download for iOS</a>
            <a href="#" class="btn--blue">Download for Mac</a>
        </div
    </section>
    
    • I would recommend every section is wrapped by section tag for better semantic markup. Each section should contain a heading tag (h2).
    <section>
    <h2 class="heading--2">Keep track of your snippets</h2>
        <p class="desc desc--snippets">
          Clipboard instantly stores any item you copy in the cloud,
          meaning you can access your snippets immediately on all your
          devices. Our Mac and iOS apps will help you organize everything.
        </p>
        ... some code
          <div>
             <h3 class="heading--3">Complete History</h3>
             <p class="desc">Retrieve any snippets from the first moment you started using the app.</p>
            </div>
          </div>
        </div>
    </section>
    
    • You can make it(the below code & another part of your code) as an unordered list and wrap each item with li. Also, there's no reason to make the text Quick Search, iCloud Sync, and Complete History as a heading. The below content is too small. You can think of the heading tag as a title on a document file.
      <div class="snippets-container__text">
            <div>
              <h3 class="heading--3">Quick Search</h3>
              <p class="desc">Easily search your snippets by content, category, web address, application, and more.</p>
            </div>
    
            <div>
              <h3 class="heading--3">iCloud Sync</h3>
              <p class="desc">Instantly saves and syncs snippets across all your devices.</p>
            </div>
    
            <div>
              <h3 class="heading--3">Complete History</h3>
              <p class="desc">Retrieve any snippets from the first moment you started using the app.</p>
            </div>
          </div>
    
    • The logo image is an important image since it identifies the users what website they are currently at. so you can use the company name which is Clipboard as the alternative text.
    • The alternative text for any image should not contain the word, image, logo, etc, since the screen reader will pronounce it as an image and the user will know that it is a logo (the same as we see the image).
    • Don't change the html (root) font size. It can serious issue. Read what an accessibility expert has said about it. Since you are using Sass, you can create a rem() function that can automatically convert the px to rem for you.
    @function rem($value) {
        @return ($value / 16) * 1rem
    }
    
    • How it works:
    /* In Sass file (.scss) */
    body {
      font-size: rem(16);
    }
    
    /* In CSS file */
    body {
      font-size: 1rem;
    }
    

    That's it! Hopefully, this is helpful!

    Marked as helpful
  • Account deletedPosted over 3 years ago

    I really appreciate your interest in every detail while you designing and coding, You gonna be a great one in the near future ☺☺.

    Marked as helpful
  • Rohit singh•40
    @rohitkuderiya
    Posted over 3 years ago

    Hey mam, I am a big fan of your coding skills and give you a lot of love from India 🇮🇳 . Actually I am a fresher and Firstly , I just see your code and try to do it but I have a question. From where do you get the svg files , images and other things for the code. I will be really very happy if you tell me the way of getting them or if , it's a secret then no problem. Thank you @anoshaahmed

    Marked as helpful
  • xZAYEDx•250
    @xZAYEDx
    Posted over 3 years ago

    Really nice neat work! I hope to be as good as you someday :')

    Marked as helpful
  • Mays•170
    @MaysMajeed
    Posted over 3 years ago

    Good Job on that @Anosha

    Marked as helpful
  • Nikola Maricic•200
    @dzoni19
    Posted over 3 years ago

    Good job! Excellent response for any device!

    Marked as helpful
  • Cameron Chandler•850
    @webstormcam
    Posted over 3 years ago

    This comment was deleted over 3 years ago

    Marked as helpful
  • Elroy Toscano•630
    @elroytoscano
    Posted over 3 years ago

    Hi Anosha, you've done a great job at the design. Pixel Perfect. The animations are really smooth 👍

    There's just one issue, the buttons are designed with a (link) as the element, which is semantically incorrect as when you click on any of the buttons, notice the url changes to https://anoshaahmed.github.io/fem12-clipboard-landing-page/#. The "#" symbol at the end represents the href of the link element which directs you to another page instead of a button. Here's an article to help you out with the differentiation between these elements: Difference between link and button.

    Hope this helps.

    Marked as helpful
  • Raj Kiran Chaudhary•100
    @rk-codeflow
    Posted over 3 years ago

    Look so clean. But if you are not going to use nesting then won't it feel like using vanilla CSS again?? Nesting makes us write less code which I love.

    Marked as helpful
  • darryncodes•6,350
    @darryncodes
    Posted over 3 years ago

    Hey Anosha,

    You've smashed this - really well done!

    Welcome to SCSS. Regarding your point about nesting and media queries - this might be worth trying: see my example on line 10 and 97

    Hope it helps!

    Marked as helpful
  • Akash Siddamshetty•190
    @akashsiddamshetty
    Posted over 3 years ago

    Great work ✨ @anoshaahmed

    Marked as helpful
  • PhoenixDev22•16,830
    @PhoenixDev22
    Posted over 3 years ago

    Your solution is absolutely perfect. I can’t wait to try to solve it , Keep up Anosha Ahmed!

    Marked as helpful
  • Dani Feelshot•370
    @Feelshot
    Posted over 3 years ago

    Nice work! 🙌

    Marked as helpful
  • Account deletedPosted over 3 years ago

    How do you always fit the solution and the design comparisson?

    Nice!

    Marked as helpful
  • Victor•730
    @therealmaduanusi
    Posted over 3 years ago

    Honestly I have to give it to you, your pixels are just so good 🙌 I couldn't even get the exact background color when am building😔. Best of luck on your journey 😊👍

    Marked as helpful
  • Neeraj Chauhan•40
    @codewithneeraj
    Posted over 3 years ago

    No doubt @anoshaahmed you have done really great job.

    Marked as helpful
  • Aakash Verma•9,500
    @skyv26
    Posted over 3 years ago

    Really Nice Work !

    Marked as helpful

Join our Discord community

Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!

Join our Discord
Frontend Mentor logo

Stay up to datewith new challenges, featured solutions, selected articles, and our latest news

Frontend Mentor

  • Unlock Pro
  • Contact us
  • FAQs
  • Become a partner

Explore

  • Learning paths
  • Challenges
  • Solutions
  • Articles

Community

  • Discord
  • Guidelines

For companies

  • Hire developers
  • Train developers
© Frontend Mentor 2019 - 2025
  • Terms
  • Cookie Policy
  • Privacy Policy
  • License

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

How does the accessibility report work?

When a solution is submitted, we use axe-core to run an automated audit of your code.

This picks out common accessibility issues like not using semantic HTML and not having proper heading hierarchies, among others.

This automated audit is fairly surface level, so we encourage to you review the project and code in more detail with accessibility best practices in mind.

How does the CSS report work?

When a solution is submitted, we use stylelint to run an automated check on the CSS code.

We've added some of our own linting rules based on recommended best practices. These rules are prefixed with frontend-mentor/ which you'll see at the top of each issue in the report.

The report will audit 1st-party linked stylesheets, and styles within <style> tags.

How does the HTML validation report work?

When a solution is submitted, we use html-validate to run an automated check on the HTML code.

The report picks out common HTML issues such as not using headings within section elements and incorrect nesting of elements, among others.

Note that the report can pick up “invalid” attributes, which some frameworks automatically add to the HTML. These attributes are crucial for how the frameworks function, although they’re technically not valid HTML. As such, some projects can show up with many HTML validation errors, which are benign and are a necessary part of the framework.

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub

Oops! 😬

You need to be logged in before you can do that.

Log in with GitHub