サイトの文字サイズを変更するボタンの作り方
間違ったWebアクセシビリティとして名高い、文字サイズ変更ボタンの作り方です。ぜひ滅ぼしましょう。
完成形
HTML
文字サイズ
<button class="size-button" data-font="12">小</button>
<button class="size-button active" data-font="16">中</button>
<button class="size-button" data-font="20">大</button>
「小」を含める理由は全く分かりませんね。
CSS(Sass)
.size-button {
background-color: #fff;
border: 1px solid #999;
cursor: pointer;
display: inline-block;
font-size: 1rem;
line-height: 1;
padding: 11px;
text-align: center;
width: 40px;
&:hover,
&.active {
background-color: #AE2823;
color: #fff;
}
}
全ページの全要素のフォントサイズはremでサイズ指定しておきましょう。
JavaScript
$(function(){
function initFontSize() {
var size = (sessionStorage.getItem('fontSize'))? sessionStorage.getItem('fontSize') : '16';
changeFontSize(size);
}
function changeFontSize(size){
$('html').css('font-size', size + 'px');
$('[data-font!=' + size + ']').removeClass('active');
$('[data-font=' + size + ']').addClass('active');
sessionStorage.setItem('fontSize', size);
}
function addListeners() {
$('[data-font]').on('click', function(){
changeFontSize($(this).data('font'));
});
}
function init() {
initFontSize();
addListeners();
}
init();
});
Webサイト制作という現場において、jQueryは現役であり続けます。
htmlのフォントサイズを変更することで、remで指定されている箇所を一気にサイズ変更させます。
ページ遷移をしても維持するよう、sessionStorageやlocalStorage、Cookieで値を保持させましょう。
まとめ
2度とこれの作成に時間を割かなくていいよう、記事にしました。ぜひ滅ぼしましょう(2回目