This is a tiny JavaScript package that creates custom cursor for you with minimal JavaScript and allows you to write hover effects for the cursor(s) in CSS.
If you're working with a package manager then you can install and run this package with the following code.
yarn add -D custom-cursor
npm install -D custom-cursor
import Cursor from 'custom-cursor'
new Cursor({})
For this package to work with a CDN you have to call the Cursor
class on the
window
object.
<script
defer
src="https://unpkg.com/custom-cursor@latest/dist/cursor.min.js"
></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
new window['Cursor']({})
})
</script>
๐ You can still use the count
and targets
options when using the CDN.
There are two options that you can pass to new Cursor({})
, but they are both
optional.
new Cursor({
count: 5,
targets: ['a', '.title', '#header'],
})
This allows you to control how many cursor are created, perfect for follow along cursor effects.
If we use the example of 5
then it will result in the following HTML.
<div data-cursor="0" style="..."></div>
<div data-cursor="1" style="..."></div>
<div data-cursor="2" style="..."></div>
<div data-cursor="3" style="..."></div>
<div data-cursor="4" style="..."></div>
We can use the [data-cursor]
attributes to write CSS.
[data-cursor] {
width: 20px;
height: 20px;
}
[data-cursor='0'] {
background: #00f;
}
[data-cursor='1'] {
background: #eee;
}
This allows you to control which HTML elements on the page you want the cursor to have a hover effect for.
If we use the example of ['a', '.title', '#header']
, it will do the following.
- Find every
<a>
,<... class="title">
and<... id="header">
element on the page - Listen for
mouseover
andmouseleave
events on those elements - When
mouseover
is triggered appendcursor-hover--<target>
to the body element
<target>
will be the identifier give in the targets array, therefore if the
.title
was triggered it would add cursor-hover--title
.
Taking the previous example, we could use the following CSS to create hover effects for the cursor(s).
.cursor-hover--a [data-cursor] {
}
.cursor-hover--title [data-cursor] {
}
.cursor-hover--header [data-cursor] {
}
.cursor-hover--header [data-cursor='0'] {
}
.cursor-hover--header [data-cursor='1'] {
}