← Back to blogYouTube Video

Published April 20, 2025

Landing Page Design Tutorial - NextJS & Tailwind (Travel Agency) - Part 13 (final part)

Part 13 of 13 in Landing Page Design with Next.js & Tailwind

Can't play the video or having issues? Here's the direct link.

Summary

I finish the responsive build of my Next.js and Tailwind travel-agency landing page by fixing the social, CTA, and footer sections. I replace the CTA’s two images with a single absolutely positioned background image using mix-blend-multiply, lowered opacity, and z-index so the text stays readable and selectable, then re-add a container and padding to keep content off the edges. For the footer, I swap the grid for flexbox with basis-zero/grow columns, constrain the input’s width with min/max values and flex-wrap, add wrapping to the bottom row, underline the clickable link, and fix the icon attribute names. I land on a fully responsive site across all screen sizes, with design, responsiveness, and functionality complete.

Key takeaways

  • Use flex-wrap and min/max widths on image rows and inputs so components shrink gracefully instead of overflowing.
  • Replace stacked CTA images with a single absolutely positioned background image, then use mix-blend-multiply, opacity, and z-index to keep text readable and selectable.
  • Keep CTA content away from the edges with a container and padding, and rely on clamp-based headings for scaling.
  • Convert footer grids to flexbox with basis-zero and grow so columns adapt across breakpoints.
  • Give footer inputs full width plus min/max constraints and add flex-wrap to their parent to prevent layout breakage on small screens.
  • Fix icon attribute names in icons.tsx before shipping; broken SVG props show up as footer errors.
  • Underline footer links so their clickability is obvious.

Description

Source code: https://github.com/hassanaziz0012/travel-buddy

Transcript

Auto-generated transcript
All right, welcome back. We finished building the responsive version of this review section, the essential section and a couple sections about that. We also added this pause button over here to pause and play the animation here. Next we need to do something about this social section and the CTA and finally the section. So first let's do something about this social section. Let's just add flex wrap here and increase the gap and for the y-axis let's give it a gap of 20. Let's also give each of these divs a minimum width of 64. And now let's try shrinking these images and we get this. So this is a cool layout and this works as well. If I go even more smaller then we get this layout. And so just like that we are mostly responsive. But let's also give it a max width of 128. And give it justify center. So we don't have any giant images anymore. and this looks fine now. Let's keep shrinking, and there we go. So that all for the social section Now let do something about the CTA section and what I going to do is actually remove both of these images because I don actually like these anyway what I actually going to do is change this flexbox to Center the whole text that we have and up here let's give it the relative and isolate classes let's create an absolutely positioned element. I just give it zero in all directions and a background of black so we know if it's working. And yes it is working so let's remove that. And instead I'm going to add a different image here. Let's use the CTA2 image that I had earlier. And let's add the background cover and center properties. Now let's add the Mix Blend Multiply property and we get this effect. I also want to decrease the opacity so the text is actually readable and this is the effect we get now. But this isn't selectable yet so let me just move that behind the text using z-index and there we go. So this is obviously completely responsive because that's just a background image and it also looks better than what we had before. Let's also re-add the container element that we had here so we don't so your content doesn get too close to the edges And we can just safely remove both of these images here because we won need them And there we go Let's also add padding. And there we go. This whole section is responsive as well now. And our heading obviously scales down and up because we're using the clamp style over there. let's finally do something about the footer section. Let's remove this grid. I just use flux box instead of grid. I'll also increase the gap and let me just collapse all of these elements. We don't need call span here. Let me just give it basis zero and a grow of two. And here as well I'll give it basis zero and just grow. Same thing here as well. And there we go. With that this section is already much more responsive than before. Now we need to do something about this input field because currently it's not shrinking. So in here, right here in the input field, let's give it the class of full width and a minimum width of let's say 56 and a maximum width of 72. I'll also add flex wrap here. And now we get this layout Let keep shrinking Now we get this Now we need to do something about this element at the bottom of the footer and this is easy we just need to give it a FluxWrap as usual and there we go with all of this done our footer is also pretty much responsive I also had an underline on this link here just so it's more visible apparent that it is actually clickable and let's also fix these icon issues while we're at it head over to icons.tsx and fix these attribute names. Okay, with that done, let's head back to the footer. Let's see what we have now. And those errors are gone, and the entire site is responsive. So this is a full view of the entire website on my phone. And as you can see, every section is now fully responsive and looks great on all screen sizes. Let's go all the way to the bottom. It's the social section, the CTA, and now finally the footer section. and yeah the whole website is complete now we completed the design the responsiveness the functionality everything we're pretty much done with this website 100% now

Share this article

Hassan Aziz pointing up

Dude, you’re at the bottom of my landing page.

Just book a call already if you’re that interested.

You scrolled all the way here.