Skip to content
  • Unlock Pro
  • Log in with GitHub
Profile
OverviewSolutions
9
Comments
3

Ting-Huei Chen

@hejkeikeiCalgary, Canada180 points

Hi! I'm Ting!

I’m currently learning...

- HTML - CSS - JavaScript - Bootstrap - jQuery - D3.js - PHP - MySQL - Python

Latest solutions

  • Fylo Dark Theme Landing Page


    Ting-Huei Chen•180
    Submitted almost 3 years ago

    0 comments
  • Advice Generator App using Fetch API


    Ting-Huei Chen•180
    Submitted almost 3 years ago

    0 comments
  • Expenses chart component using D3.js

    #d3

    Ting-Huei Chen•180
    Submitted almost 3 years ago

    1 comment
  • Interactive pricing component using flexbox and plain JavaScript


    Ting-Huei Chen•180
    Submitted almost 3 years ago

    0 comments
  • Intro component with sign up form using plain JavaScript


    Ting-Huei Chen•180
    Submitted almost 3 years ago

    0 comments
  • Pricing component with toggle solution


    Ting-Huei Chen•180
    Submitted about 3 years ago

    1 comment
View more solutions

Latest comments

  • Jhuly B•20
    @JhulyB
    Submitted almost 3 years ago

    Responsive interactive pricing component using Vite, ReactJs and Scss

    #react#sass/scss#vite#typescript
    1
    Ting-Huei Chen•180
    @hejkeikei
    Posted almost 3 years ago

    Hi Jhuly, Nice work! From viewport size 378px to 420px , the footer text wrap to 2 lines, and "pageviews" text is clashed together with your h1. Maybe you can change your media query to adapt the mobile size? I also notice that price didn't change as it should after the yearly billing toggle is on.

    Happy coding🍻

    Marked as helpful
  • Raymond Visser•80
    @Halaszraymond
    Submitted almost 3 years ago

    Stats-preview-card-component

    2
    Ting-Huei Chen•180
    @hejkeikei
    Posted almost 3 years ago

    Hi Raymond, For the coloring, you can create a overlay on top of the image and use mix-blend-mode!

    .overlay {
      width: 100%;
      height: 100%;
      background-color: var(--violet);
      opacity: 0.8;
      mix-blend-mode: multiply;
    }
    

    Hope it helps :) For further information you can visit my work

  • Stephane Jean•360
    @distephano30
    Submitted almost 3 years ago

    Intro oomponent with sign up - Javascript

    1
    Ting-Huei Chen•180
    @hejkeikei
    Posted almost 3 years ago

    Hi Stephane, For preventing refresh the page, you can use event.preventDefault(); in your event listener. MDN

    Also, you can use getAttribute() so that you don't have to write things manually. In that case, you can use loop so you won't have to repeat your code:) For example:

    <input type="text" name="fname" id="fname" placeholder="First Name" required/>
    

    then you can do this:

    const fields = document.querySelectorAll("input");
    for(let i=0; i< fields.length-1; i++){
            if(fields[i].value==""){
                fields[i].nextElementSibling.innerHTML=fields[i].getAttribute("placeholder")+" cannot be empty";
                //output =>  First Name cannot be empty
            }else{
               fields[i].nextElementSibling.innerHTML="";
            }
        }
    

    For detail information please see here

    Marked as helpful
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

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

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