Learn how to setup and install @material-tailwind/html with Django.
First you need to create a new project using Django, for more details check the Django Official Documentation
django-admin startproject mysite
Create a new templates directory inside the project folder and update settings.py file:
TEMPLATES = [
{
...
'DIRS': [BASE_DIR / 'templates'],
...
},
]
Install the django-compressor by running the following command in your terminal:
python -m pip install django-compressor
And add the compressor to the installed apps inside the settings.py file:
INSTALLED_APPS = [
...
'compressor',
]
Configure the compressor inside the settings.py file:
COMPRESS_ROOT = BASE_DIR / 'static'
COMPRESS_ENABLED = True
STATICFILES_FINDERS = ('compressor.finders.CompressorFinder',)
Create two new folders and an input.css file inside the static/src/ folder:
static
└── src
└── input.css
Create a new views.py file inside mysite/
next to urls.py and add the following code:
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
Import the newly created view instance inside the urls.py file:
from .views import index
urlpatterns = [
path('admin/', admin.site.urls),
path('', index, name='index')
]
Create a new _base.html file inside the templates directory and the following code:
{% load compress %}
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Material Tailwind with Django</title>
{% compress css %}
<link rel="stylesheet" href="{% static 'src/output.css' %}">
{% endcompress %}
</head>
<body class="flex items-center justify-center h-screen">
{% block content %} {% endblock content %}
</body>
</html>
Create an index.html file inside the templates folder that will serve as the homepage. At the moment ignore the Tailwind CSS classes as we will install it shortly.
{% extends "_base.html" %}
{% block content %}
<h1 class="block font-sans text-5xl antialiased font-semibold leading-tight tracking-normal text-transparent bg-gradient-to-tr from-blue-600 to-blue-400 bg-clip-text">
Material Tailwind with Django!
</h1>
{% endblock content %}
Then you need to install Tailwind CSS since @material-tailwind/html works with Tailwind CSS classes and you need to have Tailwind CSS installed on your project.
npm install -D tailwindcss
npx tailwindcss init
Install @material-tailwind/html as a dependency using NPM by running the following command:
npm i @material-tailwind/html
Install @material-tailwind/html as a dependency using Yarn by running the following command:
yarn add @material-tailwind/html
Install @material-tailwind/html as a dependency using PNPM by running the following command:
pnpm i @material-tailwind/html
Once you install @material-tailwind/html you need to wrap your tailwind css configurations with the withMT()
function coming from @material-tailwind/html/utils.
import withMT from "@material-tailwind/html/utils/withMT";
/** @type {import('tailwindcss').Config} */
module.exports = withMT({
content: [
'./templates/**/*.html'
],
theme: {
extend: {},
},
plugins: [],
});
Import the Tailwind CSS directives inside the input.css file:
/* static/src/input.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
Run the following command to watch for changes and compile the Tailwind CSS code:
npx tailwindcss -i ./static/src/input.css -o ./static/src/output.css --watch
Finally, create a local server by running the following command:
python manage.py runserver
@material-tailwind/html comes with a ripple effect script file same as Material Design ripple effect and you can simply use it by adding it's CDN link to you project and add the data-ripple-light="true"
for light ripple effect and data-ripple-dark="true"
for dark ripple effect as an attribute for components
The ripple effect used in @material-tailwind/html is a separate package called material-ripple-effect
<!-- from node_modules -->
<script async src="node_modules/@material-tailwind/html/scripts/ripple.js"></script>
<!-- from cdn -->
<script defer async src="https://unpkg.com/@material-tailwind/html@latest/scripts/ripple.js"></script>
Now you're good to go and use @material-tailwind/html in your project.
<button
type="button"
data-ripple-light="true"
class="align-middle select-none font-sans font-bold text-center uppercase transition-all disabled:opacity-50 disabled:shadow-none disabled:pointer-events-none text-xs py-3 px-6 rounded-lg bg-gray-900 text-white shadow-md shadow-gray-900/10 hover:shadow-lg hover:shadow-gray-900/20 focus:opacity-[0.85] focus:shadow-none active:opacity-[0.85] active:shadow-none"
>
Button
</button>