Skip to content
  • Unlock Pro
  • Log in with GitHub
Profile
OverviewSolutions
17
Comments
20

tan

@tan911Cebu, Philippines640 points

I’m a mysterious individual who has yet to fill out my bio. One thing’s for certain: I love writing front-end code!

I’m currently learning...

Everything

Latest solutions

  • Newsletter sign-up form with success message with react-tailwindCSS

    #react#tailwind-css#vite

    tan•640
    Submitted about 2 years ago

    1 comment
  • Age-calculator-app with react-redux/styled-components/vite

    #react#redux#redux-toolkit#vite#styled-components

    tan•640
    Submitted over 2 years ago

    0 comments
  • REST countries with react/tailwindcss

    #axios#react#react-router#tailwind-css

    tan•640
    Submitted over 2 years ago

    1 comment
  • FAQ accordion with html/sass/scss/javascript

    #accessibility#bem#sass/scss

    tan•640
    Submitted over 2 years ago

    0 comments
  • Tip calculator app with html-sass/scss-javascript

    #accessibility#bem#sass/scss

    tan•640
    Submitted over 2 years ago

    0 comments
  • Sunnyside agency landing page with css-grid-layout

    #accessibility#sass/scss

    tan•640
    Submitted over 2 years ago

    0 comments
View more solutions

Latest comments

  • yossef magdy•20
    @YossefMagdy
    Submitted over 2 years ago

    FAQ accordion card

    1
    tan•640
    @tan911
    Posted over 2 years ago

    Hello @YossefMagdy,

    Here's my recommendation for improving this app if you have some free time,

    • Keyboard support. User should be able to use keyboard to navigate this app.
    • The image should be positioned so that it is both horizontally and vertically centered.
    • Your app should be responsive.

    Despite this, excellent job on the task!

    Hope this will help improve, Thanks!

  • MANOELA Urias•240
    @Uriasmanu
    Submitted over 2 years ago

    Calculadora de Gorjeta / Tip Calculator

    1
    tan•640
    @tan911
    Posted over 2 years ago

    Hello @Uriasmanu,

    css:

    • Instead of giving your body element precise width and height definitions, you may utilize the display flex attribute to automatically center the content.
    • Employ specify width in the main class for your cards.
    • You place the button and card using absolute position everywhere. For positioning the content and the button, I advise using flex or grid.

    More info:

    flex and grid

    Hope this will help, Thanks!

    Marked as helpful
  • Alexander Montoya•210
    @AlexanderMontoya
    Submitted over 2 years ago

    Testimonial Grid Section

    #sass/scss
    1
    tan•640
    @tan911
    Posted over 2 years ago

    Hello @AlexanderMontoya,

    It placed I think bacause you defined your quotation image in an absolute position. The z-index and opacity will not solve the problem unless if you defined your text also. To address your error, you can use the quotation image as background image of your 'testimonial one' class and placed it wherever you want using background-position.

    more info:

    css bacground properties

    Hope this will help, Thanks!

    Marked as helpful
  • P
    Usman Butt•60
    @ucod3
    Submitted over 2 years ago

    Interactive Rating Component using Tailwind CSS, Vite & JavaScript

    #tailwind-css#vite
    1
    tan•640
    @tan911
    Posted over 2 years ago

    👋Hello, @ucod3, and congratulations on completing this challenge🎉. Here's my suggestion and to answer some of your questions as well.

    1. In tailwindcss you can refactor your classes by using layers in your main css file, instead of styling your buttons individually with the same classes, just put your one style in 'style.css'.
    2. I think the ratings styles of clicked button will confused your user of selecting it and also the functionality there is broken.

    more info:

    adding custom style in tailwind

    Hope this will help, Thanks!

  • Erel Ropeta•385
    @ereljapco
    Submitted over 2 years ago

    Responsive Notifications Page Using React, CSS Fflexbox, CSS Grid

    #react#bem
    1
    tan•640
    @tan911
    Posted over 2 years ago

    It's okay to import 'notificationList' directly to the component's who needs it. Also you can pass 'notificationList' as props. However when passing it as props I think it's read not a notificationList, the code looks like this,

    import Header from './components/header/Header';
    import Notifications from './components/notifications/Notifications';
    import notificationsList from './data/notificationsList';
    
    export default function App() {
      const [read, setRead] = useState(notificationsList);
    
      return (
        <main className="main">
          <section className="notifications">
            <div className="c-notifications">
              <Header setRead={setRead}  notificationsList={read} />
              <Notifications />
            </div>
          </section>
        </main>
      );
    }
    

    You use 'useState' with initial value of 'notificationsList'. You don't need to pass 'notificationList' itself instead use the 'read' variable to pass data into your children component.

    Marked as helpful
  • Decimo-10•120
    @Decimo-10
    Submitted over 2 years ago

    Responsive tip calculator app

    1
    tan•640
    @tan911
    Posted over 2 years ago

    Hello @Decimo-10, Here's my suggestion that might improve your applications also to answer some of your questions as well.

    • I think you should, and they should be inside the fieldset if you want to make "Select Tip %" a label. Also you can use input="radio" for every percentage and hide it via visually-hidden class or sr-only class instead of normal button element and don't forget to add label to every input radio button.
    • You can use javascript to handle the validations for the input type text. If you do this, then you have to check if the input value can be converted by a number or not. If it is, do the calculations otherwise just give an error message there. When providing an error message you can add aria-describeby to your input element with the same value to the id of your error message or to your span element. This will benificial to your audience who use screen readers.
    <div class="label-wrapper">
            <label for="bill-input" class="input__label">Bill</label>
            <span id="your-error" class="input__error-message">Can't be zero</span>
          </div>
     <input type="text" id="bill-input"  aria-describedby="your-error" class="input__field" placeholder="0" inputmode="numeric" pattern="[1-9][0-9]*\.?[0-9]*">
    

    More info about fieldset

    Marked as helpful
View more comments

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

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