<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Using the list-style-type Property</title>
        <style>
            ul {
                list-style-type: square;  /* Filled square markers */
            }

            ol {
                list-style-type: lower-roman; /* Lowercase Roman numerals */
            }
        </style>
    </head>
    <body>
        <ul>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
        </ul>
        <ol>
            <li>Item in ol</li>
            <li>Item in ol</li>
            <li>Item in ol</li>
            <li>Item in ol</li>
        </ol>
    </body>
</html>
Rendered Output
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Using the list-style-image Property</title>
        <style>
            ul {
                list-style-image: url("heart.png"); /* Image marker */
            }
        </style>
    </head>
    <body>
        <ul>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
        </ul>
    </body>
</html>
Rendered Output
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Using the ::marker Pseudo-element</title>
        <style>
            li::marker {
                content: "- "; /* Marker content */
                color: red; /* Marker color */
                font-size: 1em; /* Marker size */
            }
        </style>
    </head>
    <body>
        <ul>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
        </ul>
    </body>
</html>
Rendered Output

See more details on caniuse.com.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Using the ::before Pseudo-element</title>
        <style>
            li {
                list-style-type: none; /* Remove the default marker */
            }
            li::before {
                content: "→"; /* Custom marker content */
                margin-right: 8px; /* Spacing between marker and text */
                display: inline-block;
                animation: before-bounce 1s infinite alternate; /* Animation */
                
            }
            @keyframes before-bounce {
                0% {
                    transform: translateX(0);
                }
                100% {
                    transform: translateX(-10px);
                }
            }
        </style>
    </head>
    <body>
        <ul>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
            <li>Item in ul</li>
        </ul>
    </body>
</html>
Rendered Output