3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【備忘録:HTML/CSS】data属性はCSS設計で大事だよね?

Last updated at Posted at 2020-04-22

data属性を活用していきたい

スクリーンショット 2020-04-22 21.42.40.png 例えば、上記のようなボタンがあったとして、LP制作とかだと、 **「そのボタンに合ったクラスを作成する」**という感じになるかと思います。
hoge.html
<p><a href="#" class="m-btn-small">幅決まっているボタン</a></p>
<p><a href="#" class="m-btn">幅100%ボタン</a></p>
hoge.scss
.m-btn{
  position: relative;
  display: inline-block;
  color: #fff;
  background: pink;
  font-size: 1.4rem;
  font-weight: bold;
  padding: 6px 20px;
  width: 100%;
  border-radius: 5px;
  max-width: 100%;
  text-align: center;
  text-decoration: none;
  &-small{
    position: relative;
    display: inline-block;
    color: #fff;
    background: pink;
    font-size: 1.4rem;
    font-weight: bold;
    padding: 6px 20px;
    width: 100%;
    border-radius: 5px;
    max-width: 400px;//ここだけ値を変更
    text-align: center;
    text-decoration: none;
  }
}

この場合LPであればいいのですが、サイト運用やサイトリニューアルなどで、**「ボタンの色を青に変更したい」**とかなった場合を考えると、

hoge.scss
.m-btn{
  position: relative;
  display: inline-block;
  color: #fff;
  background: pink;
  font-size: 1.4rem;
  font-weight: bold;
  padding: 6px 20px;
  width: 100%;
  border-radius: 5px;
  max-width: 100%;
  text-align: center;
  text-decoration: none;
  &-small{
    position: relative;
    display: inline-block;
    color: #fff;
    background: pink;
    font-size: 1.4rem;
    font-weight: bold;
    padding: 6px 20px;
    width: 100%;
    border-radius: 5px;
    max-width: 400px;//ここだけ値を変更
    text-align: center;
    text-decoration: none;
    &-blue{
    position: relative;
    display: inline-block;
    color: #fff;
    background: blue;//ここの色を変えるために他のプロパティも記述しないといけない
    font-size: 1.4rem;
    font-weight: bold;
    padding: 6px 20px;
    width: 100%;
    border-radius: 5px;
    max-width: 400px;
    text-align: center;
    text-decoration: none;
    }
  }
}

上記のようになってしまい、
・ cssが冗長になってしまう
・ 冗長になった分保守が大変
・ 他の色や幅を追加したいときにさらに冗長になる
などデメリットが多くあります。

data属性を使った場合

hoge02.html
<p><a href="#" class="m-btn" data-btn-width="small">幅決まっているボタン</a></p>
<p><a href="#" class="m-btn">幅100%ボタン</a></p>
hoge02.scss
.m-btn{
  position: relative;
  display: inline-block;
  color: #fff;
  background: pink;
  font-size: 1.4rem;
  font-weight: bold;
  padding: 6px 20px;
  width: 100%;
  border-radius: 5px;
  max-width: 100%;
  text-align: center;
  text-decoration: none;
  &[data-btn-width="small"]{
    max-width: 400px;
  }
}

このように.m-btnにdata属性を持たせ、それに対してcssを設定することで、
・ css記述が短縮できる
・ 保守がしやすい
・ 他の色や幅を追加しても分かりやすい
というメリットがあります。

先程の、**「ボタンの色を青に変更したい」**の場合でも、

hoge02.scss
.m-btn{
  position: relative;
  display: inline-block;
  color: #fff;
  background: pink;
  font-size: 1.4rem;
  font-weight: bold;
  padding: 6px 20px;
  width: 100%;
  border-radius: 5px;
  max-width: 100%;
  text-align: center;
  text-decoration: none;
  &[data-btn-width="small"]{
    max-width: 400px;
  }
  &[data-btn-bg="blue"]{
    background: blue;
  }

と記述が短くなり分かりやすいです。

まとめ

LPではなく、サイト運用、サイトリニューアルであれば、制作とその後の保守も考えdata属性を活用していくことをおすすめします。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?