スライダーを切り替えたり現在何枚目なのか把握しやすいように配置されているのを見かけることが多いバレットナビゲーションを、CSSを使って見た目を整えたり動きを付けてみたサンプルです。
スライダー以外にも例えば長いシングルページでウィンドウの右側によく配置されているようなナビゲーションなどにも利用できますし、全てCSSなのでサイズやカラーなども容易に変更できます。
いずれもシンプルで凝ったものではありませんが、むしろシンプルなのでほとんどのテイストでそのまま使えたり、これをベースにオリジナルな見栄えにしていくことができると思います。

共通のHTML・CSS

以下で紹介しているサンプルでは共通のHTML・CSSとして下記がそれぞれ指定されており、CSSの場合はこの共通スタイルに各サンプルで紹介しているCSSを追記・変更などをすることで見栄えの確認ができると思います。
一部場合によっては必要ない記述もあるので、それらは環境にあわせて削除するなどしてください。

また、バレットが選択された状態を示すために.is-activeというクラスがアクティブ時に付加されるという想定で紹介しており、クラスが付加される動きについてはJavaScriptを使用しています。

<ul>
  <li><button class="is-active">1</button></li>
  <li><button>2</button></li>
  <li><button>3</button></li>
  <li><button>4</button></li>
  <li><button>5</button></li>
</ul>
ul {
  list-style: none;
  text-align: center;
}
ul li {
  display: inline-block;
  margin: 0 1em;
}
ul li button {
  display: inline-block;
  width: 18px;
  height: 18px;
  background: none;
  border: none;
  border-radius: 0;
  font-size: 0;
  text-indent: 100%;
  white-space: nowrap;
  overflow: hidden;
  outline: none;
  box-sizing: border-box;
  transition: .2s ease-in-out;
}

Circle #1

シンプルなサークルアイコンを表現したもので、ホバー時とアクティブ時にサークル内が塗りつぶされます。
実装には共通CSSに下記を追記します。

ul li button {
  border: 2px solid #fff;
  border-radius: 50%;
}
ul li button:hover,
ul li button.is-active {
  background: #fff;
}

Circle #2

同じくシンプルなサークルアイコンを表現したもので先ほどのものとほとんど変わりませんが、サークル内を塗りつぶす際にrgba()を使用し、ホバー時では透過されているカラーで塗りつぶすというものになります。
実装には共通CSSに下記を追記します。

ul li button {
  border: 2px solid #fff;
  border-radius: 50%;
}
ul li button:hover {
  background: rgba(255, 255, 255, .5);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
}

Circle #3

box-shadowを使って、アクテイブ時に塗りつぶしなしのサークルアイコンに変化するものです。
実装には共通CSSに下記を追記します。

ul li button {
  background: rgba(255, 255, 255, .5);
  border-radius: 50%;
}
ul li button:hover {
  background: rgba(255, 255, 255, 1);
}
ul li button.is-active {
  background: transparent;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 1);
}

Circle #4

同じくbox-shadowを使ったもので、こちらはアクティブ時に外側から内側に塗りつぶされていくような見た目にできます。
実装には共通CSSに下記を追記します。

ul li button {
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 1) inset;
  border-radius: 50%;
}
ul li button:hover {
  background: rgba(255, 255, 255, .5);
}
ul li button.is-active {
  background: transparent;
  box-shadow: 0 0 0 18px rgba(255, 255, 255, 1) inset;
}

Circle #5

アクティブ状態時にカラー変更に加えてサイズを少し大きくしたものです。
実装には共通CSSに下記を追記します。

ul li button {
  background: rgba(255, 255, 255, .5);
  border-radius: 50%;
}
ul li button:hover {
  background: rgba(255, 255, 255, 1);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
  transform: scale(1.4);
}

Scale #2

アクティブ時の見た目は先ほどのものと同じですが、こちらはホバー時にもサイズが大きくなる動きを取り入れてみたもので、animationを使うことでホバー時にアイコンが一瞬大きくなって、また元のサイズに戻るという動きを実装しています。
実装には共通CSSに下記を追記します。

ul li button {
  background: rgba(255, 255, 255, .5);
  border-radius: 50%;
}
ul li button:hover:not(.is-active) {
  animation: hover .3s ease-in-out;
}
@keyframes hover {
  0%   { transform: scale(1);}
  50%  { transform: scale(1.25);}
  100% { transform: scale(1);}
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
  transform: scale(1.4);
}

Flip #1

transform: rotateYを使って、ホバー事やアクティブ時にアイコンがフリップするようにしたものです。
実装には共通CSSに下記を追記します。

ul li button {
  background: rgba(255, 255, 255, .4);
  border-radius: 50%;
  transition: .4s ease-in-out;
}
ul li button:hover:not(.is-active) {
  background: rgba(255, 255, 255, .6);
  transform: rotateY(180deg);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
}

Flip #2

同じくフリップの動きですが、こちらはrotateYrotateXの2つを組み合わせることで斜めに回転するような動きにしたものです。
実装には共通CSSに下記を追記します。

ul li button {
  background: rgba(255, 255, 255, .4);
  border-radius: 50%;
  transition: .4s ease-in-out;
}
ul li button:hover {
  background: rgba(255, 255, 255, .6);
  transform: rotateY(180deg) rotateX(-180deg);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
}
ul li button.is-active:hover {
  transform: rotate(0);
}

Square

スクエアタイプのアイコンで、背景はホバー時に透過、アクティブ時には透過させないようにしたものです。
実装には共通CSSに下記を追記します。

ul li button {
  border: 2px solid #fff;
}
ul li button:hover {
  background: rgba(255, 255, 255, .5);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
}

Diamond

スクエアにtransform: rotateを追記するだけで、このようなダイヤタイプができます。
実装には共通CSSに下記を追記します。

ul li button {
  border: 2px solid #fff;
  transform: rotate(45deg);
}
ul li button:hover {
  background: rgba(255, 255, 255, .5);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
}

Square × Diamond #1

スクエアとダイヤを組み合わせたもので、通常時はスクエアですがホバー時とアクティブ時に回転してダイヤの見栄えになります。
実装には共通CSSに下記を追記します。

ul li button {
  border: 2px solid #fff;
}
ul li button:hover {
  transform: rotate(45deg);
}
ul li button.is-active {
  transform: rotate(45deg);
  background: rgba(255, 255, 255, 1);
}

Square × Diamond #2

基本的な部分は先ほどのものと同じで、transform: rotateの値を大きくすることでくるくるっと回転させることができます。
実装には共通CSSに下記を追記します。

ul li button {
  border: 2px solid #fff;
}
ul li button:hover {
  background: rgba(255, 255, 255, .5);
  transform: rotate(135deg);
}
ul li button.is-active {
  transform: rotate(135deg);
  background: rgba(255, 255, 255, 1);
}

Rectangle (Border)

長方形(少し太めのボーダー)の見た目を表現したもので、アクティブ時に少し太くなる(高くなる)ようにしてみたものです。
実際にこのようなタイプのものを取り入れているサイトではもっとそれぞれの間隔を詰めて、一本のラインのようにして配置しているのをよく見かけますね。
実装には共通CSSの一部を変更しつつ、下記を追記します。

ul li {
  margin: 0 .75em;
}
ul li button {
  width: 36px;
  height: 6px;
  background: rgba(255, 255, 255, .5);
}
ul li button:hover {
  background: rgba(255, 255, 255, 1);
}
ul li button.is-active {
  background: rgba(255, 255, 255, 1);
  transform: scaleY(1.8);
}

Triangle

borderを使って下向きの三角アイコンを作り、それをアクティブ時にカラーを変更しつつtransform: rotateXでくるっと上向きにするというものです。
実装には共通CSSの一部を変更しつつ、下記を追記します。

ul li button {
  width: 0;
  height: 0;
  border-top: 16px solid rgba(255, 255, 255, .5);
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
}
ul li button:hover {
  border-top-color: rgba(255, 255, 255, 1);
}
ul li button.is-active {
  border-top-color: rgba(255, 255, 255, 1);
  transform: rotateX(-180deg);
}

上で紹介した動きをまとめて確認したい場合は以下でご覧になれます。