If you will have CSS files separate from Tailwind CSS, in your tailwind.config.js file, make sure to add “css” as a file option.
3. Update Configs, Set Up Git, and Test Locally
Add a source and scripts to your package.json by copying the source and scripts to it so that it looks like below. Remove the “main”: “index.js” if it exists. Note that we’re using the glob ./src/**/*/index.html to tell Parcel to build all HTML files in all directories.
Run npm run build to test building the pages.
Run npm start to start a local dev server.
Open a browser and go to the server URL provided to verify the test page loads. Make a change to the HTML and Tailwind CSS classes to verify that changes are processed and the page auto-refreshes in the browser.
4. Set Up Git and Push to GitHub
Run git init to initialize a new local git repo.
Create a .gitignore file with the following contents
node_modules
.parcel-cache
.env
dist
Create a repo in GitHub and push your local changes to it, e.g.
The predeploy script will run the npm run build command before deploying to ensure that the latest production-ready files are used. You need to clear the cache by deleting the .parcel-cache folder first. Also, since GitHub Pages publishes your website in a folder below the root domain, you need to add a “public-url” flag to tell Parcel to remove the slash (/) for relative dependencies like CSS and JS files to avoid getting a 404 error.
Run npm run predeploy
The deploy script will use the gh-pages package to deploy the contents of the dist directory to the gh-pages branch of your GitHub repository.
You can also get Tailwind components from Flowbite.
7. Add Pre-made UI Elements to Your HTML Pages
You can use Material Tailwind to copy and paste a bunch of elements like buttons, cards, accordions, lists, tables, etc. You’ll first need to add the Material Tailwind CSS and JS to your HTML pages first.
Ripple Effect
<!-- from node_modules -->
<script src="node_modules/@material-tailwind/html@latest/scripts/ripple.js"></script>
<!-- from cdn -->
<script src="https://unpkg.com/@material-tailwind/html@latest/scripts/ripple.js"></script>
Icons
<!-- Material Icons Link -->
<link
href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"
/>
<!-- Font Awesome Link -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css"
integrity="sha512-HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFAmJKVSTbpM/CuL7qxO8w=="
crossorigin="anonymous"
/>
I like anime.js. The documentation is clear and integration is simple. Just add a reference to the animeJS library on a cdn like CDNJS. Then, add write some JavaScript that uses animeJS in your main JavaScript file. If you want your animations to run when users scroll to a particular section of your site, you can add the Waypoints library from a CDN as well. In my example website, I first hide all elements by setting their opacity to 0. Then, I use Waypoints + AnimeJS to animate different elements. Here’s my code. I ended up loading jQuery, animeJS and Waypoints along with my main JS file at the bottom of the <body> element.
If you need to fasten a cable to a wall, you might be tempted to use a plastic cable clamp like one of these.
These are fine if you need to fasten just one cable to an interior wall. If you need to fasten a cable outside where it can be exposed to the sun or if you need to fasten multiple cables, then these plastic clamps won’t work. The sun will make them crack. What you can do instead is use zip ties with a zip tie base. There are even releasable zip ties.
You can find zip tie base mounts with 4.5mm openings and 9mm openings to accommodate zip ties of different widths.
Just screw the base mount to a wall.
Slide a zip tie through the opening.
and fasten some cables. Trim the zip tie if desired.
The cables will be tight, and the zip ties should last longer than those flimsy plastic cable clamps.
Things have definitely moved around and look different in the UI for GA4 (Google Analytics v4) vs UA (Universal Analytics). If you’re looking how to find pages that link to a particular page (previous page path), then you need to use Path Exploration.
Explore > Path Exploration
If you see an existing path exploration, click “Start Over”. Then, click “Ending Point” and choose an option. I prefer to choose “Page path and screen class” since page paths are easy and unique to get.
You can then choose one of the available paths or click the magnifying glass to type in a path, e.g. /resources/.
You will then see how often people click on a link on a page that takes them to your ending point (page) within a particular time range.
In the Variables section on the left, you can change the date range and other variables.
Are you currently employed? If so, why are you looking for another job?
What have been your key responsibilities as a web designer?
Describe your experience designing websites.
How familiar are you with HTML and CSS?
Do you have a portfolio of web designs?
Have you created any websites yourself, whether from scratch or from WYSIWYG tools like Webflow?
On a scale of 1-10, with 10 being the most proficient, rate your proficiency in Photoshop.
On a scale of 1-10, with 10 being the most proficient, rate your proficiency in Figma.
Do you have a portfolio of websites you’ve designed?
Do you use a grid system when you create designs?
What is a responsive web design?
Are you familiar with website breakpoints?
What are some bad examples of web design?
An outdated or inadequate web design.
Poor website navigation.
Convoluted or unclear user journeys.
Excessive use of images, icons, colors, and textures.
Poor quality images.
Mobile optimization is not available.
What’s the web design project you’re most proud of?
Describe your end-to-end process when working on a web design task.
Have you ever been involved in a complete website redesign project?
Describe what UX is and why it is important.
Describe your experience with website animation.
Do you have experience designing icons from scratch or editing existing icons or do you rely solely on a library of premade icons?
Do you have experience creating vector images from scratch, e.g. using Adobe Illustrator?
Have you created any animations using Adobe AfterEffects?
When designing for web, have you leveraged any website component libraries like Tailwind UI and Flowbite?
A common workflow we have is to take a Word document containing web page content and turn it into a web design in Figma. Is this something you can do?
Unlike print designs, websites are living documents, meaning that the content, whether text or images, often changes. As such web designs need to be versatile to accommodate such changes. For example, if a design calls for a box containing paragraph with 5 lines of text, e.g. a customer quote, that same design may not look good the customer was replaced with one spanning 10 lines of text. Do you have experience facing such web designs issues?
Have you worked with any website templates before?
Describe your level of passion for web design.
How do you keep abreast of web design trends, e.g. do you follow certain groups, attend conferences, read certain blogs, etc?
The marketing department at Qualys is very fast-paced with many last-minute requests. Do you have experience in and would you be comfortable in such an environment?
Do you have experience designing marketing websites and/or landing pages to drive signups?
Do you have experience designing websites with SEO in mind?
Qualys is a multi-national company with offices around the world. Sometimes, you may need to work outside of normal business hours. Is that okay for you or do you have a strict 9-5 schedule?
Where do you go for design inspiration?
Are there certain websites that you particularly like the design of, e.g. apple.com, yahoo.com, etc?
Please take 15 mins to make a list of design choices you like and dislike on www.qualys.com and explain why.
Describe a web design project you worked on that didn’t go as planned. What could you have done better?
Do you have experience with ADA compliance as it pertains to web design, e.g.
Color contrast
Accessibility of web forms
Etc
What tools do you use the most when designing?
Some designs are full-width. How do you handle such designs if a user’s monitor is very wide?
When designing for web, do you prefer to start with a mobile design (mobile-first design) or a desktop design?
Let’s say you’ve inherited a large website that uses some home-grown static site generator (SSG) and there’s no documentation. Your build and release infrastructure is fragile and also custom. Your git repo is massive with content from two decades, including lots of binary files. You want to migrate this massive piece of shit to a popular SSG like Eleventy and you want to use a reliable deployment system like GitHub + Netlify. Let’s say you can’t migrate all source files because there’s no easy way to do so between your custom SSG and Eleventy. If you’re willing to sacrifice most of your layouts and partials (includes) and just migrate everything all of the built static files to Eleventy with one partial for the header and one for the footer, then here’s one way to do it.
If your header and footer code blocks don’t use unique HTML tags like “header” and “footer”, then you may have a problem searching and replacing these code blocks. For example, in VS Code, if I try to select the header block beginning with <div class="header">, I can’t do so due to the nested div tag.
Using the regex
<div class="header"(.|\n)*?</div>
notice how the selection ends prematurely at the closing nested div tag. In this situation, you can update your source code to replace the open and closing div tags with the standard <header> tag. You can do the same with the footer by using the <footer> tag. After updating the source code, you can rebuild your static HTML pages and then use a regex like
to search and replace the header and footer code blocks with a code reference that includes those code blocks using whatever template engine you want to use.
If you want to use the Nunjucks template engine, for example, then you can replace those code blocks with something like
{% include "header.njk" %}
{% include "footer.njk" %}
4. Rename file extensions
Rename all HTML files so their extensions are .njk instead of .html.
5. Install an SSG
Create a new folder and install an SSG. In this case, I’ll install Eleventy.
Move your website files to your new Eleventy project. To follow Eleventy’s default conventions, your folder structure should look something like this.
Note that we put the header and include partials in the “_includes” folder under the “src” folder. Therefore, our header and footer include references should be updated to look like this
<html>
<head>
<title>Home Page</title>
</head>
<body>
{% include "src/_includes/header.njk" %}
<section>
<p>Hello, World!</p>
</section>
{% include "src/_includes/footer.njk" %}
</body>
</html>
6. Test
If you don’t create an Eleventy config file, then Eleventy will use all of its defaults and output built files to a “_site” folder and it will build the partials as well.
Since we don’t want to build the partials, let’s create an Eleventy config file.
7. Create an Eleventy config file
In the project root, create a file called .eleventy.js with the following content.
module.exports = function(eleventyConfig) {
eleventyConfig.addPassthroughCopy("src", {
//debug: true,
filter: [
"404.html",
"**/*.css",
"**/*.js",
"**/*.json",
"!**/*.11ty.js",
"!**/*.11tydata.js",
]
});
// Copy img folder
eleventyConfig.addPassthroughCopy("src/img");
eleventyConfig.setServerPassthroughCopyBehavior("copy");
return {
dir: {
input: "src",
// ⚠️ These values are both relative to your input directory.
includes: "_includes",
layouts: "_layouts",
}
}
};
If you rerun Eleventy, you’ll see that the partials are not built and copied to the output folder.
8. Create a layout (optional)
If you want your page content to be wrapped in other content, you can create a layout. This is called template inheritance. Both Nunjucks and 11ty have their own template inheritance mechanism. With Nunjucks, you inherit a parent template using
{% extends "parent.njk" %}.
With 11ty, you inherit a parent template using front matter, e.g.
Recently, I needed to clone a website and make a few minor changes to it. I wanted to publish a slightly modified copy of the website. Luckily, it’s easy to do that using wget. Here’s how I did it.
Since I downloaded a bunch of HTML files, if I wanted to replace a common element on multiple pages, the easiest way was to do a search and replace. Using VisualStudio Code, you can easily find all HTML blocks within a particular tag using a multi-line regex. Here are some example regexes:
<footer(.|\n)*?</footer>
<script(.|\n)*?</script>
<a class="popup(.|\n)*?</a>
Note: these regexes only work if the tags don’t have any nested tags with the same name.